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

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

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

Разберем разницу между выдачей лицензий «Сервером» и «Клиентом»

Первое, на что нам необходимо обратить внимание — это настройка в свойствах информационной базы: «Разрешить выдачу лицензий сервером 1С:Предприятия». В рассматриваемом случае эта опция включена. Давайте выясним, как это влияет на расход лицензий, особенно в терминальной среде (RDP).

Если лицензии выдает сервер 1С, действует правило: один сеанс = одна лицензия. Если один и тот же сотрудник в рамках одной RDP-сессии откроет три разные информационные базы или три окна одной и той же базы, сервер 1С спишет из общего пула три отдельные лицензии. Это происходит потому, что сервер ничего не знает о том, запущены ли эти приложения на одном рабочем месте или на разных.

Если же лицензию берет само клиентское приложение (настройка «выдача сервером» выключена), то поиск файла лицензии происходит локально или на терминальном сервере. В этом случае работает правило: одно рабочее место = одна лицензия. Сколько бы баз ни открыл пользователь в своей сессии, будет израсходована только одна лицензия.

Рекомендация: Для терминальных серверов крайне желательно отключать выдачу лицензий сервером в консоли администрирования кластера. Это позволит существенно сэкономить лицензии за счет их повторного использования в рамках одной сессии пользователя.

Проанализируем работу нескольких кластеров на одном сервере

Когда на одной физической машине (или виртуальной) крутятся три разных экземпляра службы ragent (на разных портах), они фактически являются независимыми кластерами. Проанализируем ситуацию: программные лицензии (файлы с расширением .lic) обычно располагаются в общей папке C:\ProgramData\1C\licenses.

Проблема заключается в том, что каждый из трех серверов при запуске пытается просканировать эту папку. Это может приводить к конфликтам доступа к файлам или к ситуации, когда один кластер «захватывает» весь объем многопользовательской лицензии, не оставляя ресурсов другим. Хотя программные лицензии не блокируются файловой системой намертво, механизмы подсчета внутри рабочих процессов rphost разных кластеров могут работать несогласованно.

Внедрение Сервиса лицензирования 1С

Для решения проблемы «драки» нескольких серверов за одни и те же лицензии, рассмотрим внедрение Сервиса лицензирования. Это специальная роль, которую можно выбрать при установке платформы 1С:Предприятие.

Разберем алгоритм настройки этого сервиса:

  1. Выбираем один из кластеров или устанавливаем отдельный экземпляр платформы, где будет запущена роль «Сервис лицензирования».
  2. В консоли администрирования кластера для каждого из трех серверов указываем адрес этого сервиса.
  3. Переносим все программные лицензии на этот «узел-менеджер». Теперь он будет централизованно раздавать лицензии всем остальным рабочим процессам.

Важно помнить: для самого сервиса лицензирования отдельная серверная лицензия не требуется. Он выступает в роли единого диспетчера, что исключает двойной расход или невидимость лицензий для разных экземпляров rphost.

Учет скрытых потребителей лицензий: COM и регламентные задания

Зачастую администраторы смотрят только на список активных пользователей в консоли, забывая о фоновых процессах. Посмотрим на ситуацию глубже. Каждое соединение потребляет лицензию, и к «скрытым» потребителям относятся:

Проанализируем консоль администрирования. Необходимо обращать внимание не только на вкладку «Сеансы», но и на вкладку «Соединения». Именно там часто обнаруживаются «зависшие» или избыточные COM-соединения, которые не видны в обычном списке пользователей.

Проблема «зависших» сессий и очистка кэша лицензий

Иногда программные лицензии не возвращаются в пул из-за аварийного завершения работы пользователей или сбоев рабочих процессов. Информация о распределении лицензий хранится сервером в специальном файле 1cv8conn.pfl.

Если вы видите, что реальных пользователей мало, а лицензий нет, попробуйте следующий алгоритм:

  1. Остановите службы всех серверов 1С на данной машине.
  2. Найдите и временно переместите (или удалите) файл 1cv8conn.pfl (обычно находится в папке с данными кластера reg_1541).
  3. Очистите папку conf от временных файлов (кроме conf.cfg).
  4. Запустите службы заново.

После этой процедуры сервер заново проинициализирует список доступных лицензий и пересчитает текущие сеансы, что часто помогает вернуть «потерянные» ключи в оборот.

Особенности активации многопользовательских лицензий

Выясним причину, связанную с самим типом активации. Программные лицензии номиналом более чем на 1 пользователя (например, ваши 20, 15 и 5) могут быть активированы двумя способами:

Если лицензии были активированы как однопользовательские, но установлены на сервер, они могут выдаваться только в режиме «один сеанс = одна лицензия» вне зависимости от настроек клиента. Убедитесь, что при активации использовался именно многопользовательский пин-код, предназначенный для сервера 1С.

Соблюдение этих рекомендаций — переход на клиентскую выдачу лицензий в терминале, использование сервиса лицензирования и контроль COM-соединений — позволит вам эффективно использовать имеющийся пул из 70 лицензий без необходимости покупки дополнительных ключей.

← На главную