Администрирование аппаратных многопользовательских ключей HASP в инфраструктуре «1С:Предприятие» часто сопровождается трудностями, когда в одной локальной сети или на разных серверах развернуто несколько ключей защиты. Типичная ситуация: у вас установлены три ключа (например, два по 50 лицензий и один на 100 лицензий), но пользователи периодически получают ошибку «Не найдена свободная лицензия», хотя по факту занята лишь малая часть из общего пула. При этом один из ключей (обычно самый емкий) упорно игнорируется системой, если не прописать его адрес в качестве единственного.
В этой статье мы подробно разберем, почему возникает такое поведение, проанализируем внутренние механизмы платформы 1С и службы HASP License Manager, а также по шагам настроим систему так, чтобы задействовать все доступные лицензии.
Прежде чем приступать к редактированию конфигурационных файлов, нам необходимо четко определить, каким именно образом клиентские сеансы получают лицензии. Существует два сценария распределения лицензий:
rphost сам находит ключи в сети, забирает с них лицензии и авторизует сессии пользователей.Чтобы точно определить ваш вариант, запустите «1С:Предприятие» на любом рабочем месте, откройте меню «Справка» -> «О программе» и найдите раздел «Лицензия»:
"Информационная база: ... Сервер предприятия ...", то раздачей занимается сервер 1С. Переходите к Сценарию 1."Сетевой HASP4 ..." с указанием IP-адреса или имени компьютера, то лицензия получена напрямую клиентом. Переходите к Сценарию 2.---
Рассмотрим ситуацию, когда в свойствах информационных баз на сервере 1С параметр «Разрешить выдачу лицензий сервером 1С:Предприятия» установлен в значение «Да».
Здесь мы сталкиваемся с жестким архитектурным ограничением самой платформы «1С:Предприятие»:
ORGL8.rphost) умеет работать по сети только с одним ключом каждой серии.ORGL8 (например, на 50 пользователей), монополизирует его и начинает выдавать лицензии сессиям.Вариант А. Отключение раздачи лицензий сервером.
Если ваши пользователи работают в локальной сети (не через веб-сервер и не через тонкий клиент вне VPN), лучшим решением будет переложить задачу поиска лицензий на сами клиентские машины. Для этого:
nethasp.ini. Теперь вам необходимо настроить систему по Сценарию 2.Вариант Б. Аппаратный или программный апгрейд.
Если у вас используются веб-клиенты или тонкие клиенты через HTTP/HTTPS, сервер 1С обязан раздавать лицензии сам. В этом случае обойти ограничение «один ключ серии ORGL8 на сервер» физически невозможно. Вам придется либо заменить несколько мелких ключей на один большой (например, обменять два по 50 и один на 100 на один ключ емкостью 200 пользователей), либо полностью перейти на программные лицензии (пин-коды), у которых таких ограничений нет.
---
Если раздача сервером отключена, а клиенты все равно «не видят» свободные места на третьем ключе, мы имеем дело с классическим конфликтом сетевых служб HASP License Manager (HASP LM) и неправильной настройкой широковещания (Broadcast).
Разберем по шагам, как исправить эту ситуацию.
По умолчанию служба HASP License Manager при запуске на сервере не имеет уникального идентификатора в сети. Если в одной подсети запущены три службы HASP LM с настройками по умолчанию, они начинают перехватывать запросы друг друга. Клиент видит только тот сервер, который ответил на бродкаст-запрос самым первым, а остальные игнорирует.
Чтобы исправить это, нам нужно присвоить каждому менеджеру лицензий уникальное имя.
nhsrv.ini. Обычно он находится в папке установки программы (например, C:\Program Files (x86)\Aladdin\HASP LM\) либо в системных папках Windows\System32 (или SysWOW64), если менеджер установлен как служба.[NHS_SERVER] и измените параметр NHS_SERVERNAMES, задав уникальное имя для каждого сервера (длина имени не должна превышать 7 символов, используйте только латиницу и цифры).Например, для Сервера 1 (с ключом на 50 мест):
[NHS_SERVER]
NHS_SERVERNAMES = LM01
Для Сервера 2 (с ключом на 50 мест):
[NHS_SERVER]
NHS_SERVERNAMES = LM02
Для Сервера 3 (с ключом на 100 мест):
[NHS_SERVER]
NHS_SERVERNAMES = LM03
После сохранения изменений обязательно перезапустите службу HASP Loader (или перезагрузите сервера), чтобы новые имена вступили в силу.
Теперь необходимо заставить клиентские компьютеры опрашивать серверы лицензирования адресно, по конкретным IP-адресам и именам, минуя хаотичный широковещательный поиск. Для этого отредактируем файл nethasp.ini на рабочих местах пользователей.
Этот файл обычно расположен по пути: C:\Program Files\1cv8\conf\ (или в папке конкретной версии платформы).
Рассмотрим правильную структуру секции [NH_TCPIP] для нашего случая:
[NH_COMMON]
NH_TCPIP = Enabled
[NH_TCPIP]
; Указываем список IP-адресов всех трех серверов через запятую
NH_SERVER_ADDR = 192.168.1.10, 192.168.1.11, 192.168.1.12
; Строго в том же порядке прописываем уникальные имена менеджеров лицензий из nhsrv.ini
NH_SERVER_NAME = LM01, LM02, LM03
; Полностью отключаем широковещательный поиск (Broadcast), чтобы клиент не цеплялся за первый попавшийся ключ
NH_USE_BROADCAST = Disabled
; Настраиваем таймауты, чтобы клиент успевал опрашивать удаленные ключи при высокой нагрузке
NH_SESSION = 5 ; Время ожидания установления сессии (в секундах)
NH_SEND_RCV = 4 ; Время ожидания приема/передачи пакета
Важное примечание: Порядок перечисления серверов в параметре NH_SERVER_ADDR определяет приоритет опроса. Если вы хотите, чтобы сначала расходовались лицензии с самого большого ключа (на 100 пользователей), поставьте его IP-адрес и соответствующее имя первым в списке.
Мы проанализировали особенности работы защиты HASP в среде «1С:Предприятие». Для устранения проблем с доступностью лицензий выполните два ключевых действия:
NHS_SERVERNAMES на серверах и прописав их совместно с NH_USE_BROADCAST = Disabled в клиентских файлах nethasp.ini.