Как настроить один сервер лицензирования для работы с двумя и более кластерами 1С:Предприятие?

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

В крупных информационных системах часто возникает необходимость оптимизации ресурсов, а также замера производительности контура 1С и поиска узких мест. Одним из таких сценариев является использование единого физического или виртуального сервера для раздачи лицензий сразу на несколько независимых кластеров 1С (например, для рабочего контура Production и тестового Pre-production). Однако при стандартном подключении системные администраторы часто сталкиваются с тем, что в одном из кластеров рабочий процесс сервера лицензий остается неактивным, не получает порт и не выдает лицензии пользователям.

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

Разбор архитектуры: почему возникает конфликт?

Давайте разберем внутренние механизмы платформы 1С. Когда мы добавляем сервер в консоль администрирования кластера и назначаем ему роль сервера лицензирования, менеджер кластера (процесс rmngr) пытается взять этот сервер под свой контроль. Основная проблема заключается в «праве владения» конфигурационными файлами.

Если на сервере лицензирования запущен один экземпляр службы ragent (агент сервера), он работает с определенным каталогом данных (по умолчанию это C:\Program Files\1cv8\srvinfo). Для понимания структуры хранения данных полезно изучить информацию по рабочему каталогу центрального сервера (srvinfo) и методах его очистки. В этом каталоге хранится файл реестра кластера srvribrg.lst. Когда два разных управляющих кластера пытаются одновременно прописать свои настройки в этот файл и управлять рабочими процессами одного и того же агента, возникает конфликт идентификаторов (ClusterID). В результате один кластер «вытесняет» другой, и рабочий процесс (wp) во втором кластере просто не может стартовать, так как агент сервера уже занят обслуживанием первого реестра.

Решение №1: Запуск нескольких экземпляров службы ragent (рекомендуемый способ)

Проанализируем самый надежный метод решения проблемы — разделение экземпляров агентов сервера на уровне операционной системы. Чтобы одна машина обслуживала два кластера, мы запустим на ней две независимые службы 1С, которые будут работать на разных портах и иметь разные каталоги данных.

Рассмотрим пошагово процесс создания второй службы для кластера Pre-prod:

  1. Определим порты: Если первая служба использует стандартный порт 1540, для второй выберем, например, 1640.
  2. Подготовим каталог данных: Создадим отдельную папку, например, C:\1C_Data\PreProd_Lic.
  3. Регистрация новой службы: Воспользуемся командой sc create в командной строке от имени администратора.

Посмотрим на пример команды для создания службы:


sc create "1C:Enterprise 8.3 Server Licensing PreProd" binPath= "\"C:\Program Files\1cv8\8.3.25.1394\bin\ragent.exe\" -srvc -agent -regport 1641 -port 1640 -range 1660:1691 -d \"C:\1C_Data\PreProd_Lic\"" start= auto obj= "Domain\ServiceUser" password= "Password123"

Разберем параметры, которые мы использовали:

Решение №2: Настройка требований назначения функциональности (ТНФ)

После того как службы запущены, нам необходимо правильно сконфигурировать требования назначения функциональности в консоли администрирования. Вы можете использовать стандартную MMC, утилиту rac или современный OneS Cluster Admin — кроссплатформенную консоль администрирования кластера серверов 1С. Это гарантирует, что сервер будет выполнять только роль лицензирования, не отвлекаясь на другие задачи кластера.

Выполним следующие шаги в консоли для каждого кластера:

  1. Перейдем в раздел Рабочие серверы и выберем наш сервер лицензирования.
  2. Откроем пункт Требования назначения функциональности.
  3. Создадим новое правило для сервиса LicenseService.
  4. Установим тип требования: «Назначать» (или «Выполнять везде»), а значение параметра «Имя сервиса» укажем как LicenseService.
  5. Для всех остальных сервисов (таких как DataService, SessionService и др.) рекомендуется создать запрещающее правило с типом «Не назначать». Это позволит высвободить ресурсы сервера, так как на нем не будут запускаться лишние менеджеры и рабочие процессы.

Выясним причину, по которой рабочий процесс может оставаться неактивным даже после этих действий. Часто это связано с тем, что в ветке «Рабочие процессы» для данного сервера пусто. В таком случае попробуйте создать рабочий процесс вручную. Для оперативного контроля и очистки зависших ресурсов можно использовать WEB приложение для управления сеансами сервера и завершения процессов rphost.

Особенности работы с программными лицензиями

Важно помнить, что программные лицензии (файлы .lic) привязываются к параметрам оборудования. Если вы используете сервис лицензирования, сами файлы лицензий должны физически находиться на сервере, где запущен LicenseService. Для специалистов будет актуальна методика установки комьюнити-лицензии разработчика на сервер 1С с возможностью автоматического продления.

Проанализируем ситуацию с правами доступа. Пользователь, от имени которого запущены службы ragent, должен иметь полные права на чтение и запись в папку ALLUSERSPROFILE\Application Data\1C\1cv8\conf (или соответствующую папку в Local Settings), так как именно там по умолчанию система ищет лицензии. Если одна служба запущена от имени System, а вторая от LocalService, они могут «видеть» разные наборы файлов лицензий. Рекомендуется использовать одного и того же доменного пользователя для всех служб лицензирования на этой машине.

Диагностика типичных ошибок

Если вы видите ошибку «Не найдено ни одного сервера с размещенным сервисом serviceName=LicenseService», выполните следующие проверки:

Таким образом, мы выяснили, что схема с одним сервером лицензирования на два кластера вполне работоспособна. Ключом к успеху является изоляция управляющих служб через разные порты и каталоги данных, а также четкая настройка требований назначения функциональности. Следуя этим инструкциям, вы сможете создать гибкую и отказоустойчивую инфраструктуру для ваших баз 1С.

← На главную