Кластер серверов 1С:Предприятия 8.3 из нескольких машин: от установки до балансировки
Содержание
Кластер серверов
1С создаётся сам: при первом запуске службы «Агент сервера 1С:Предприятия 8.3» появляется «Локальный кластер» на порту 1541. Чтобы получить кластер из нескольких машин, на каждую ставят сервер 1С той же версии платформы, а потом в консоли администрирования добавляют их в Кластеры → Локальный кластер → Рабочие серверы. Остаётся открыть порты 1540, 1541 и диапазон 1560–1591, подключить базы и настроить распределение нагрузки.
Обычно кластер собирают, когда один сервер уже не тянет: пользователи жалуются на тормоза в конце месяца, а фоновые задания мешают закрытию периода. Ниже порядок, по которому кластер поднимается с первого раза, и приёмы, на которых чаще всего спотыкаются.
Как устроен кластер 1С и сколько нужно железа
Кластер — это группа рабочих серверов, которые обслуживают одни и те же информационные базы. На каждой машине работают три вида процессов:
- 🟢 ragent — агент сервера. Слушает порт
1540, к нему первым обращается клиент и консоль администрирования. - 🔵 rmngr — менеджер кластера. Порт
1541, хранит реестр кластера, распределяет соединения. - 🟠 rphost — рабочие процессы. В них и выполняется код конфигурации. Порты берутся из диапазона, по умолчанию
1560:1591.
Центральный сервер — тот, где хранится реестр кластера (каталог srvinfo) и работает главный менеджер кластера. Рабочих серверов может быть несколько. Любой из них можно отметить флажком «Центральный сервер», и тогда он сможет подхватить управление при отказе основного.
СУБД (MS SQL Server или PostgreSQL) — отдельная роль. На небольших внедрениях она стоит на той же машине, что и центральный сервер 1С. В кластере из двух-трёх узлов СУБД лучше вынести на собственный сервер: иначе рабочие процессы и СУБД дерутся за память.
Ориентиры по оборудованию
Цифры ниже примерные и зависят от конфигурации и характера нагрузки. Точнее покажет только нагрузочный тест на ваших базах.
| Нагрузка | Рабочий сервер 1С | Комментарий |
|---|---|---|
| до 30–50 пользователей | 4–8 ядер, 16–32 ГБ ОЗУ | кластер обычно не нужен, хватает одного сервера |
| 50–150 пользователей | 2 сервера по 8 ядер, 32 ГБ | СУБД на отдельной машине |
| 150+ пользователей, ERP | 3+ сервера, 64 ГБ и больше | выделенный сервер под фоновые задания |
На производительность 1С сильно влияет частота ядра: вызовы сервера выполняются в одном потоке. Процессор с меньшим числом, но более быстрыми ядрами часто выигрывает у «многоядерного, но медленного». Диски под СУБД — только SSD, сеть между узлами — от 1 Гбит/с с минимальной задержкой.
Все серверы кластера должны работать на одной и той же сборке платформы, например 8.3.24.1342 на каждом узле. Разные сборки в одном кластере не работают.
Установка сервера 1С на центральный и рабочие серверы
Ставим платформу на каждую машину будущего кластера одинаково. Для Windows Server 2016 и новее:
- Запустите
setup.exeиз дистрибутива технологической платформы (полный дистрибутив для 64-разрядной ОС, а не «тонкий клиент»). - В списке компонентов включите «Сервер 1С:Предприятия 8» и «Администрирование сервера 1С:Предприятия». Второй компонент даёт консоль управления.
- На шаге параметров службы отметьте «Установить сервер
1С:Предприятия 8 как сервис Windows». Учётная запись по умолчанию —
USR1CV8, её можно заменить на доменную служебную учётку. - Дождитесь окончания установки и проверьте в
services.msc, что служба «Агент сервера 1С:Предприятия 8.3» запущена.
Служба стартует с параметрами по умолчанию. Строку запуска можно посмотреть в свойствах службы, она выглядит примерно так:
"C:\Program Files\1cv8\8.3.24.1342\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo" -debug
Здесь -port — порт агента, -regport — порт менеджера кластера, -range — диапазон рабочих процессов, -d — каталог реестра кластера.
Регистрация консоли администрирования
Частая проблема: консоль «Администрирование серверов 1С Предприятия» не открывается или пишет, что оснастка не найдена. Это значит, что не зарегистрирована библиотека radmin.dll нужной версии. Регистрируют её из командной строки от имени администратора:
regsvr32 "C:\Program Files\1cv8\8.3.24.1342\bin\radmin.dll"
После обновления платформы регистрацию повторяют с путём к новой версии. Иначе консоль будет подключаться старой библиотекой и выдавать ошибку несоответствия версий.
Linux
На Linux дистрибутив ставится пакетами (deb или rpm) в каталог /opt/1cv8/x86_64/<версия>/. В новых сборках в комплекте есть файл юнита systemd, имя службы содержит номер версии. Администрировать такой сервер удобно через ras и rac (об этом ниже) или с Windows-машины через ту же консоль.
Регистрация центрального сервера и рабочих узлов в кластере
Центральный сервер у вас уже есть: это машина, где служба запустилась первой и создала «Локальный кластер». Дальше работаем в консоли на этой машине.
Шаг 1. Подключите центральный сервер в консоли
- Откройте консоль «Администрирование серверов 1С Предприятия».
- В дереве
Central 1C:Enterprise 8.3 serversвыберите в контекстном менюСоздать → Центральный сервер 1С:Предприятия 8.3. - Укажите имя компьютера (лучше сетевое имя, а не
localhost), протоколTCP/IP, порт1540.
В дереве появится сервер, внутри него — Кластеры → Локальный кластер.
Шаг 2. Защитите кластер паролем
По умолчанию кластером может управлять любой, кто подключится к порту агента. Сразу заведите администраторов:
- в узле
Администраторыцентрального сервера — администратора агента; - в узле
Кластеры → Локальный кластер → Администраторы— администратора кластера.
Запишите пароль администратора кластера в хранилище паролей. Если его потерять, восстановить доступ можно только остановкой службы и возвратом файла реестра 1CV8Clst.lst из резервной копии, сделанной до смены пароля.
Шаг 3. Добавьте рабочие серверы
На второй машине уже установлен и запущен сервер 1С (свой «Локальный кластер» на ней не мешает: он останется пустым). На центральном сервере:
- Раскройте
Кластеры → Локальный кластер → Рабочие серверы. - Контекстное меню →
Создать → Рабочий сервер. - Заполните поля: имя (произвольное описание), компьютер (сетевое имя второй машины), IP-порт
1540, диапазон IP-портов1560:1591. - Если сервер должен страховать центральный, включите флажок «Центральный сервер».
- Нажмите «ОК». Через несколько секунд в списке рабочих процессов появятся процессы на новом узле.
Повторите для каждой машины. Все серверы кластера должны находить друг друга по имени. Если DNS в сети нет или он ненадёжен, пропишите имена и адреса всех узлов в C:\Windows\System32\drivers\etc\hosts на каждой машине и на терминальных серверах пользователей. Это самая частая причина того, что второй сервер добавлен, а соединения на нём не работают.
Порты и брандмауэр для кластера серверов 1С
Клиент сначала стучится к агенту (1540), агент передаёт его менеджеру кластера (1541), а менеджер назначает рабочий процесс из диапазона портов. Поэтому открывать нужно весь набор, и на всех узлах.
| Порт | Процесс | Кому нужен доступ |
|---|---|---|
| 1540 | ragent, агент сервера | клиенты, консоль, другие узлы кластера |
| 1541 | rmngr, менеджер кластера | клиенты и узлы кластера |
| 1560–1591 | rphost, рабочие процессы, и дополнительные менеджеры | клиенты и узлы кластера |
| 1545 | ras, сервер администрирования | только администраторы и системы мониторинга |
| 1433 / 5432 | MS SQL / PostgreSQL | только серверы 1С |
Правило для брандмауэра Windows создаётся одной командой (от имени администратора):
netsh advfirewall firewall add rule name="1C Server Cluster" dir=in action=allow protocol=TCP localport=1540,1541,1560-1591
Диапазон 1560–1591 даёт 32 порта. Каждому рабочему процессу и каждому дополнительному менеджеру нужен свой порт. Если на сервере много процессов (включён режим «Менеджер под каждый сервис» или задано много процессов), диапазон расширяют в свойствах рабочего сервера и открывают в брандмауэре.
Несколько версий платформы на одной машине
Иногда на одном сервере нужны две сборки, например для тестирования обновления. Вторую службу регистрируют с другим набором портов, например -port 2540 -regport 2541 -range 2560:2591. Тогда в строке подключения к базе указывают порт менеджера: Srvr="srv1c-01:2541";Ref="buh_test";. Эти порты тоже открывают в брандмауэре.
Как добавить информационную базу в кластер
База создаётся один раз и становится доступна на всех рабочих серверах кластера. Способов два.
Через консоль администрирования
Кластеры → Локальный кластер → Информационные базы, контекстное менюСоздать → Информационная база.- Заполните:
- Имя — короткое, без пробелов, например
buh. Это имя пользователи укажут при подключении. - Сервер баз данных — имя сервера СУБД (для MS SQL с именованным экземпляром —
sql01\INST). - Тип СУБД —
MSSQLServerилиPostgreSQL. - База данных, пользователь и пароль СУБД.
- Флажок «Создать базу данных в случае ее отсутствия», если базы в СУБД ещё нет.
- Флажок «Разрешить выдачу лицензий сервером 1С:Предприятия», если лицензии стоят на сервере.
- Имя — короткое, без пробелов, например
- Нажмите «ОК».
Через окно запуска 1С
Добавить → Создание новой информационной базы → На сервере 1С:Предприятия. Поле «Кластер серверов 1С:Предприятия» — имя центрального сервера, «Имя информационной базы в кластере» — то же короткое имя. Остальные поля такие же, как в консоли.
Существующую файловую базу
переносят через выгрузку .dt: в Конфигураторе файловой базы Администрирование → Выгрузить информационную базу, затем в Конфигураторе новой серверной базы Администрирование → Загрузить информационную базу. Загрузка .dt требует монопольного доступа к серверной базе.
Если в базе есть регламентные задания (обмены, загрузка курсов, интеграции), при переносе копии включите у тестовой базы «Блокировка регламентных заданий включена». Иначе копия начнёт отправлять обмены параллельно с рабочей базой.
Балансировка нагрузки и отказоустойчивость кластера
Сразу после добавления серверов кластер распределяет соединения сам. Но настройки по умолчанию рассчитаны на «средний случай», и под реальную нагрузку их стоит поправить.
Параметры кластера
Свойства открываются из контекстного меню Локальный кластер → Свойства.
- ⚙️ Режим распределения нагрузки — «Приоритет по производительности» (новые соединения уходят в процесс с лучшей доступной производительностью) или «Приоритет по памяти» (экономнее по памяти, меньше процессов).
- ⚙️ Уровень отказоустойчивости — сколько центральных серверов может выйти из строя без остановки кластера. Значение
1имеет смысл, только если флажок «Центральный сервер» стоит минимум у двух рабочих серверов. - ⚙️ Интервал перезапуска и допустимый объём памяти — плановый перезапуск рабочих процессов, которые «распухли». Перезапуск мягкий: старый процесс доживает, пока не закончатся его соединения.
Параметры рабочего сервера
Тонкая настройка каждого узла — в свойствах рабочего сервера:
- Количество ИБ на процесс и количество соединений на процесс — сколько баз и пользователей обслуживает один
rphost. Для тяжёлой ERP часто ставят одну базу на процесс. - Критический объём памяти процессов — при его превышении сервер начнёт обрывать самые «прожорливые» вызовы.
- Безопасный расход памяти за один вызов — защита от отчёта, который пытается съесть всю память.
- Менеджер под каждый сервис — сервисы кластера (журнал регистрации, полнотекстовый поиск и другие) выносятся в отдельные процессы
rmngr. Помогает, когда один сервис нагружает менеджер.
Требования назначения функциональности
Это главный инструмент ручной балансировки. В узле Рабочие серверы → <сервер> → Требования назначения функциональности вы указываете, что этот сервер должен или не должен делать. Типовая схема для двух серверов:
| Сервер | Объект требования | Тип требования |
|---|---|---|
| srv1c-01 | Соединение клиентского приложения | Назначать |
| srv1c-01 | Фоновое задание клиента | Не назначать |
| srv1c-02 | Фоновое задание клиента | Назначать |
В результате пользователи работают на первом сервере, а обмены, закрытие месяца в фоне и регламентные задания уходят на второй. Требование можно ограничить конкретной базой через поле «Значение дополнительного параметра» (имя информационной базы). После изменения требований примените их командой «Применить требования» в контекстном меню узла: частично — без разрыва текущих соединений, полностью — с переносом соединений, что оборвёт работу пользователей. Полное применение делайте вне рабочего времени.
Мониторинг и диагностика кластера 1С
Базовый мониторинг есть прямо в консоли. В узле Рабочие процессы смотрите на колонки:
- 📈 Доступная производительность — относительная оценка, по ней кластер выбирает процесс. Резкое падение у одного процесса — признак, что он перегружен или «завис» на тяжёлом вызове.
- ⏱ Среднее время вызова и среднее время обслуживания вызова — рост показывает, где тормозит: в 1С или в ожидании СУБД.
- 💾 Память — сравнивайте с порогами из свойств рабочего сервера.
- 👥 Количество соединений — равномерно ли распределены пользователи между узлами.
В узле Информационные базы → <база> → Сеансы видно, кто что делает, а в Блокировки — кто держит управляемые блокировки.
Командная строка: ras и rac
Для скриптов и систем мониторинга (Zabbix, Prometheus) используют сервер администрирования ras и утилиту rac. Сервер администрирования запускается на центральном сервере:
ras cluster --port=1545 localhost:1540
Дальше из rac можно получить список кластеров, серверов, процессов и сеансов:
rac cluster list
rac server list --cluster=<uuid-кластера>
rac process list --cluster=<uuid-кластера>
rac session list --cluster=<uuid-кластера>
Если кластер защищён паролем, добавьте --cluster-user и --cluster-pwd. Полный список команд и параметров — в rac help.
Завершение рабочего процесса или перезапуск службы агента обрывает сеансы всех пользователей на этом узле. Делайте это после предупреждения и вне пиковых часов, а несохранённые документы пользователи потеряют.