Почему сервер 1С не видит лицензии с нескольких сетевых HASP-ключей и как это исправить

Системный администратор 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

В практике системного администрирования 1С часто возникает ситуация, когда в организации имеется несколько аппаратных USB-ключей HASP (например, на 20, 10 и 5 пользователей). При попытке развернуть их в сетевой среде, особенно с использованием виртуализации или контейнеризации LXC на Linux, администраторы сталкиваются с неприятным эффектом: сервер 1С видит лицензии только с одного ключа, игнорируя остальные. Рассмотрим подробнее, почему это происходит и какие существуют пути решения данной проблемы.

Анализ проблемы: логика поиска лицензий сервером

Проанализируем типовую ситуацию. Имеется сервер приложений 1С:Предприятие 8.3 и несколько менеджеров лицензий (HASP LM), разнесенных по разным IP-адресам. В конфигурационном файле nethasp.ini прописаны адреса всех менеджеров лицензий:


[NH_COMMON]
NH_TCPIP = Enabled

[NH_TCPIP]
NH_SERVER_ADDR = 192.168.0.101, 192.168.0.102, 192.168.0.103
NH_USE_BROADCAST = Disabled

При такой настройке ожидается, что сервер будет опрашивать ключи последовательно и суммировать их номиналы. Однако на практике, если на первом сервере (101) ключ на 20 лицензий, то 21-й пользователь получить лицензию не сможет, даже если на втором сервере (102) есть свободный ключ. Это происходит потому, что сервер 1С (процессы rphost) работает с сетевыми ключами иначе, чем тонкий клиент.

Выясним причину: согласно архитектуре защиты HASP HL, сервер 1С при поиске сетевой лицензии определенной серии (например, ORGL8) устанавливает сессию с первым ответившим менеджером лицензий. Как только ключ найден, сервер «закрепляется» за ним и перестает искать другие ключи той же серии в сети. Таким образом, перечисление нескольких IP-адресов в NH_SERVER_ADDR служит для отказоустойчивости (если первый сервер упадет), а не для суммирования лицензий.

Ограничение серий ключей

Важно понимать понятие «серии» ключа. Большинство пользовательских ключей (на 5, 10, 20, 50, 100 рабочих мест) относятся к одной серии — ORGL8. Существуют также серии ORG8A (на 300 мест) и ORG8B (на 500 мест). Сервер 1С может суммировать лицензии только в том случае, если ключи относятся к разным сериям. Если у вас три ключа серии ORGL8, по сети сервер увидит только один из них.

Решение 1: Комбинирование локального и сетевого ключа

Разберем единственный штатный способ заставить сервер 1С суммировать две лицензии одной серии без замены самих ключей. Для этого необходимо один ключ установить локально в физический сервер (или пробросить USB-устройство напрямую в виртуальную машину/контейнер), а второй ключ оставить доступным по сети через менеджер лицензий.

Алгоритм работы сервера в этом случае будет следующим:

  1. Сначала сервер ищет локальный ключ, вставленный непосредственно в машину.
  2. Затем сервер ищет программные лицензии.
  3. Если лицензий не хватает, сервер обращается к nethasp.ini и ищет один сетевой ключ через HASP LM.

В данной схеме вы сможете использовать ресурсы двух ключей серии ORGL8. Однако для трех и более ключей этот метод не сработает, так как сетевой ключ по-прежнему будет выбран только один.

Решение 2: Использование Тонкого клиента для поиска лицензий

Рассмотрим ситуацию с раздачей лицензий. В 1С есть два способа получения лицензии:

  1. Раздача сервером 1С (лицензию ищет и выдает процесс rphost). Это единственный вариант для Web-клиента.
  2. Получение лицензии клиентом (лицензию ищет само приложение 1cv8 на компьютере пользователя).

Если ваши пользователи работают через Тонкий клиент, вы можете отключить раздачу лицензий сервером (в свойствах информационной базы «Разрешить выдачу лицензий сервером 1С:Предприятие» = «Нет»). В этом случае каждый экземпляр Тонкого клиента будет самостоятельно искать ключ. В отличие от сервера, клиентское приложение при исчерпании лицензий на одном сетевом ключе способно продолжить поиск и занять лицензию на другом менеджере лицензий, если они правильно настроены в локальном nethasp.ini пользователя.

Решение 3: Особенности работы в Linux-контейнерах (LXC)

Посмотрим на специфику работы в среде Linux с драйверами HASPD от Etersoft. При использовании контейнеров важно убедиться, что порты не блокируются внутренними правилами. Для корректной работы необходимо:

Если вы используете Web-клиент, помните: он никогда не ищет ключ сам. Лицензию для него всегда берет сервер. Если сервер запущен в LXC, он подчиняется общему правилу: «Один сетевой ключ одной серии». Для полноценной работы большого количества пользователей в веб-интерфейсе при наличии нескольких мелких ключей ORGL8, единственным стабильным решением будет замена аппаратных ключей на один ключ большего номинала или переход на программные лицензии, которые суммируются сервером без ограничений.

Резюме и рекомендации

Проанализировав ситуацию, можно сделать вывод: архитектура защиты 1С ограничивает использование нескольких сетевых USB-ключей одной серии. Чтобы максимально эффективно использовать имеющееся оборудование, придерживайтесь следующих правил: Во-первых, старайтесь устанавливать самый емкий ключ локально в сервер приложений. Во-вторых, если используется Web-клиент, помните о невозможности суммирования более одного сетевого ключа. В-третьих, при настройке nethasp.ini всегда явно указывайте NH_TCPIP = Enabled и NH_SERVER_ADDR, чтобы исключить лишние задержки при широковещательном опросе сети, который в сегментированных сетях или контейнерах часто не работает.

← На главную