Несколько рабочих серверов в одном кластере 1С:Предприятия 8.3

· 11 мин

Содержание

Чтобы сделать кластер серверов 1С из нескольких машин, установите на каждую одну и ту же версию платформы с компонентом «Сервер 1С:Предприятия 8», запустите на всех службу агента, а затем в консоли центрального сервера добавьте остальные машины в кластер как рабочие серверы: Кластеры → <ваш кластер> → Рабочие серверы → Действие → Создать → Рабочий сервер. Дальше настраиваются уровень отказоустойчивости, флаги центральных серверов и требования назначения функциональности.

Создание кластера на одной машине происходит само: при первом запуске агент на порту 1540 создаёт «Локальный кластер» на порту 1541. Вся работа — в том, чтобы правильно подключить к нему вторую, третью машину и распределить между ними нагрузку. Инструкция ниже для платформы 8.3 на Windows Server 2016 и новее, для Linux отличаются только установка и управление службой.

Из чего состоит кластер серверов 1С

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

ПроцессПорт по умолчаниюРоль
ragent.exe — агент сервера1540Принимает первое обращение клиента и консоли, хранит список кластеров
rmngr.exe — менеджер кластера1541Распределяет соединения, ведёт реестр кластера, сервисы (блокировки, журнал регистрации и др.)
rphost.exe — рабочий процесс1560–1591Выполняет серверный код, работает с СУБД
ras.exe — сервер администрирования1545Нужен для утилиты rac и сторонних консолей

Клиент обращается к агенту на 1540, тот передаёт его менеджеру кластера на 1541, а менеджер направляет соединение в один из рабочих процессов из диапазона портов. Диапазон портов рабочих процессов задаётся в свойствах каждого рабочего сервера, не кластера.

Ещё два понятия, без которых не обойтись:

  • 🖥️ Центральный сервер — рабочий сервер с флагом «Центральный сервер». Он хранит копию реестра кластера и может им управлять. Таких серверов может быть несколько.
  • 🗂️ Реестр кластера — файл 1CV8Clst.lst в каталоге srvinfo\reg_1541. В нём список баз, рабочих серверов, администраторов, профилей безопасности. Центральные серверы синхронизируют его между собой.

Отдельная СУБД (MS SQL Server или PostgreSQL) в кластер не входит. Её ставят на свою машину или на один из серверов, но рабочие процессы всех машин ходят в одну и ту же базу данных.

Что даёт кластер из нескольких машин

  • ⚖️ Балансировку: новые соединения уходят на менее загруженный сервер.
  • 🛡️ Отказоустойчивость: при падении одной машины пользователи переподключаются к оставшимся.
  • 🎯 Разнесение задач: например, фоновые задания и регламентные операции на одном сервере, пользовательские сеансы на другом.

Когда кластер из нескольких серверов не нужен

Если пользователей 20–50 и один сервер справляется по процессору и памяти, второй рабочий сервер почти ничего не даст. Узким местом в таких системах чаще бывает СУБД или диск, а не рабочие процессы 1С. Для отказоустойчивости второй сервер оправдан, для производительности сначала посмотрите загрузку.

Учтите лицензирование. Лицензия на сервер привязывается к каждому рабочему серверу, где работают процессы. Отказоустойчивый кластер и требования назначения функциональности относятся к возможностям лицензии уровня КОРП, на ПРОФ эти настройки недоступны.

Подготовка серверов и сети к созданию кластера

Большая часть проблем при развёртывании — не в 1С, а в сети и именах. Пройдите этот список до установки платформы.

Перед созданием кластера серверов 1С
Выполнено: 0 / 7

Имена компьютеров

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

В домене это решает DNS. Без домена пропишите все серверы кластера в C:\Windows\System32\drivers\etc\hosts на каждом сервере и на терминальных серверах, откуда работают пользователи:

192.168.10.11   srv1c-01
192.168.10.12   srv1c-02

Брандмауэр

Правило для входящих соединений на каждом сервере кластера:

netsh advfirewall firewall add rule name="1C Server" dir=in action=allow protocol=TCP localport=1540-1541,1560-1591

Если используете ras, добавьте порт 1545, но откройте его только для машин администраторов.

Учётная запись службы

По умолчанию установщик создаёт локального пользователя USR1CV8. Для одной машины этого хватает. В кластере из нескольких серверов удобнее доменная учётная запись: ей проще дать права на каталог srvinfo, на сетевые каталоги для выгрузок и вход в СУБД через проверку подлинности Windows.

Установка платформы и главного сервера кластера

