В процессе администрирования крупных систем 1С часто возникает необходимость разделения ресурсов или изоляции информационных баз друг от друга. Одним из эффективных способов достижения этой цели является создание нескольких кластеров в рамках одного экземпляра службы сервера 1С:Предприятие. В этой статье мы подробно разберем, как реализовать такую схему в рамках концепции защищенной IT инфраструктуры, решим типовые ошибки подключения и проанализируем влияние такой архитектуры на производительность и лицензирование.
При попытке добавить информационную базу во второй (нестандартный) кластер через клиентское приложение «1С:Предприятие», пользователи часто сталкиваются с ошибкой: Этот хост неизвестен. line=585 file=src\core\src\Networking.cpp. Расследовать такие инциденты поможет перенос логов технологического журнала в ClickHouse. Проанализируем ситуацию: по умолчанию клиент ищет менеджер кластера на порту 1541. Если вы создали второй кластер, он автоматически или вручную получил другой порт (например, 1542).
Важное правило: Имя кластера, которое вы задаете в консоли администрирования (например, «Test_Cluster»), является лишь описательным заголовком для администратора. Протокол передачи данных 1С ничего не знает об этом имени при установке соединения. Чтобы успешно создать базу или подключиться к ней, в поле «Сервер 1С:Предприятия» необходимо указывать адрес в формате: ИмяСервера:ПортКластера.
Рассмотрим пример. Если ваш основной сервер называется LOCALSRV, а второй кластер поднят на порту 1542, то строка соединения в мастере создания базы должна выглядеть так:
LOCALSRV:1542
Для стабильной работы нескольких кластеров нам необходимо понимать, как служба «Агент сервера» (ragent.exe) распределяет порты. Все ключевые параметры задаются в строке запуска службы. Рассмотрим, как это выглядит в реестре Windows. Путь к параметру:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.3 Server Agent\ImagePath
В параметре ImagePath мы увидим примерно следующую строку, а выявление списка баз из папки REG_XXXX поможет сопоставить данные в каталоге srvinfo:
"C:\Program Files\1cv8\8.3.XX.XXXX\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo"
Разберем основные ключи, которые важны при масштабировании:
rphost). По умолчанию здесь выделено 32 порта.Выясним причину возможного дефицита ресурсов: каждый новый кластер запускает свой процесс rmngr.exe, а каждая база или группа баз внутри кластера — один или несколько rphost.exe. Если у вас 10 кластеров и в каждом активно работают базы, стандартного диапазона 1560:1591 может не хватить. В этом случае рабочие процессы просто не смогут запуститься. Рекомендуем расширять диапазон заранее, например, до 1560:1999, изменив значение в реестре и перезапустив службу.
Зачем нагружать сервер лишними процессами менеджеров кластера? Рассмотрим основные выгоды для системного администратора:
1. Упрощение мониторинга. В диспетчере задач или мониторе ресурсов каждый кластер представлен отдельным процессом rmngr.exe. Если одна из групп баз начинает аномально потреблять ресурсы или «течь» по памяти, администратору гораздо проще идентифицировать проблемный сегмент.
2. Изоляция критических сред. Вы можете вынести тяжелые тестовые базы или базы для разработки в отдельный кластер. В случае критического сбоя в коде, который приведет к падению менеджера кластера, рабочие базы (Production), находящиеся в другом кластере, продолжат функционировать в штатном режиме.
3. Разделение по владельцам баз данных. Как отмечают опытные специалисты, для каждой информационной базы в разных кластерах можно настроить своих пользователей MS SQL Server. Это позволяет еще глубже анализировать нагрузку уже на стороне СУБД.
Проанализируем вопрос лицензионной чистоты и функциональных ограничений. Технически платформа 1С позволяет создавать несколько кластеров на лицензии уровня ПРОФ. Однако, вы столкнетесь с отсутствием инструментов тонкой настройки:
rphost и их автоматический перезапуск по расписанию или достижению лимитов также являются прерогативой КОРП-лицензий.Если ваша задача — просто визуально разделить базы по портам для удобства администрирования, лицензии ПРОФ будет достаточно. Если же требуется балансировка нагрузки между кластерами и жесткое ограничение ресурсов — необходим переход на КОРП.
Многих волнует вопрос: нужно ли останавливать службу сервера 1С для добавления или удаления кластера? Ответ: нет, не нужно.
Рассмотрим алгоритм действий при удалении кластера:
Для автоматизации этих процессов мы рекомендуем использовать утилиту rac и службу ras (Remote Administration Service). Это позволит создавать базы и управлять кластерами с помощью скриптов, что особенно полезно при наличии десятков однотипных окружений.
Пример команды для создания базы в конкретном кластере через rac (предположим, что ras запущен на порту 1545):
rac infobase --cluster=UUID_ВАШЕГО_КЛАСТЕРА create --name=BaseName --dbms=MSSQLServer --db-server=SQL_SRV --db-name=SQL_DB_NAME --db-user=sa --db-pwd=password --license-distribution=allow
Посмотрим на практический совет по организации портов. Чтобы не запутаться в дереве консоли, старайтесь придерживаться четкой логики. Хорошей практикой считается разнесение портов менеджеров кластера с шагом 10 или 100:
15411551 (или 1641)1561 (или 1741)Такой подход минимизирует риск случайных пересечений и делает структуру сервера интуитивно понятной для любого системного администратора, который будет обслуживать систему после вас.