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

Системный администратор IT и автоматизация бизнеса
← На главную

Рассмотрим распространенную и сложную ситуацию: в компании используется два или более аппаратных USB-ключа защиты 1С (например, на 50 и 100 пользователей), но клиенты периодически не могут войти в программу из-за отсутствия лицензии, хотя мониторинг показывает, что свободные лицензии есть. Часто временным решением становится перезапуск службы менеджера лицензий (HASP License Manager), но проблема возвращается, особенно в часы пиковой нагрузки, например, утром. Давайте пошагово разберем причины такого поведения и найдем стабильное решение.

Исходные данные проблемы: имеется один физический сервер, на котором установлены два аппаратных ключа. Порты USB проброшены в две разные виртуальные машины, каждая из которых должна раздавать свой пул лицензий. Несмотря на это, возникает нехватка лицензий.

Шаг 1: Анализ первопричины — конфликт ключей и менеджеров лицензий

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

Ключи на 50 и 100 пользователей (серии ORGL8) не могут корректно раздаваться с одной физической или виртуальной машины. Платформа 1С обращается в сеть за лицензией, и ей отвечает первый откликнувшийся менеджер лицензий. Если он не может выдать лицензию (например, все заняты), поиск на этом часто и заканчивается, даже если на втором ключе лицензии есть. Возникает "гонка состояний", когда результат зависит от того, какая служба запустилась или ответила первой, что приводит к непредсказуемой работе.

Решение: Физически или виртуально разнесите менеджеры лицензий. Каждый аппаратный ключ должен обслуживаться своим экземпляром HASP License Manager на отдельной машине (физической или виртуальной). Это базовое требование для стабильной работы.

Шаг 2: Настройка уникальных имен для менеджеров лицензий

Даже если вы разнесли ключи по разным серверам, клиентам нужно как-то их различать. Для этого каждому менеджеру лицензий необходимо присвоить уникальное имя. Это делается в конфигурационном файле nhsrv.ini, который находится в папке с установленным HASP License Manager.

Разберем по шагам настройку:

  1. Найдите файл nhsrv.ini на первом сервере лицензий (например, том, где ключ на 100 пользователей).
  2. Откройте его в текстовом редакторе и добавьте (или раскомментируйте) секцию с параметром NHS_SERVERNAMES.
  3. Присвойте уникальное имя, например, LM100. Имя может быть произвольным, но коротким и понятным.

Пример содержимого файла nhsrv.ini на сервере с ключом на 100 пользователей:


[NHS_SERVER]
NHS_SERVERNAMES = LM100

Аналогичную операцию проделайте на втором сервере лицензий (с ключом на 50 пользователей), но задайте другое имя, например, LM50.

Пример содержимого файла nhsrv.ini на сервере с ключом на 50 пользователей:


[NHS_SERVER]
NHS_SERVERNAMES = LM50

После внесения изменений обязательно перезапустите службу HASP License Manager на обоих серверах, чтобы настройки применились.

Шаг 3: Настройка клиентов для поиска конкретных менеджеров (nethasp.ini)

Теперь, когда у наших серверов лицензий есть уникальные имена, нужно "научить" клиентские машины и сервер 1С обращаться к ним в правильном порядке. Это делается с помощью файла nethasp.ini.

Этот файл нужно создать или отредактировать в папке conf каталога установки платформы 1С на каждой клиентской машине и на сервере 1С:Предприятия.

В файле необходимо указать IP-адреса серверов лицензий и их уникальные имена.

Пример содержимого файла nethasp.ini:


[NH_COMMON]
NH_TCPIP = Enabled

[NH_TCPIP]
NH_SERVER_ADDR = 192.168.1.10, 192.168.1.11
NH_SERVER_NAME = LM100, LM50

Что означают эти параметры:

Такая конфигурация заставит платформу 1С последовательно опрашивать сначала сервер 192.168.1.10 (LM100), и если там нет свободных лицензий, то переходить к опросу сервера 192.168.1.11 (LM50). Это обеспечивает предсказуемый и управляемый поиск лицензий.

Шаг 4: Диагностика с помощью журнала поиска лицензий

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

В проблемной теме пользователь предоставил лог, который очень показателен:


Не найдена лицензия. Не обнаружен ключ защиты программы или полученная программная лицензия!
...
nethasp.ini: /home/MARBUM/log-kip-sklad/.1cv8/1C/1cv8/conf/nethasp.ini, прочитан успешно,
ошибка соединения с менеджером лицензий: Net Status=0, System Error=0, Warning=15, ORGL8 Сетевой, не установлен
...
Поиск лицензии на сервере:
Выдача клиентских лицензий сервером 1С:Предприятия запрещена

Проанализируем ключевые моменты:

Шаг 5: Разбираемся с главным конфликтом: Сервер 1С vs. HASP License Manager

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

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

ВНИМАНИЕ! Не рекомендуется использовать один и тот же многопользовательский ключ HASP для одновременного получения лицензий с помощью HASP License Manager и сервера 1С:Предприятия. Это приводит к тому, что лицензии, выданные сервером 1С, в утилите мониторинга `Aladdin Monitor` помечаются с нулевым таймаутом (Timeout = 0) и считаются вечно занятыми до перезапуска службы. Именно это и вызывает эффект "залипания" и быстрой нехватки.

Кроме того, сервер 1С имеет ограничение: он может получать лицензии с локально установленного в него ключа и только с одного сетевого HASP License Manager. Он не будет искать второй, третий и последующие менеджеры в сети.

Шаг 6: Выбор и реализация правильной схемы лицензирования

На основе вышеизложенного, у нас есть два правильных варианта конфигурации.

Вариант А (Рекомендуемый): Полностью отключить раздачу лицензий сервером 1С

Это самый простой и надежный способ. Вся ответственность за выдачу лицензий ложится на настроенные нами HASP LM.

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

Преимущества: Экономный расход лицензий (на компьютер, а не на сеанс), предсказуемая работа.

Требования: Все клиентские машины должны иметь сетевой доступ к серверам лицензий по UDP-порту 475. Это может быть проблемой, если пользователи подключаются извне через интернет без VPN.

Вариант Б: Комбинированная схема

Этот вариант подходит, если нужно совместить оба механизма. Например, один ключ обслуживает локальных пользователей, а второй — удаленных.

  1. Оставьте один ключ (например, на 100 пользователей) на отдельной машине с HASP LM для выдачи лицензий клиентам напрямую.
  2. Второй ключ (например, на 50 пользователей) физически установите непосредственно в сервер 1С:Предприятия.
  3. В свойствах информационной базы включите флажок "Разрешить выдачу лицензий сервером".

В такой конфигурации порядок поиска будет следующим: при подключении клиент сначала запросит лицензию у сервера 1С. Сервер выдаст ее со своего локального ключа. Когда лицензии на этом ключе закончатся, сервер 1С (или клиент, в зависимости от настроек) начнет искать лицензию в сети и найдет ваш второй сервер с HASP LM.

Этот метод более сложен в настройке, но также является рабочим при правильном понимании механики.

Следуя этим шагам, вы сможете построить стабильную и предсказуемую систему лицензирования 1С, которая не будет доставлять проблем ни вам, ни пользователям.

← На главную