В практике администрирования систем на базе 1С:Предприятие нередко возникает задача запуска нескольких независимых экземпляров сервера приложений на одном физическом или виртуальном сервере. Это может потребоваться для разделения тестовых и рабочих сред, работы с разными версиями платформы или оптимизации нагрузки. Однако при реализации такой схемы администраторы часто сталкиваются с тем, что вторая служба «просит» дополнительную лицензию или отказывается запускаться корректно. В данной статье мы подробно разберем, как правильно настроить несколько служб и как работает лицензионная политика 1С в таких случаях.
Разберем фундаментальный вопрос: требуется ли вторая серверная лицензия для второй службы? Согласно официальной позиции и технической реализации системы защиты, одна серверная лицензия (как аппаратная HASP, так и программная) дает право на запуск неограниченного количества рабочих процессов и экземпляров службы 1С:Предприятие в рамках одной операционной среды (одного экземпляра ОС). Рассмотрим основные правила:
.lic привязывается к параметрам сервера (имя, процессор, ОС). Поскольку при запуске второй службы эти параметры не меняются, все экземпляры сервера 1С будут успешно использовать одну и ту же активированную лицензию.Для корректной работы двух и более служб недостаточно просто изменить порты в настройках. Проанализируем ключевые параметры, которые должны быть уникальными для каждого экземпляра.
1. Уникальный каталог данных кластера (параметр -d)
Каждая служба должна иметь свой собственный каталог реестра кластера. Это место, где хранятся списки баз, настройки рабочих процессов и сеансов. Если запустить вторую службу с тем же путем к данным, что и у первой, возникнет критический конфликт доступа к файлам 1CV8Reg.lst. Выясним, как это настроить при создании службы через командную строку:
sc create "1C:Enterprise 8.3 Server Second" binPath= "\"C:\Program Files\1cv8\8.3.22.1709\bin\ragent.exe\" -srvc -agent -regport 2541 -port 2540 -range 2560:2591 -d \"C:\ProgramData\1C\1cv8_second\"" displayname= "1C:Enterprise 8.3 Server Second" depend= tcpip start= auto
В этом примере мы создаем новую службу с именем 1C:Enterprise 8.3 Server Second и указываем ей путь к новому каталогу данных C:\ProgramData\1C\1cv8_second. Обратите внимание на кавычки и пробелы — это частая причина ошибок при регистрации службы.
2. Разделение портов
Проанализируем стандартный набор портов 1С. По умолчанию это 1540 (агент сервера), 1541 (менеджер кластера) и диапазон 1560-1591 (рабочие процессы). Для второй службы необходимо выделить новый диапазон. Рассмотрим типичную схему смещения:
-port): 2540-regport): 2541-range): 2560:2591Если технически всё настроено верно, но сервер всё равно сообщает об отсутствии лицензии, проанализируем возможные причины, основываясь на опыте решения подобных инцидентов.
Конфликт идентификаторов баз
Рассмотрим специфическую ситуацию: если вы копировали файлы реестра кластера (папку snccntry.lst и другие) из одной службы в другую, идентификаторы информационных баз могут дублироваться. Это приводит к тому, что менеджер лицензий или сам сервер 1С начинает «путаться» в объектах защиты. В такой ситуации рекомендуется:
-d), оставив его пустым.Права доступа системной учетной записи
Выясним причину, связанную с правами. Часто службы запускаются от имени разных пользователей (например, USR1CV8 и LocalSystem). Если программные лицензии расположены в папке C:\ProgramData\1C\Licenses, убедитесь, что у обоих пользователей есть права на чтение этой директории. В противном случае одна служба увидит лицензию, а вторая — нет.
В версиях платформы, начиная с 8.3.15, мы можем применить более элегантное решение — выделенный сервис лицензирования. Рассмотрим его преимущества:
Это отдельное приложение (служба), которое централизованно управляет выдачей лицензий. Вместо того чтобы настраивать каждый кластер на поиск ключей или файлов .lic, мы можем указать в настройках каждого экземпляра сервера адрес этого сервиса. Это полностью снимает вопросы о том, видит ли конкретная служба ragent аппаратный ключ или файл лицензии.
Для настройки взаимодействия с сервисом лицензирования в консоли администрирования кластера необходимо:
Подводя итог, повторим алгоритм действий для успешного запуска второй службы без покупки новой лицензии:
Во-первых, убедитесь, что разрядность устанавливаемой службы совпадает с имеющейся лицензией. Если ключ 64-битный, он покроет любую службу. Если 32-битный — 64-битная служба работать не будет.
Во-вторых, при регистрации службы через sc create обязательно задавайте уникальный путь к данным (-d) и уникальные порты (-port, -regport, -range). Никогда не используйте общую папку данных для разных служб.
В-третьих, если возникают ошибки с лицензиями, проверьте, не дублируются ли UID баз в списке. Как показал опыт обсуждения на форуме, это одна из неочевидных причин «глюков» системы защиты. Также проанализируйте содержимое файла nnhsrv.ini, если используете сетевые ключи HASP — возможно, требуется явно указать IP-адрес сервера с ключом для каждой службы.
Соблюдение этих правил позволит вам эффективно использовать ресурсы одного физического сервера, запуская необходимое количество экземпляров 1С:Предприятия в рамках существующего лицензионного пакета.