При администрировании серверов 1С в компаниях с несколькими независимыми филиалами или юридическими лицами часто возникает специфическая задача. Имеется один производительный сервер 1С и несколько купленных комплектов программных лицензий (например, для Фирмы 1 и Фирмы 2). По умолчанию сервер 1С раздает лицензии из общего пула по принципу "первой свободной". Это приводит к тому, что пользователи Фирмы 2 могут полностью исчерпать лицензии Фирмы 1, заблокировав им работу.
В рамках этой статьи мы подробно разберем, почему стандартные механизмы платформы не позволяют решить этот вопрос «в лоб», и рассмотрим эффективные практические варианты изоляции программных лицензий для конкретных баз данных.
Многие администраторы пытаются решить проблему через механизм Требований назначения функциональности (ТНФ) в консоли администрирования кластера 1С. Логика кажется простой: создать правило, при котором определенный рабочий сервер обслуживает конкретную информационную базу.
Однако здесь мы упираемся в жесткое техническое ограничение платформы. Согласно официальной документации 1С, параметр ТНФ Имя информационной базы может использоваться для фильтрации практически всех сервисов кластера, кроме сервиса лицензирования. Сервис лицензирования работает глобально для всего кластера и не умеет анализировать, к какой именно базе подключается пользователь в данный момент. Следовательно, распределить лицензии по базам внутри одного стандартного кластера штатными настройками невозможно.
Для решения этой задачи нам потребуется применить более глубокие архитектурные подходы. Ниже мы детально проанализируем самые надежные методы.
Это наиболее изящное серверное решение, которое позволяет жестко закрепить пулы лицензий за конкретными базами, не нарушая лицензионную политику фирмы 1С и не требуя покупки дополнительных лицензий на сервер 1С.
Суть метода заключается в создании под каждую базу (или группу баз) отдельного кластера 1С, внутри которого разворачивается выделенный виртуальный сервер, отвечающий исключительно за раздачу конкретных лицензий.
Разберем этот процесс по шагам:
1541. Для второго кластера назначаем другой порт менеджера кластера (например, 1641).1641), удалив ее из первого кластера. Теперь наши базы физически изолированы на уровне разных кластеров.1641) добавляем новый рабочий сервер, указав сетевой адрес нашей виртуальной машины.Любой объект устанавливаем значение Не назначать.Сервис лицензирования устанавливаем значение Назначать.1641 для сервиса лицензирования устанавливаем значение Не назначать. Таким образом, сервер кластера будет выполнять все вычислительные задачи, но за лицензиями он будет принудительно обращаться к нашей ВМ.
1641 и активируем лицензию Фирмы 2. В диалоговом окне активации в разделе "Дополнительно" указываем, что лицензия должна быть привязана и зарегистрирована на сервере нашей виртуальной машины.Повторяем эту схему для каждой фирмы. В итоге основной рабочий сервер производит все вычисления, а лицензии распределяются строго централизованно и изолированно с соответствующих виртуальных машин.
Если баз много (например, более 10), разворачивать под каждую базу отдельную виртуальную машину может быть слишком затратно с точки зрения ресурсов гипервизора. В этом случае мы можем модернизировать первый способ и обойтись всего одной вспомогательной виртуальной машиной (или выполнить все действия прямо на физическом сервере).
Рассмотрим, как настроить изоляцию лицензий через системные службы:
sc create. Каждую службу вешаем на свой порт.USR1CV8_Firm1, USR1CV8_Firm2 и т.д.).C:\ProgramData\1C\Licenses)..lic заходим в свойства безопасности файла и жестко ограничиваем права доступа: разрешаем чтение файла только тому пользователю ОС, под которым запущена служба соответствующей фирмы. Все остальные пользователи (включая учетные записи других служб 1С) должны быть лишены прав на этот файл.При такой схеме служба кластера Фирмы 1 сможет прочитать только «свой» файл лицензии, к которому у нее есть права доступа на уровне файловой системы ОС, что исключает любое пересечение лицензий.
Если пользователи работают исключительно в терминальном режиме (RDP), а базы файловые или раздача лицензий сервером 1С не является обязательным условием, можно применить элегантный метод изоляции через каталоги установки платформы.
Платформа 1С осуществляет поиск файлов лицензий по приоритетным путям, одним из которых является папка conf каталога исполняемых файлов конкретной версии платформы. Мы можем использовать это для разделения пулов:
8.3.23.1865 и 8.3.24.1350). Также можно использовать один релиз, просто скопировав содержимое папки установки в две разные директории (например, в C:\1C_Firm1\bin и C:\1C_Firm2\bin)..lic для Фирмы 1 копируем строго в каталог C:\1C_Firm1\bin\conf.C:\1C_Firm2\bin\conf.Когда пользователь запустит базу Фирмы 1, стартует экземпляр платформы из папки C:\1C_Firm1\bin. Он найдет файл лицензии в своем локальном каталоге conf и успешно запустится. При этом лицензия Фирмы 2 останется недоступной и нетронутой, так как платформа из первого каталога ничего не знает о файлах во второй директории.
В случае, если в вашей инфраструктуре используются многопользовательские аппаратные USB-ключи защиты, задача разделения лицензий решается стандартными конфигурационными файлами HASP License Manager.
Для разграничения доступа выполним следующие настройки:
HASP License Manager.nethasp.ini.nethasp.ini явный IP-адрес того менеджера лицензий, в который вставлен ключ Фирмы 1. Пример настройки секции:
[NH_COMMON]
NH_TCPIP = Enabled
[NH_TCPIP]
NH_SERVER_ADDR = 192.168.1.100 ; IP-адрес HASP-сервера Фирмы 1
NH_PORT_NUMBER = 475
nethasp.ini, но указываем IP-адрес сервера лицензий Фирмы 2 (например, 192.168.1.200).Благодаря такой адресации рабочие станции пользователей будут видеть на сетевом уровне только свой целевой аппаратный ключ, что полностью исключает заимствование лицензий коллегами из соседней организации.
Администраторы, использующие виртуальные машины в качестве серверов лицензирования (как описано в Способе 1), часто сталкиваются с проблемой "слета" программных лицензий. При изменении параметров гипервизора (динамическая память, миграция на другой хост, изменение сетевых адаптеров) файлы .lic становятся недействительными и требуют повторной активации по пин-коду.
Малоизвестный, но крайне полезный факт: начиная с версии платформы 8.3.12.1790, программную лицензию при активации можно привязать не к физическим параметрам компьютера, а к сетевому аппаратному ключу защиты HASP. Если в вашей сети присутствует хотя бы один аппаратный ключ 1С, вы можете активировать программную лицензию с привязкой к его ID. После этого виртуальные машины серверов лицензирования можно свободно перемещать, изменять их конфигурацию и перезапускать — лицензии никогда не "слетят", пока в сети доступен указанный USB-ключ.