Как решить проблему, когда 1С:Предприятие не видит все сетевые ключи HASP при наличии нескольких серверов лицензирования?

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

Администрирование аппаратных многопользовательских ключей HASP в инфраструктуре «1С:Предприятие» часто сопровождается трудностями, когда в одной локальной сети или на разных серверах развернуто несколько ключей защиты. Типичная ситуация: у вас установлены три ключа (например, два по 50 лицензий и один на 100 лицензий), но пользователи периодически получают ошибку «Не найдена свободная лицензия», хотя по факту занята лишь малая часть из общего пула. При этом один из ключей (обычно самый емкий) упорно игнорируется системой, если не прописать его адрес в качестве единственного.

В этой статье мы подробно разберем, почему возникает такое поведение, проанализируем внутренние механизмы платформы 1С и службы HASP License Manager, а также по шагам настроим систему так, чтобы задействовать все доступные лицензии.

Выясняем причину: два принципиально разных сценария работы

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

  1. Лицензии раздает сервер «1С:Предприятие». В этом случае серверный процесс rphost сам находит ключи в сети, забирает с них лицензии и авторизует сессии пользователей.
  2. Лицензии получают сами клиенты напрямую. Каждое клиентское приложение (толстый или тонкий клиент) самостоятельно ищет HASP License Manager в локальной сети и забирает одну лицензию под свой процесс.

Чтобы точно определить ваш вариант, запустите «1С:Предприятие» на любом рабочем месте, откройте меню «Справка» -> «О программе» и найдите раздел «Лицензия»:

---

Сценарий 1. Лицензии раздает сервер «1С:Предприятие» (Ограничение платформы)

Рассмотрим ситуацию, когда в свойствах информационных баз на сервере 1С параметр «Разрешить выдачу лицензий сервером 1С:Предприятия» установлен в значение «Да».

Здесь мы сталкиваемся с жестким архитектурным ограничением самой платформы «1С:Предприятие»:

Как решить проблему в Сценарии 1?

Вариант А. Отключение раздачи лицензий сервером.

Если ваши пользователи работают в локальной сети (не через веб-сервер и не через тонкий клиент вне VPN), лучшим решением будет переложить задачу поиска лицензий на сами клиентские машины. Для этого:

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

Вариант Б. Аппаратный или программный апгрейд.

Если у вас используются веб-клиенты или тонкие клиенты через HTTP/HTTPS, сервер 1С обязан раздавать лицензии сам. В этом случае обойти ограничение «один ключ серии ORGL8 на сервер» физически невозможно. Вам придется либо заменить несколько мелких ключей на один большой (например, обменять два по 50 и один на 100 на один ключ емкостью 200 пользователей), либо полностью перейти на программные лицензии (пин-коды), у которых таких ограничений нет.

---

Сценарий 2. Лицензии получают сами клиенты через nethasp.ini

Если раздача сервером отключена, а клиенты все равно «не видят» свободные места на третьем ключе, мы имеем дело с классическим конфликтом сетевых служб HASP License Manager (HASP LM) и неправильной настройкой широковещания (Broadcast).

Разберем по шагам, как исправить эту ситуацию.

Шаг 1. Разрешение конфликта имен в nhsrv.ini (Настройка серверов)

По умолчанию служба HASP License Manager при запуске на сервере не имеет уникального идентификатора в сети. Если в одной подсети запущены три службы HASP LM с настройками по умолчанию, они начинают перехватывать запросы друг друга. Клиент видит только тот сервер, который ответил на бродкаст-запрос самым первым, а остальные игнорирует.

Чтобы исправить это, нам нужно присвоить каждому менеджеру лицензий уникальное имя.

  1. Зайдите на каждый из трех серверов, где установлены USB-ключи и запущен HASP LM.
  2. Найдите конфигурационный файл nhsrv.ini. Обычно он находится в папке установки программы (например, C:\Program Files (x86)\Aladdin\HASP LM\) либо в системных папках Windows\System32 (или SysWOW64), если менеджер установлен как служба.
  3. Откройте файл текстовым редактором от имени Администратора.
  4. Найдите секцию [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 (или перезагрузите сервера), чтобы новые имена вступили в силу.

Шаг 2. Настройка клиентских файлов nethasp.ini

Теперь необходимо заставить клиентские компьютеры опрашивать серверы лицензирования адресно, по конкретным 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С:Предприятие». Для устранения проблем с доступностью лицензий выполните два ключевых действия:

  1. Убедитесь, что выдача лицензий сервером 1С отключена в настройках баз, либо используйте программные лицензии/один физический ключ большой емкости.
  2. Принудительно настройте адресный опрос менеджеров лицензий, задав уникальные имена NHS_SERVERNAMES на серверах и прописав их совместно с NH_USE_BROADCAST = Disabled в клиентских файлах nethasp.ini.
← На главную