Несколько рабочих серверов в одном кластере 1С:Предприятия 8.3
Содержание
Чтобы сделать кластер серверов
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С, а в сети и именах. Пройдите этот список до установки платформы.
Имена компьютеров
Рабочие серверы регистрируются в кластере по имени компьютера. Клиент получает это имя от менеджера кластера и подключается по нему напрямую. Если имя не разрешается с клиентской машины, сеанс не установится, хотя агент на 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.
Установка платформы и главного сервера кластера
Начните с машины, которая станет первым центральным сервером.
- Запустите
setup.exeиз дистрибутива технологической платформы (сервер 64-разрядный). - В списке компонентов включите «Сервер 1С:Предприятия 8» и «Администрирование сервера 1С:Предприятия». Клиент на сервер ставить не обязательно.
- Отметьте «Установить 1С:Предприятие 8 как сервис Windows » и укажите учётную запись службы.
- После установки проверьте в
services.msc, что служба «Агент сервера 1С:Предприятия 8.3» запущена. - Зарегистрируйте оснастку консоли: из меню «Пуск» запустите «Регистрация утилиты администрирования серверов» от имени администратора. Если пункта нет, выполните команду вручную:
regsvr32 "C:\Program Files\1cv8\8.3.25.1374\bin\radmin.dll"
Номер каталога подставьте свой. После каждого обновления платформы radmin.dll нужно регистрировать заново из новой версии, иначе консоль не подключится к агенту новой сборки.
- Откройте «Администрирование серверов 1С Предприятия», правой кнопкой по «Central 1C:Enterprise 8.3 servers» →
Создать → Центральный сервер 1С:Предприятия 8.3, укажите имя машины и порт 1540.
В дереве появится «Локальный кластер». Его можно переименовать в свойствах, порт 1541 менять без причины не стоит.
Администраторы агента и кластера
Сразу после установки консоль пускает всех. Закройте это:
- Ветка
Администраторыпод центральным сервером — создайте администратора агента (имя и пароль или пользователь ОС). - Ветка
Администраторывнутри кластера — создайте администратора кластера.
Запишите пароли в хранилище паролей компании. Восстановить потерянный пароль администратора кластера «кнопкой» нельзя: придётся останавливать службу и возвращать файл реестра из резервной копии.
Регистрация базы
Кластер → Информационные базы → Создать → Информационная база: имя базы в кластере, тип СУБД, сервер СУБД, имя базы данных, пользователь СУБД. Для новой пустой базы отметьте «Создать базу данных
в случае ее отсутствия». Базы регистрируются один раз на кластер, а не на каждый рабочий сервер.
Подключение рабочих серверов к кластеру
Теперь вторая машина.
- Установите на неё ту же самую сборку платформы, вплоть до последней цифры, с тем же компонентом сервера и как сервис Windows.
- Убедитесь, что служба агента запустилась и порт 1540 слушается:
netstat -ano | findstr 1540. - Регистрировать
radmin.dllздесь не обязательно: управлять кластером будете с центрального сервера.
Агент на новой машине при первом старте создаст свой «Локальный кластер». Он не мешает, если в нём нет баз, но путает при администрировании. Не регистрируйте в нём базы.
Добавление рабочего сервера в консоли
На центральном сервере в консоли:
- Раскройте
Кластеры → <ваш кластер> → Рабочие серверы. Действие → Создать → Рабочий сервер.- Заполните поля:
- Имя — любое понятное, например
srv1c-02; - Компьютер — сетевое имя машины, ровно как оно разрешается по DNS или
hosts; - IP-порт — 1540 (порт агента на той машине);
- Диапазоны IP-портов —
1560:1591; - Порт главного менеджера кластера — 1541.
- Имя — любое понятное, например
- Отметьте «Центральный сервер», если машина должна хранить копию реестра и подстраховывать главную.
- Нажмите ОК.
Через несколько секунд на новом сервере появятся процессы rmngr.exe и rphost.exe, а в консоли в ветке Рабочие процессы — процессы обеих машин.
Если на рабочем сервере не активирована своя серверная лицензия, процессы запустятся, но клиентские сеансы на них не пойдут, а в журнале появятся ошибки получения лицензии.
Параметры рабочего сервера, которые стоит выставить сразу
| Параметр | Что задаёт | Практический ориентир |
|---|---|---|
| Количество ИБ на процесс | Сколько баз обслуживает один rphost | 1–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 с центрального сервера. Это и есть резервная копия реестра кластера: списка баз, администраторов и настроек.