Кластер серверов 1С:Предприятия 8.3 из нескольких машин: от установки до балансировки

· 11 мин

Содержание

Кластер серверов 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+ пользователей, ERP3+ сервера, 64 ГБ и большевыделенный сервер под фоновые задания

На производительность 1С сильно влияет частота ядра: вызовы сервера выполняются в одном потоке. Процессор с меньшим числом, но более быстрыми ядрами часто выигрывает у «многоядерного, но медленного». Диски под СУБД — только SSD, сеть между узлами — от 1 Гбит/с с минимальной задержкой.

Все серверы кластера должны работать на одной и той же сборке платформы, например 8.3.24.1342 на каждом узле. Разные сборки в одном кластере не работают.

Установка сервера 1С на центральный и рабочие серверы

Ставим платформу на каждую машину будущего кластера одинаково. Для Windows Server 2016 и новее:

  1. Запустите setup.exe из дистрибутива технологической платформы (полный дистрибутив для 64-разрядной ОС, а не «тонкий клиент»).
  2. В списке компонентов включите «Сервер 1С:Предприятия 8» и «Администрирование сервера 1С:Предприятия». Второй компонент даёт консоль управления.
  3. На шаге параметров службы отметьте «Установить сервер 1С:Предприятия 8 как сервис Windows». Учётная запись по умолчанию — USR1CV8, её можно заменить на доменную служебную учётку.
  4. Дождитесь окончания установки и проверьте в 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. Откройте консоль «Администрирование серверов 1С Предприятия».
  2. В дереве Central 1C:Enterprise 8.3 servers выберите в контекстном меню Создать → Центральный сервер 1С:Предприятия 8.3.
  3. Укажите имя компьютера (лучше сетевое имя, а не localhost), протокол TCP/IP, порт 1540.

В дереве появится сервер, внутри него — Кластеры → Локальный кластер.

Шаг 2. Защитите кластер паролем

По умолчанию кластером может управлять любой, кто подключится к порту агента. Сразу заведите администраторов:

  • в узле Администраторы центрального сервера — администратора агента;
  • в узле Кластеры → Локальный кластер → Администраторы — администратора кластера.

Запишите пароль администратора кластера в хранилище паролей. Если его потерять, восстановить доступ можно только остановкой службы и возвратом файла реестра 1CV8Clst.lst из резервной копии, сделанной до смены пароля.

Шаг 3. Добавьте рабочие серверы

На второй машине уже установлен и запущен сервер 1С (свой «Локальный кластер» на ней не мешает: он останется пустым). На центральном сервере:

  1. Раскройте Кластеры → Локальный кластер → Рабочие серверы.
  2. Контекстное меню → Создать → Рабочий сервер.
  3. Заполните поля: имя (произвольное описание), компьютер (сетевое имя второй машины), IP-порт 1540, диапазон IP-портов 1560:1591.
  4. Если сервер должен страховать центральный, включите флажок «Центральный сервер».
  5. Нажмите «ОК». Через несколько секунд в списке рабочих процессов появятся процессы на новом узле.

Повторите для каждой машины. Все серверы кластера должны находить друг друга по имени. Если DNS в сети нет или он ненадёжен, пропишите имена и адреса всех узлов в C:\Windows\System32\drivers\etc\hosts на каждой машине и на терминальных серверах пользователей. Это самая частая причина того, что второй сервер добавлен, а соединения на нём не работают.

Порты и брандмауэр для кластера серверов 1С

Клиент сначала стучится к агенту (1540), агент передаёт его менеджеру кластера (1541), а менеджер назначает рабочий процесс из диапазона портов. Поэтому открывать нужно весь набор, и на всех узлах.

ПортПроцессКому нужен доступ
1540ragent, агент сервераклиенты, консоль, другие узлы кластера
1541rmngr, менеджер кластераклиенты и узлы кластера
1560–1591rphost, рабочие процессы, и дополнительные менеджерыклиенты и узлы кластера
1545ras, сервер администрированиятолько администраторы и системы мониторинга
1433 / 5432MS 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";. Эти порты тоже открывают в брандмауэре.

Как добавить информационную базу в кластер

База создаётся один раз и становится доступна на всех рабочих серверах кластера. Способов два.

Через консоль администрирования

  1. Кластеры → Локальный кластер → Информационные базы, контекстное меню Создать → Информационная база.
  2. Заполните:
    • Имя — короткое, без пробелов, например buh. Это имя пользователи укажут при подключении.
    • Сервер баз данных — имя сервера СУБД (для MS SQL с именованным экземпляром — sql01\INST).
    • Тип СУБД — MSSQLServer или PostgreSQL.
    • База данных, пользователь и пароль СУБД.
    • Флажок «Создать базу данных в случае ее отсутствия», если базы в СУБД ещё нет.
    • Флажок «Разрешить выдачу лицензий сервером 1С:Предприятия», если лицензии стоят на сервере.
  3. Нажмите «ОК».

Через окно запуска 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.

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

Если узел не работает

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

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

Нужна ли лицензия на каждый сервер кластера?
Лицензия сервера 1С:Предприятия нужна на каждый рабочий сервер, на котором запускаются рабочие процессы. Клиентские лицензии можно держать на одном сервере и разрешить выдачу лицензий сервером для баз кластера.
Нужен ли кластер, если пользователей 20–30?
Обычно нет: один сервер 1С с отдельной СУБД справляется. Кластер из нескольких машин оправдан, когда упираетесь в процессор или память одного узла либо нужна страховка от отказа сервера.
Что будет с пользователями, если упадёт один рабочий сервер?
Сеансы на упавшем узле оборвутся, пользователи переподключатся и попадут на оставшиеся серверы. Работа кластера в целом продолжится, если упал не единственный центральный сервер или уровень отказоустойчивости это позволяет.
Сколько рабочих процессов запускать на одном сервере?
Кластер управляет их числом сам, исходя из параметров «Количество ИБ на процесс» и «Количество соединений на процесс». Вручную ограничивают обычно только тяжёлые базы, выделяя им отдельный процесс.
Где хранится реестр кластера и что копировать для восстановления?
В каталоге, заданном параметром -d, по умолчанию C:\Program Files\1cv8\srvinfo. Для восстановления важны файлы реестра кластера, включая 1CV8Clst.lst. Копируйте каталог регулярно, особенно перед обновлением платформы.