Начните с машины, которая станет первым центральным сервером.

  1. Запустите setup.exe из дистрибутива технологической платформы (сервер 64-разрядный).
  2. В списке компонентов включите «Сервер 1С:Предприятия 8» и «Администрирование сервера 1С:Предприятия». Клиент на сервер ставить не обязательно.
  3. Отметьте «Установить 1С:Предприятие 8 как сервис Windows » и укажите учётную запись службы.
  4. После установки проверьте в services.msc, что служба «Агент сервера 1С:Предприятия 8.3» запущена.
  5. Зарегистрируйте оснастку консоли: из меню «Пуск» запустите «Регистрация утилиты администрирования серверов» от имени администратора. Если пункта нет, выполните команду вручную:
regsvr32 "C:\Program Files\1cv8\8.3.25.1374\bin\radmin.dll"

Номер каталога подставьте свой. После каждого обновления платформы radmin.dll нужно регистрировать заново из новой версии, иначе консоль не подключится к агенту новой сборки.

  1. Откройте «Администрирование серверов 1С Предприятия», правой кнопкой по «Central 1C:Enterprise 8.3 servers» → Создать → Центральный сервер 1С:Предприятия 8.3, укажите имя машины и порт 1540.

В дереве появится «Локальный кластер». Его можно переименовать в свойствах, порт 1541 менять без причины не стоит.

Администраторы агента и кластера

Сразу после установки консоль пускает всех. Закройте это:

  1. Ветка Администраторы под центральным сервером — создайте администратора агента (имя и пароль или пользователь ОС).
  2. Ветка Администраторы внутри кластера — создайте администратора кластера.

Запишите пароли в хранилище паролей компании. Восстановить потерянный пароль администратора кластера «кнопкой» нельзя: придётся останавливать службу и возвращать файл реестра из резервной копии.

Регистрация базы

Кластер → Информационные базы → Создать → Информационная база: имя базы в кластере, тип СУБД, сервер СУБД, имя базы данных, пользователь СУБД. Для новой пустой базы отметьте «Создать базу данных в случае ее отсутствия». Базы регистрируются один раз на кластер, а не на каждый рабочий сервер.

Подключение рабочих серверов к кластеру

Теперь вторая машина.

  1. Установите на неё ту же самую сборку платформы, вплоть до последней цифры, с тем же компонентом сервера и как сервис Windows.
  2. Убедитесь, что служба агента запустилась и порт 1540 слушается: netstat -ano | findstr 1540.
  3. Регистрировать radmin.dll здесь не обязательно: управлять кластером будете с центрального сервера.

Агент на новой машине при первом старте создаст свой «Локальный кластер». Он не мешает, если в нём нет баз, но путает при администрировании. Не регистрируйте в нём базы.

Добавление рабочего сервера в консоли

На центральном сервере в консоли:

  1. Раскройте Кластеры → <ваш кластер> → Рабочие серверы.
  2. Действие → Создать → Рабочий сервер.
  3. Заполните поля:
    • Имя — любое понятное, например srv1c-02;
    • Компьютер — сетевое имя машины, ровно как оно разрешается по DNS или hosts;
    • IP-порт — 1540 (порт агента на той машине);
    • Диапазоны IP-портов — 1560:1591;
    • Порт главного менеджера кластера — 1541.
  4. Отметьте «Центральный сервер», если машина должна хранить копию реестра и подстраховывать главную.
  5. Нажмите ОК.

Через несколько секунд на новом сервере появятся процессы rmngr.exe и rphost.exe, а в консоли в ветке Рабочие процессы — процессы обеих машин.

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

Параметры рабочего сервера, которые стоит выставить сразу

ПараметрЧто задаётПрактический ориентир
Количество ИБ на процессСколько баз обслуживает один rphost1–8; при многих базах меньшее значение изолирует их друг от друга
Количество соединений на процессСколько соединений держит процесс до запуска следующегоПо умолчанию 256
Максимальный объём памяти рабочих процессовПорог памяти всех процессов сервераОколо 80% ОЗУ машины за вычетом СУБД, если она стоит там же
Безопасный расход памяти за один вызовЗащита от «тяжёлого» вызова, съедающего памятьЗадайте явно, чтобы один отчёт не уронил сервер
Менеджер под каждый сервисОтдельный rmngr на каждый сервис кластераВключают на нагруженных системах, когда один менеджер становится узким местом

Отказоустойчивость, балансировка и профили безопасности

Уровень отказоустойчивости

В свойствах кластера есть поле «Уровень отказоустойчивости». Значение N означает, что кластер переживёт одновременный отказ N центральных серверов. Для этого центральных серверов должно быть минимум N+1.

Пример: три машины, все с флагом «Центральный сервер», уровень 1. Выключение любой из них не останавливает работу, сервисы кластера поднимаются на оставшихся. Пользователи, чьи сеансы были на упавшей машине, получат сообщение о разрыве соединения и переподключатся.

