При администрировании систем на базе 1С:Предприятие часто возникает ситуация, когда на одном физическом или виртуальном сервере необходимо запустить несколько информационных баз, использующих разные комплекты программных лицензий. Например, одна база должна работать исключительно с лицензиями из одного файла .lic, а другая — из другого, не «забирая» лишние места. В стандартной поставке версии ПРОФ платформа 1С стремится объединить все найденные лицензии в общий пул, что может быть нежелательно. Разберем подробно, как можно решить эту задачу техническими средствами.
Прежде чем переходить к решениям, проанализируем, как сервер 1С ищет лицензии. По умолчанию менеджер лицензий кластера сканирует стандартные пути (папки conf в каталоге установки, профили пользователей и общие программные данные). Все найденные файлы .lic суммируются. Если у вас есть две лицензии по 5 рабочих мест, сервер будет видеть их как одну на 10 мест. В версии ПРОФ отсутствуют штатные инструменты для указания конкретной базе, какой файл лицензии ей использовать. Рассмотрим способы обхода этого ограничения.
Это один из самых надежных методов физической изоляции лицензий на уровне операционной системы. Идея заключается в том, чтобы создать две независимые службы сервера 1С, работающие на разных портах и от имени разных системных пользователей.
Рассмотрим по шагам процесс настройки второго экземпляра сервера:
USR1CV8_Base2).sc, создадим новую службу. Нам нужно указать альтернативные порты (по умолчанию используются 1540, 1541, 1560-1591). Для второго экземпляра выберем, например, порты, начинающиеся с 1640.
sc create "1C:Enterprise 8.3 Server Second" binpath= "C:\Program Files\1cv8\8.3.22.1709\bin\ragent.exe -srvc -agent -regport 1641 -port 1640 -range 1660:1691 -d \"C:\Program Data\1C\1cv8_base2\"" start= auto obj= ".\USR1CV8_Base2" password= "YourPassword"
После создания службы выполним следующие действия:
AppData\Local\1C\1cv8\Conf).USR1CV8_Base2.Важный нюанс: поскольку службы запущены от разных пользователей, каждая из них будет видеть только те лицензии, которые находятся в «ее» профиле или в общих папках, куда у другого пользователя нет доступа (нужно настроить права доступа к папкам C:\ProgramData\1C\Licenses так, чтобы службы не пересекались).
Выясним, как можно управлять поиском лицензий без создания новых служб. В платформе 1С существует файл conf.cfg, который располагается в каталоге bin\conf. Мы можем использовать параметр ConfLocation для переопределения путей поиска.
Проанализируем ситуацию с использованием веб-сервера (Apache или IIS). Если файловая база опубликована через Apache, мы можем настроить для каждой публикации свой путь к конфигурационным файлам. Это позволит указать конкретный каталог с лицензиями для конкретной веб-публикации.
Пример структуры файла conf.cfg для перенаправления:
ConfLocation=C:\1C_Settings\Base1\conf
В указанном каталоге можно разместить индивидуальный файл nethasp.ini или управлять расположением программных лицензий. Однако стоит учитывать, что этот метод чаще применяется для тонких клиентов и веб-серверов, чем для самого сервера приложений.
Иногда задача состоит в том, чтобы база вообще не брала лицензии с сервера, а использовала только локальные лицензии пользователей (или лицензии, установленные на веб-сервере). Разберем, как это настроить:
В этом случае, при подключении к данной базе, сервер 1С не будет пытаться выделить лицензию из своего пула. Клиентское приложение (толстый или тонкий клиент) будет обязано самостоятельно найти лицензию локально на компьютере пользователя. Для файловых баз, работающих через веб-сервер, лицензия будет искаться в профиле пользователя, под которым запущен процесс веб-сервера (например, www-data в Linux или IUSR/DefaultAppPool в Windows).
Посмотрим на ситуацию со стороны версии КОРП. Если у вас установлена лицензия уровня КОРП, задача решается штатными средствами без «хаков» с пользователями ОС. В кластере 1С КОРП реализован механизм Профилей управления ресурсами.
Алгоритм настройки выглядит так:
Это позволяет жестко связать конкретный рабочий процесс (и, соответственно, его лицензии) с определенной информационной базой. Для версии ПРОФ этот функционал будет отображаться в консоли, но настройки применяться не будут.
Если ваша файловая база работает через Apache, проанализируем механизм изоляции. Чтобы одна база не видела лицензии другой, можно запустить два разных экземпляра Apache как разные службы от разных системных пользователей. Это аналогично методу с двумя службами сервера 1С. Каждый экземпляр Apache будет иметь доступ только к «своим» файлам лицензий в папке AppData соответствующего пользователя.
Подводя итог, можно сказать, что для версии ПРОФ наиболее эффективным методом является разделение служб сервера 1С по разным портам и пользователям ОС. Рассмотрим основные правила при реализации этого подхода:
C:\ProgramData\1C\Licenses. Платформа 1С очень чувствительна к возможности записи в эти каталоги.-d в строке запуска службы ragent.exe, чтобы разнести каталоги настроек кластеров. Это исключит конфликты кэша и конфигурационных файлов.Таким образом, комбинируя настройки прав доступа ОС, параметры запуска служб и настройки самих информационных баз в консоли, мы можем добиться требуемой изоляции лицензионных ресурсов на одном сервере.