При эксплуатации нескольких аппаратных сетевых ключей защиты HASP часто возникает ситуация: монитор лицензий (AKS Monitor) показывает, что ключи свободны, однако при попытке запустить информационную базу платформа 1С:Предприятия 8.3 выдает ошибку «Не обнаружено свободной лицензии». При этом в техническом отчете указывается, что свободные лицензии на сетевом ключе закончились, а большая часть из них занята через сервер.
Разберем природу этого поведения, выясним, почему проблема часто проявляется после перехода с версии 8.2 на 8.3, и по шагам настроим инфраструктуру для корректного использования всех доступных лицензий.
Для понимания корня проблемы проанализируем внутренние механизмы платформы 1С:Предприятия по поиску аппаратных лицензий:
ORGL8. Ключи серии ORG8A соответствуют номиналу 300 пользователей, а ORG8B — 500. По сетевому протоколу сервер 1С:Предприятия может подключиться только к одному ключу каждой серии. Если в локальной сети установлено три ключа (например, на 10, 20 и 50 мест), сервер находит первый ответивший ключ серии ORGL8 (в нашем случае на 50 мест), исчерпывает его и сразу переходит к опросу старших серий ORG8A и ORG8B. Ключи на 10 и 20 мест сервером полностью игнорируются.Разрешить выдачу лицензий сервером 1С:Предприятия. Когда лицензии раздает сервер, лицензия тратится на каждое отдельное соединение (сеанс), включая фоновые задания и веб-сервисы. Если пользователь запускает две разные базы или два окна одной базы, расходуются две лицензии. В клиентском режиме (когда лицензию запрашивает рабочее место) лицензия привязывается к компьютеру: на одном ПК можно открыть неограниченное число сеансов, потратив всего 1 лицензию. В результате при 86 активных сессиях ключ на 50 лицензий моментально оказывается полностью занят сервером.Чтобы лицензии расходовались экономно (по одной на рабочее место, а не на каждое подключение), отключим серверную раздачу в свойствах базы:
После отключения раздачи крайне важно завершить все текущие сеансы пользователей на сервере. Пока сеансы активны, они продолжают удерживать ранее захваченные сервером лицензии. Только после повторного входа клиенты начнут запрашивать лицензии самостоятельно.
Так как в одной сети функционируют три ключа серии ORGL8 (на 10, 20 и 50 мест), широковещательные запросы (Broadcast) будут приводить к коллизиям: клиенты будут находить только один менеджер лицензий и выдавать сообщение об отсутствии свободных мест, игнорируя остальные два ключа.
Для устранения конфликта назначим каждому менеджеру лицензий уникальное имя. Перейдем на компьютеры, где физически установлены ключи HASP, найдем файл конфигурации службы nhsrv.ini (расположенный в каталоге установки HASP License Manager) и зададим уникальные имена в секции [NHS_SERVER]:
На первом сервере (ключ на 50 мест):
[NHS_SERVER]
NHS_SERVERNAMES = LM50
На втором сервере (ключ на 20 мест):
[NHS_SERVER]
NHS_SERVERNAMES = LM20
На третьем сервере (ключ на 10 мест):
[NHS_SERVER]
NHS_SERVERNAMES = LM10
После изменения параметров перезапустим службу HASP Loader на каждом из трех компьютеров.
Теперь настроим клиентские приложения, чтобы они опрашивали все три менеджера лицензий последовательно по их IP-адресам и сетевым именам. Для этого отредактируем файл nethasp.ini, расположенный на клиентских машинах в каталоге C:\Program Files (x86)\1cv8\conf\ (или в каталоге соответствующей версии платформы):
[NH_COMMON]
NH_TCPIP = Enabled
[NH_TCPIP]
NH_USE_BROADCAST = Disabled
NH_SERVER_ADDR = 192.168.1.10, 192.168.1.11, 192.168.1.12
NH_SERVER_NAME = LM50, LM20, LM10
NH_SESSION = 5
NH_SEND_METHOD = UDP
Разберем ключевые параметры этой настройки:
NH_USE_BROADCAST = Disabled отключает широковещательную рассылку по подсети, исключая ложные ответы первого попавшегося переполненного ключа.NH_SERVER_ADDR и NH_SERVER_NAME содержат точные IP-адреса и заданные на предыдущем шаге имена менеджеров лицензий через запятую. Клиент 1С последовательно обратится к каждому менеджеру, пока не получит свободную лицензию.Распространим подготовленный файл nethasp.ini на все рабочие станции пользователей (например, через групповые политики Active Directory или общий скрипт развертывания).
Если специфика работы требует выдачи лицензий именно через сервер 1С:Предприятия (например, при подключении тонких клиентов через веб-сервер без прямого доступа к локальной сети), отслеживать свободные лицензии через монитор AKS невозможно — для утилиты мониторинга все клиентские подключения сливаются в один сеанс с IP-адреса сервера 1С.
Для оперативного контроля выполним следующие действия:
Сервер, ORGL8 Сет 50... или Клиент, ORGL8....Если инфраструктура требует обязательной раздачи пула лицензий именно силами сервера 1С, рассмотрим альтернативные варианты решения проблемы несовместимости нескольких ключей серии ORGL8:
ORGL8, установленный локально в USB-порт сервера (без запущенной службы hasplms), и один сетевой ключ той же серии по сети через менеджер лицензий. Установив ключ на 50 мест локально в сервер, а ключ на 20 мест оставив сетевым, мы получим доступный серверу суммарный пул в 70 лицензий.ORGL8, программные лицензии любых номиналов без ограничений суммируются сервером 1С в единый пул.