При масштабировании инфраструктуры 1С часто возникает ситуация, когда одного многопользовательского ключа становится недостаточно. Например, у вас уже есть ключ на 20 пользователей, и вы приобретаете дополнительный ключ на 50 пользователей. Однако простая установка двух ключей в один сервер не решит проблему: система увидит только один из них. В этой статье мы подробно разберем, почему возникает конфликт ключей одной серии и как правильно настроить распределение лицензий между пользователями, чтобы задействовать весь купленный потенциал.
Рассмотрим техническую сторону вопроса. Большинство аппаратных ключей защиты 1С (на 5, 10, 20, 50 и 100 пользователей) относятся к одной серии — ORGL8. Драйвер HASP HL и служба HASP License Manager (HASP LM) устроены таким образом, что они не умеют суммировать лицензии от двух устройств одной и той же серии, подключенных к одному физическому или виртуальному компьютеру. Если вы вставите два таких ключа в один сервер, менеджер лицензий захватит первый попавшийся ключ, а второй останется неактивным.
Проанализируем ситуацию, описанную в теме форума. Автор столкнулся именно с этой проблемой: ключ на 50 и ключ на 20 пользователей не «соседствовали» на одной машине. Решением в данном случае является физическое (или логическое в рамках виртуализации) разнесение ключей по разным серверам. Но одного разнесения мало — нужно заставить клиентские приложения 1С «видеть» оба сервера лицензий и корректно запрашивать свободные слоты.
Прежде чем приступать к настройке, крайне важно понять, какой способ раздачи лицензий нам выгоден. В настройках базы 1С в консоли кластера есть параметр Разрешить выдачу лицензий сервером 1С:Предприятия — для этой задачи есть инструмент централизованного управления серверами и сеансами 1С.
rphost. Особенность в том, что лицензия тратится на каждый запуск сеанса. Если один пользователь откроет три разные базы или три окна одной базы, он займет 3 лицензии. Это крайне невыгодно при дефиците ключей — решить проблему поможет обработка управления сеансами для освобождения лицензий 1С.HASP LM. В этом случае лицензия привязывается к рабочему месту (IP-адресу/имени компьютера). Один пользователь может открыть сколько угодно окон 1С на своем компьютере, потратив всего 1 лицензию из ключа.Для экономии лицензий (как в случае автора темы) мы будем использовать второй вариант. Для этого во всех базах в консоли 1С устанавливаем настройку Разрешить выдачу лицензий сервером 1С:Предприятия = НЕТ. Для управления параметрами баз и кластера можно использовать альтернативную консоль администрирования кластера 1С.
Рассмотрим конфигурацию: у нас есть два сервера. На сервере 192.168.0.20 установлен ключ на 20 пользователей, на сервере 192.168.0.50 — на 50 пользователей. На каждом из этих серверов должна быть выполнена следующая последовательность действий:
Теперь выясним важный нюанс, который помог автору решить проблему. Когда в сети несколько менеджеров лицензий, они могут конфликтовать, если их имена не уникальны. Нам нужно отредактировать файл nhsrv.ini, который обычно находится в папке с установленным менеджером лицензий (например, в C:\Program Files (x86)\Aladdin\HASP LM\).
На первом сервере (192.168.0.20) в секции [NHS_SERVER] зададим уникальное имя:
[NHS_SERVER]
NHS_USERLIST = 250
NHS_SERVERNAMES = Server20
На втором сервере (192.168.0.50) сделаем аналогично:
[NHS_SERVER]
NHS_USERLIST = 250
NHS_SERVERNAMES = Server50
Важно: После изменения файла nhsrv.ini необходимо перезапустить службу HASP Loader (или Sentinel LDK-License Manager) через оснастку services.msc.
Теперь перейдем к настройке рабочих мест пользователей. По умолчанию 1С ищет ключи широковещательным запросом (Broadcast). В сложных сетях или при наличии нескольких ключей это работает нестабильно: 1С может «зависнуть» на поиске или не увидеть второй ключ, когда первый занят — эту проблему решит система централизованного администрирования рабочих мест и баз 1С.
Нам нужно отредактировать файл nethasp.ini. На клиентских машинах он обычно лежит в C:\Program Files\1cv8\conf\ или в папке конкретной версии платформы. Настроим прямой опрос наших серверов лицензий:
[NH_COMMON]
NH_TCPIP = Enabled
[NH_TCPIP]
;; Указываем адреса наших серверов через запятую
NH_SERVER_ADDR = 192.168.0.20, 192.168.0.50
;; Отключаем широковещательный поиск для ускорения запуска
NH_USE_BROADCAST = Disabled
Проанализируем этот конфиг. Параметр NH_SERVER_ADDR заставляет 1С сначала обратиться к первому серверу. Если на нем есть свободные лицензии, программа запустится. Если лицензии на первом сервере закончились, 1С обратится ко второму серверу из списка. Это обеспечивает плавное суммирование ключей на 20 и 50 пользователей.
Рассмотрим ситуацию с задержкой запуска. Автор темы упомянул, что при указании нескольких серверов поиск может длиться около 5 секунд. Это происходит потому, что 1С ждет ответа от первого IP в списке. Если вы хотите ускорить процесс, убедитесь, что самый «быстрый» или самый «вместительный» сервер стоит в списке первым.
Для контроля использования лицензий рекомендуем использовать утилиту Aladdin Monitor. В ней вы сможете увидеть:
Если Aladdin Monitor не видит один из ключей, проверьте, запущен ли драйвер и не блокирует ли антивирус процесс nhsrv.exe.
Мы проанализировали механизм работы сетевых ключей 1С и выяснили, что для успешной работы нескольких ключей серии ORGL8 необходимо:
NHS_SERVERNAMES.nethasp.ini на последовательный опрос серверов.Такой подход позволяет гибко управлять лицензиями и гарантирует, что пользователи смогут использовать все доступные 70 рабочих мест без конфликтов программного обеспечения.