Рассмотрим ситуацию, которая часто встречается при масштабировании инфраструктуры 1С:Предприятие. Представим, что в организации успешно работал один сервер 1С с пулом из 70 программных лицензий (набранных разными номиналами: 20, 15, 5 и т.д.). Однако после перехода на конфигурацию с тремя серверами 1С, запущенными на одной физической машине, пользователи начали массово жаловаться на нехватку лицензий, хотя суммарное количество активных подключений по счетчикам значительно меньше 70. Проанализируем причины этой проблемы и разберем по шагам способы ее решения.
Первое, на что нам необходимо обратить внимание — это настройка в свойствах информационной базы: «Разрешить выдачу лицензий сервером 1С:Предприятия». В рассматриваемом случае эта опция включена. Давайте выясним, как это влияет на расход лицензий, особенно в терминальной среде (RDP).
Если лицензии выдает сервер 1С, действует правило: один сеанс = одна лицензия. Если один и тот же сотрудник в рамках одной RDP-сессии откроет три разные информационные базы или три окна одной и той же базы, сервер 1С спишет из общего пула три отдельные лицензии. Это происходит потому, что сервер ничего не знает о том, запущены ли эти приложения на одном рабочем месте или на разных.
Если же лицензию берет само клиентское приложение (настройка «выдача сервером» выключена), то поиск файла лицензии происходит локально или на терминальном сервере. В этом случае работает правило: одно рабочее место = одна лицензия. Сколько бы баз ни открыл пользователь в своей сессии, будет израсходована только одна лицензия.
Рекомендация: Для терминальных серверов крайне желательно отключать выдачу лицензий сервером в консоли администрирования кластера. Это позволит существенно сэкономить лицензии за счет их повторного использования в рамках одной сессии пользователя.
Когда на одной физической машине (или виртуальной) крутятся три разных экземпляра службы ragent (на разных портах), они фактически являются независимыми кластерами. Проанализируем ситуацию: программные лицензии (файлы с расширением .lic) обычно располагаются в общей папке C:\ProgramData\1C\licenses.
Проблема заключается в том, что каждый из трех серверов при запуске пытается просканировать эту папку. Это может приводить к конфликтам доступа к файлам или к ситуации, когда один кластер «захватывает» весь объем многопользовательской лицензии, не оставляя ресурсов другим. Хотя программные лицензии не блокируются файловой системой намертво, механизмы подсчета внутри рабочих процессов rphost разных кластеров могут работать несогласованно.
Для решения проблемы «драки» нескольких серверов за одни и те же лицензии, рассмотрим внедрение Сервиса лицензирования. Это специальная роль, которую можно выбрать при установке платформы 1С:Предприятие.
Разберем алгоритм настройки этого сервиса:
Важно помнить: для самого сервиса лицензирования отдельная серверная лицензия не требуется. Он выступает в роли единого диспетчера, что исключает двойной расход или невидимость лицензий для разных экземпляров rphost.
Зачастую администраторы смотрят только на список активных пользователей в консоли, забывая о фоновых процессах. Посмотрим на ситуацию глубже. Каждое соединение потребляет лицензию, и к «скрытым» потребителям относятся:
Проанализируем консоль администрирования. Необходимо обращать внимание не только на вкладку «Сеансы», но и на вкладку «Соединения». Именно там часто обнаруживаются «зависшие» или избыточные COM-соединения, которые не видны в обычном списке пользователей.
Иногда программные лицензии не возвращаются в пул из-за аварийного завершения работы пользователей или сбоев рабочих процессов. Информация о распределении лицензий хранится сервером в специальном файле 1cv8conn.pfl.
Если вы видите, что реальных пользователей мало, а лицензий нет, попробуйте следующий алгоритм:
1cv8conn.pfl (обычно находится в папке с данными кластера reg_1541).conf от временных файлов (кроме conf.cfg).После этой процедуры сервер заново проинициализирует список доступных лицензий и пересчитает текущие сеансы, что часто помогает вернуть «потерянные» ключи в оборот.
Выясним причину, связанную с самим типом активации. Программные лицензии номиналом более чем на 1 пользователя (например, ваши 20, 15 и 5) могут быть активированы двумя способами:
Если лицензии были активированы как однопользовательские, но установлены на сервер, они могут выдаваться только в режиме «один сеанс = одна лицензия» вне зависимости от настроек клиента. Убедитесь, что при активации использовался именно многопользовательский пин-код, предназначенный для сервера 1С.
Соблюдение этих рекомендаций — переход на клиентскую выдачу лицензий в терминале, использование сервиса лицензирования и контроль COM-соединений — позволит вам эффективно использовать имеющийся пул из 70 лицензий без необходимости покупки дополнительных ключей.