Режим распределения нагрузки в свойствах кластера: «Приоритет по производительности» (по умолчанию) или «Приоритет по памяти», когда важнее не допустить нехватки ОЗУ.

Требования назначения функциональности

Это главный инструмент разнесения задач. Задаются в свойствах рабочего сервера, ветка Требования назначения функциональности под конкретным сервером.

Каждое требование содержит:

  • Тип объекта — например, «Клиентское соединение с ИБ», «Фоновое задание», «Сервис журналов регистрации», «Любой объект требования»;
  • Имя ИБ — пусто для всех баз или конкретная база;
  • Тип требования — «Назначать», «Не назначать» или «Авто».

Типовая схема на двух серверах:

Как разнести нагрузку между двумя рабочими серверами?

После изменения требований нажмите в ветке рабочего сервера команду применения требований — с полной или частичной перестройкой. Полная перестройка переносит уже открытые соединения и может оборвать часть сеансов, поэтому делайте её вне рабочего времени.

Профили безопасности

Ветка Профили безопасности внутри кластера. Профиль ограничивает, что код конфигурации и внешних обработок может делать на сервере: доступ к файловой системе, COM-объектам, внешним компонентам, интернет-ресурсам.

Порядок: создайте профиль, разрешите в нём только нужные каталоги и ресурсы, затем в свойствах информационной базы выберите его в поле «Профиль безопасности». Для внешних обработок есть отдельное поле «Профиль безопасности безопасного режима». Полезно на кластере, куда пользователи загружают обработки из интернета.

Мониторинг кластера и диагностика

Через консоль

  • 📊 Ветка Рабочие процессы: у каждого процесса видны занятая память, число соединений, среднее время вызова и флаг «Доступен». Процесс, который долго висит недоступным, — первый кандидат на разбор.
  • 👥 Ветка Сеансы: кто на каком сервере и процессе, какое приложение, сколько памяти и времени вызова потребил.
  • 🔒 Ветка Блокировки: управляемые блокировки по базам.

Через rac

Утилита rac удобна для скриптов и мониторинга. Ей нужен запущенный ras:

ras.exe cluster --port=1545 localhost:1540

Дальше из другой консоли:

rac localhost:1545 cluster list
rac localhost:1545 server list --cluster=<uuid-кластера>
rac localhost:1545 process list --cluster=<uuid-кластера>
rac localhost:1545 session list --cluster=<uuid-кластера>

Если на кластере заданы администраторы, добавьте --cluster-user и --cluster-pwd. Полный список команд и ключей показывает rac help.

Технологический журнал

Для разбора долгих запросов и падений процессов включают технологический журнал файлом logcfg.xml в каталоге bin\conf установленной платформы на каждом рабочем сервере. Платформа подхватывает изменения файла без перезапуска службы. Журнал быстро растёт: ограничьте срок хранения параметром history и включайте только нужные события.

Для постоянного наблюдения кластер подключают к внешней системе мониторинга через rac или счётчики производительности Windows. Консоль хороша для разовой проверки, но истории не хранит.

Ошибки при развёртывании кластера и как их найти

Диагностика: выберите симптом

Обновление платформы на кластере

Обновлять приходится все серверы сразу: машины с разными сборками в одном кластере работать не будут. Порядок такой: предупредить пользователей, остановить службы агентов на всех серверах (все сеансы будут разорваны, делайте это в нерабочее время), установить новую сборку на каждую машину, запустить службы, перерегистрировать radmin.dll. Клиентские места тоже должны получить новую версию, иначе они не подключатся к серверу.

Перед обновлением скопируйте каталог srvinfo с центрального сервера. Это и есть резервная копия реестра кластера: списка баз, администраторов и настроек.

Частые вопросы

Можно ли собрать кластер из серверов на Windows и Linux?
Технически рабочие серверы на разных ОС могут входить в один кластер, если на них одна и та же сборка платформы. На практике такие схемы сложнее сопровождать: разные пути, службы и учётные записи.
Нужна ли лицензия на каждый рабочий сервер кластера?
Да. Серверная лицензия нужна каждому рабочему серверу, на котором выполняются рабочие процессы. Клиентские лицензии при этом общие и выдаются из любого места, доступного кластеру.
Сколько центральных серверов делать?
Для уровня отказоустойчивости 1 достаточно двух. Три центральных сервера нужны, если вы хотите пережить отказ одной машины во время планового обслуживания другой.
Можно ли держать на одной машине два кластера?
Да. Второй кластер создают в консоли под тем же агентом с другим портом менеджера, например 2541, и другим диапазоном портов рабочих процессов. Так разделяют тестовые и рабочие базы.
Отказоустойчивость кластера 1С защищает от падения СУБД?
Нет. Кластер 1С резервирует только свои процессы. Для СУБД нужна своя схема: Always On у MS SQL Server или реплика у PostgreSQL.