Как организовать совместное использование программных и аппаратных USB-лицензий на сервере 1С и почему не хватает лицензий?

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

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

В чем разница между сеансом и соединением?

Для понимания механизма блокировки и потребления лицензий проанализируем различие между терминами сеанс и соединение в клиент-серверной архитектуре 1С:

  1. Сеанс — это логический контекст работы конкретного пользователя или фонового процесса с информационной базой. Сеанс создается в момент авторизации и сохраняет состояние пользователя. Именно сеанс является единицей учета при выделении клиентской лицензии сервером 1С.
  2. Соединение — это физический транспортный канал связи между клиентским приложением (или фоновым потоком) и рабочим процессом кластера серверов rphost. В рамках одного пользовательского сеанса может последовательно или параллельно открываться несколько соединений (например, для вызова серверных процедур, формирования отчетов или передачи данных).

Таким образом, количество соединений в консоли кластера практически всегда превышает количество активных сеансов, что является штатным поведением платформы.

Особенности раздачи лицензий: клиентский поиск против серверной выдачи

Ключевая причина нехватки рабочих мест заключается в разнице механизмов захвата лицензий:

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

Почему лицензии заканчиваются раньше времени?

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

  1. Фоновые и регламентные задания: в клиент-серверном режиме такие операции, как полнотекстовый поиск, загрузка курсов валют, слияние индексов или регламентный обмен, запускаются в виде фоновых сеансов. При серверной раздаче каждый такой сеанс забирает полноценную клиентскую лицензию на время своего выполнения.
  2. Спящие и зависшие сеансы: если пользователь некорректно завершил работу (обрыв связи, выключение ПК), сеанс в кластере продолжает удерживать лицензию до истечения таймаутов.
  3. Сервисы интеграции: входящие вызовы через HTTP-сервисы, Web-сервисы и внешние COM-соединения создают сеансы и блокируют лицензии из серверного пула.

Где и как посмотреть сведения об используемых лицензиях?

Выясним, какими средствами можно отследить распределение аппаратных и программных лицензий:

  1. В окне «О программе» на клиентском месте: вызовем меню Справка — О программе. В блоке Лицензия отображается точный источник: тип лицензии (программная или сетевой HASP), имя хоста менеджера лицензий или сетевой путь к файлу лицензии .lic, а также регистрационный номер комплекта.
  2. В консоли администрирования кластера 1С: откроем ветку Кластеры — Информационные базы — Сеансы. В свойствах конкретного сеанса поле сведений о лицензии содержит исчерпывающую информацию: кем выдана лицензия (клиентом или сервером), тип привязки и параметры файла лицензии.
  3. Расположение файлов программных лицензий: на сервере файлы с расширением .lic обычно располагаются в каталоге C:\ProgramData\1C\licenses (для ОС Windows) или /var/1C/licenses (для ОС Linux). Важно убедиться, что учетная запись службы сервера usr1cv8 имеет полные права на чтение файлов в этой директории.

Рекомендации по настройке и оптимизации совместной работы

Разберем по шагам, как выстроить стабильную архитектуру лицензирования при наличии 5 аппаратных и 5 программных лицензий:

  1. Разделение способов получения лицензий:

    Для пяти рабочих мест активируем программные лицензии как однопользовательские непосредственно на клиентских компьютерах. В окне запуска 1С по кнопке Настройка на этих компьютерах снимаем флаг Использовать аппаратную лицензию (ключ защиты).

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

  2. Оптимизация опроса сетевого ключа NetHASP:

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

    Укажем точный IP-адрес машины, где физически установлен USB-ключ и запущен HASP License Manager, задав параметр NH_SERVER_ADDR = 192.168.x.x, и отключим широковещательный поиск директивой NH_USE_BROADCAST = Disabled.

  3. Настройка параметров кластера для спящих сеансов:

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

  4. Управление серверной раздачей:

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

← На главную