При администрировании клиент-серверных баз данных «1С:Предприятие» системные администраторы часто сталкиваются с ситуацией, когда на сервере одновременно установлены программные лицензии (пин-коды) и аппаратные многопользовательские USB-ключи защиты HASP. В процессе эксплуатации пользователи могут замечать, что сервер распределяет лицензии хаотично: то сначала забираются все программные, а затем аппаратные, то наоборот. Это приводит к ситуации, когда локальные пользователи, которым физически необходим доступ к USB-ключу через сеть, не могут войти в систему, так как все аппаратные лицензии уже «захватил» сервер для своих сеансов.
В этой статье мы подробно разберем, по какому алгоритму платформа осуществляет поиск лицензий, выясним причины такого поведения системы и рассмотрим практические способы настройки жесткого приоритета выдачи лицензий.
Для того чтобы понять, почему сервер ведет себя нестабильно при раздаче лицензий, проанализируем штатный алгоритм, заложенный разработчиками платформы. При запуске клиентского приложения поиск свободной лицензии выполняется строго в два этапа.
Этап 1. Поиск на локальном компьютере (где запущено клиентское приложение):
Этап 2. Поиск на компьютере менеджера кластера серверов «1С:Предприятие» (если включена раздача лицензий сервером):
Как мы видим, самым первым пунктом в обоих этапах идет проверка «последней успешной лицензии». Именно из-за этого механизма поведение сервера кажется хаотичным: если пользователь в предыдущий раз случайно зашел под USB-лицензией, платформа при следующем запуске будет настойчиво пытаться забрать именно аппаратную лицензию, игнорируя свободные программные.
Выясним причину, по которой система «запоминает» предыдущий выбор. Данные о типе и источнике последней успешной лицензии платформа записывает в специальный конфигурационный файл 1cv8conn.pfl.
В операционной системе Windows этот файл обычно располагается в общем каталоге данных приложений:
C:\ProgramData\1C\1Cv8\
Важная деталь для терминальных серверов: Если ваши пользователи работают в терминальном режиме на одном сервере под одной учетной записью или делят общий доступ к папке конфигурации, файл 1cv8conn.pfl становится общим. Запуск системы одним пользователем перезаписывает сохраненный источник лицензии для всех остальных, что усугубляет проблему непредсказуемого распределения ключей.
Прежде чем перейти к настройке, рассмотрим принципиальную разницу в подсчете лицензий, которая напрямую влияет на их экономию:
Поэтому правильная стратегия администратора — заставить сервер раздавать исключительно программные лицензии, а аппаратные оставить для прямого получения пользователями через сеть.
---
Рассмотрим подробнее три основных способа, позволяющих настроить желаемый приоритет и гарантировать, что первыми будут расходоваться программные лицензии.
Самый надежный способ заставить сервер раздавать только программные лицензии — физически или логически запретить службе сервера 1С «видеть» аппаратные ключи HASP в сети. При этом пользователи на своих ПК продолжат видеть эти ключи напрямую.
Разберем по шагам, как это сделать:
ragent (сервер «1С:Предприятия»), найдите конфигурационный файл сетевого драйвера HASP — nethasp.ini. Обычно он находится по пути:
C:\Program Files\1cv8\conf\nethasp.ini (или в аналогичной папке для 32-битной версии сервера C:\Program Files (x86)\1cv8\conf\).
nethasp.ini с помощью любого текстового редактора (например, Блокнота) от имени Администратора.[NH_COMMON] и принудительно отключите в ней использование всех сетевых протоколов для поиска ключей защиты. Настройки должны выглядеть следующим образом:
[NH_COMMON]
NH_IPX = Disabled
NH_NETBIOS = Disabled
NH_TCPIP = Disabled
services.msc).После выполнения этих действий сервер 1С потеряет возможность опрашивать сетевой менеджер лицензий HASP LM. Он будет раздавать клиентам только те программные лицензии, файлы которых установлены непосредственно на сервере в каталоге C:\ProgramData\1C\licenses\.
В то же время, локальные компьютеры пользователей, у которых в их собственных файлах nethasp.ini прописан доступ к сетевому USB-ключу, смогут беспрепятственно забирать свободные аппаратные лицензии напрямую, когда программные лицензии на сервере закончатся.
Если вы не хотите менять конфигурационные файлы, можно воспользоваться более простым «ручным» способом, который заставит кэш всех пользователей переключиться на программные лицензии.
1cv8conn.pfl на компьютерах пользователей запишется информация о том, что последняя успешная лицензия была программной.Теперь при последующих запусках система в первую очередь будет пытаться получить именно программную лицензию, так как она зафиксирована в истории как «последняя успешная».
В крупных распределенных системах, где развернут полноценный кластер серверов «1С:Предприятия», можно гибко управлять распределением лицензий с помощью механизмов платформы.
Проанализируем этот процесс:
Таким образом, вы жестко разделите роли серверов в кластере. Центральный сервер при обработке запросов на авторизацию будет всегда перенаправлять запросы на получение лицензий именно к выделенному серверу программного лицензирования.