Разберем распространенную ситуацию: организация использует файловую базу 1С:Предприятие 8.3, опубликованную на веб-сервере Apache для подключения тонких и веб-клиентов. Для обеспечения доступа имеются два аппаратных сетевых ключа защиты по 10 лицензий каждый. Первый ключ установлен непосредственно в сервере, второй подключен к соседнему компьютеру в локальной сети, где функционирует менеджер лицензий HASP License Manager. При подключении одиннадцатого пользователя возникает ошибка: свободных лицензий нет. Выясним, почему веб-сервер не видит второй ключ, и рассмотрим практические способы решения этой проблемы без дорогостоящей покупки объединенного ключа.
Проанализируем механику работы системы защиты 1С. Сетевые аппаратные ключи на 10 рабочих мест принадлежат к одной серии — ORGL8. Согласно протоколу NetHASP, одно приложение (в данном случае рабочий процесс веб-сервера httpd.exe) не способно самостоятельно суммировать лицензии с нескольких менеджеров лицензий, если они раздают ключи одной и той же серии.
При запуске процесс веб-сервера выполняет широковещательный поиск (broadcast-запрос по порту UDP 475) или опрашивает локально вставленный USB-ключ. Обнаружив первый ответивший ключ, модуль расширения веб-сервера монопольно закрепляется за ним. Когда лимит в 10 подключений исчерпывается, процесс не опрашивает сеть повторно в поисках других доступных ключей той же серии, а сразу генерирует ошибку нехватки лицензий. В файловом режиме именно веб-сервер выступает в роли клиента, получающего лицензии от имени пользователей, что и порождает данное ограничение.
Рассмотрим вариант разделения сеансов на одном сервере. Для этого запустим две независимые службы Apache на разных сетевых портах (например, 80 и 8080), каждая из которых будет принудительно направлена на свой менеджер лицензий.
Разберем настройку по шагам:
nhsrv.ini. Зададим уникальные имена серверов защиты с помощью параметра NHS_SERVERNAMES, например LM_SRV1 на первом сервере и LM_SRV2 на соседнем компьютере.httpd.conf на разные порты прослушивания. В обоих экземплярах опубликуем одну и ту же файловую базу 1С.bin) поместим файл nethasp.ini, жестко связывающий службу с первым ключом. Отключим широковещательный поиск и укажем точный IP-адрес:
[NH_COMMON]
NH_IPX = Disabled
NH_NETBIOS = Disabled
NH_TCPIP = Enabled
[NH_TCPIP]
NH_SERVER_ADDR = 192.168.1.10
NH_SERVER_NAME = LM_SRV1
NH_USE_BROADCAST = Disabled
bin второго экземпляра Apache поместим другой файл nethasp.ini, указывающий на IP-адрес соседнего компьютера:
[NH_COMMON]
NH_IPX = Disabled
NH_NETBIOS = Disabled
NH_TCPIP = Enabled
[NH_TCPIP]
NH_SERVER_ADDR = 192.168.1.20
NH_SERVER_NAME = LM_SRV2
NH_USE_BROADCAST = Disabled
Теперь первая служба берет 10 лицензий от первого ключа, а вторая — 10 от второго. Распределим пользователей: 10 человек подключаются по порту 80, а остальные 10 — по порту 8080. При необходимости прозрачного входа перед веб-серверами можно настроить обратный прокси-сервер с балансировкой и обязательной фиксацией сессий (sticky sessions), чтобы активная пользовательская сессия не переключалась между серверами.
Если нет желания разворачивать две службы на одном сервере, разберем альтернативный вариант: задействуем второй компьютер, в который уже вставлен аппаратный ключ.
\\SERVER\1C_Base).Если удаленные сотрудники используют тонкий клиент 1С (а не веб-браузер), можно полностью снять нагрузку по лицензированию с веб-сервера. Тонкий клиент способен находить ключ защиты самостоятельно на машине пользователя.
nethasp.ini (расположенный в каталоге платформы conf) пропишем IP-адрес первого менеджера лицензий, а второй половине — IP-адрес второго менеджера, обязательно установив параметр NH_USE_BROADCAST = Disabled.В таком сценарии каждый тонкий клиент приходит на веб-сервер со своей собственной лицензией, полученной от одного из двух менеджеров лицензий.
Рассмотрим финансовую сторону вопроса. Замена двух USB-ключей по 10 пользователей на один аппаратный ключ на 20 лицензий требует доплаты разницы в стоимости ключей (апгрейд "железо на железо"). Однако фирма «1С» предоставляет процедуру перехода с аппаратных USB-ключей на программные лицензии (пинкоды). Стоимость обмена двух аппаратных ключей на один комплект программной лицензии на 20 пользователей обходится значительно дешевле покупки нового USB-ключа и решает вопрос ограничений сетевого поиска навсегда.
Решая задачу с лицензиями, обязательно учтем архитектурные ограничения файловой базы на 20 активных сеансов:
wsap24.dll. 32-разрядный процесс ограничен адресным пространством в 2–3 ГБ. При работе 20 пользователей в файловой базе память процесса быстро исчерпывается, что приводит к аварийному завершению службы с ошибкой нехватки памяти.