Как работает кластер серверов 1С: от агента до рабочих процессов
Содержание
Кластер серверов
1С:Предприятия — это группа процессов на одном или нескольких компьютерах, которая обслуживает клиентские сеансы и выполняет серверный код информационных баз. Минимальный кластер — один сервер с агентом ragent, менеджером rmngr и рабочими процессами rphost. Базы данных при этом хранятся в отдельной СУБД: MS SQL Server, PostgreSQL или другой поддерживаемой.
Кластер создаётся автоматически при установке сервера 1С. Дальше задача администратора — понять, как устроены его части, как распределяется нагрузка и что делать, когда один из серверов упал. Всё ниже относится к платформе 8.3 и не зависит от конфигурации: БП, ЗУП и УТ работают в кластере одинаково.
Из чего состоит кластер серверов 1С
Сервер 1С — это не одна программа, а набор процессов. У каждого своя роль.
| Процесс | Что делает | Порт по умолчанию |
|---|---|---|
ragent — агент сервера | Принимает первое обращение клиента и консоли, хранит список кластеров на компьютере | 1540 |
rmngr — менеджер кластера | Ведёт реестр кластера: базы, серверы, сеансы, блокировки, лицензии | 1541 |
rphost — рабочий процесс | Выполняет серверный код, обращается к СУБД | диапазон 1560–1591 |
ras — сервер администрирования | Даёт доступ утилите rac и сторонним средствам | 1545 |
🖥️ Рабочий сервер — компьютер, включённый в кластер. На нём работают рабочие процессы, а при необходимости и менеджеры.
⭐ Центральный сервер — рабочий сервер, на котором хранится реестр кластера и работает главный менеджер. Признак «Центральный сервер» ставится в свойствах рабочего сервера. Центральных серверов может быть несколько.
📁 Каталог службы — srvinfo. Реестр кластера лежит в подпапке reg_1541 (число совпадает с портом менеджера), там же хранятся журналы регистрации баз и сеансовые данные.
Служба в Windows запускается командой примерно такого вида:
"C:\Program Files\1cv8\8.3.24.1467\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo" -debug
Здесь -port — порт агента, -regport — порт главного менеджера, -range — диапазон для рабочих процессов, -d — каталог службы. Если на одном компьютере нужно два кластера разных версий, им задают разные порты и разные каталоги.
Менеджер кластера можно разделить на несколько процессов: флажок «Менеджер под каждый сервис» в свойствах рабочего сервера. Это снимает нагрузку с одного rmngr, когда в кластере сотни сеансов.
Как клиент находит базу: путь соединения и порты
Порядок подключения тонкого клиента к серверной базе такой:
- Клиент обращается к агенту сервера на порт 1540.
- Агент передаёт его менеджеру кластера на порт 1541.
- Менеджер выбирает рабочий процесс и возвращает клиенту его адрес из диапазона 1560–1591.
- Клиент устанавливает соединение с рабочим процессом и дальше работает с ним напрямую.
Отсюда главное правило для брандмауэра: открывать нужно весь диапазон рабочих процессов, а не только 1540 и 1541. Иначе клиент найдёт кластер, но не сможет открыть сеанс.
| Направление | Порты |
|---|---|
| Клиенты → сервер 1С | 1540, 1541, 1560–1591 |
| Консоль администрирования → агент | 1540 |
rac → ras | 1545 |
| Рабочие процессы → СУБД | 1433 для MS SQL, 5432 для PostgreSQL |
| Между серверами кластера | все перечисленные порты 1С в обе стороны |
Диапазон портов можно сузить или перенести в свойствах рабочего сервера, в разделе диапазонов IP-портов. Если меняете — меняйте и правила брандмауэра на всех серверах.
Строка подключения базы в списке баз выглядит так: Srvr="srv1c";Ref="buh";. Если кластер слушает нестандартный порт, его указывают после имени: Srvr="srv1c:2541".
Как кластер распределяет нагрузку
В 8.3 администратор не задаёт число рабочих процессов вручную. Кластер сам запускает и гасит rphost по правилам из свойств рабочего сервера.
⚙️ Параметры, от которых зависит число процессов:
- Количество ИБ на процесс — сколько баз может обслуживать один процесс. Значение 1 изолирует базы друг от друга: тяжёлая база не тормозит соседей.
- Количество соединений на процесс — сколько клиентских соединений принимает процесс до запуска следующего.
- Максимальный объём памяти рабочих процессов — общий предел памяти для всех
rphostсервера. - Безопасный расход памяти за один вызов — защита от вызова, который съедает память целиком.
Новое соединение менеджер отдаёт процессу с лучшей доступной производительностью. Это значение кластер считает сам по времени реакции процесса. В консоли его видно в колонке «Доступная производительность» списка рабочих процессов.
В свойствах кластера есть режим распределения нагрузки с двумя вариантами:
| Режим | Как работает | Когда выбирать |
|---|---|---|
| Приоритет по производительности | Соединения уходят на процессы с лучшим откликом, процессов может быть больше | Мощные серверы, запас памяти |
| Приоритет по памяти | Кластер плотнее заполняет уже запущенные процессы | Память в дефиците |
Если серверов несколько, балансировка работает между ними так же: соединение получает процесс того сервера, где отклик лучше. Тяжёлые сервисы при этом можно закрепить за конкретным сервером — об этом в разделе про консоль.
Отказоустойчивость кластера 1С: что переживёт падение сервера
Отказоустойчивость строится на нескольких центральных серверах. Каждый из них хранит копию реестра кластера и может взять на себя роль главного менеджера.
Ключевой параметр — уровень отказоустойчивости в свойствах кластера. Он показывает, сколько центральных серверов может выйти из строя одновременно без остановки кластера.
📌 Как это соотносится:
- уровень 0 — резервирования нет, падение центрального сервера останавливает кластер;
- уровень 1 — нужно минимум 2 центральных сервера, кластер переживёт отказ одного;
- уровень 2 — нужно минимум 3 центральных сервера.
Сервисы кластера (блокировки, сеансовые данные, журналы и другие) при уровне N поднимаются в N+1 экземплярах на разных серверах.
Чтобы клиенты переключались автоматически, в строке подключения перечисляют все центральные серверы через запятую:
Srvr="srv1c-a:1541,srv1c-b:1541";Ref="buh";
Если один сервер недоступен, клиент подключится через другой.
Отказоустойчивость кластера 1С не защищает СУБД. Если упадёт сервер MS SQL или PostgreSQL, базы будут недоступны при любом числе серверов 1С. Резервирование СУБД настраивают её средствами: Always On, потоковая репликация.
Что ещё нужно для рабочей схемы:
- 🔢 одинаковая версия платформы на всех серверах кластера, вплоть до номера сборки;
- 🌐 стабильная сеть между серверами и разрешение имён в обе стороны;
- 🔑 лицензии на каждом рабочем сервере, где будут работать клиентские процессы;
- 🕒 синхронизированное время на всех узлах.
Расширенные механизмы управления кластером, например счётчики и ограничения потребления ресурсов, рассчитаны на лицензию КОРП. Перед проектированием схемы сверьте, что входит в вашу серверную лицензию.
Консоль администрирования и rac: что настраивают в кластере
Основной инструмент в Windows — оснастка «Администрирование серверов 1С Предприятия». Она подключается к агенту по порту 1540.
Если оснастка не открывается или ругается на версию, перерегистрируйте библиотеку той версии платформы, что и сервер. Командная строка — от имени администратора:
regsvr32 "C:\Program Files\1cv8\8.3.24.1467\bin\radmin.dll"
Консоль одной версии корректно работает только с сервером той же версии. После обновления платформы регистрацию повторяют.
🗂️ Что есть в дереве консоли для каждого кластера:
- Информационные базы — список баз, их параметры подключения к СУБД, блокировка регламентных заданий, блокировка начала сеансов.
- Рабочие серверы — свойства каждого сервера, признак центрального, лимиты памяти, диапазоны портов.
- Требования назначения функциональности — внутри рабочего сервера. Здесь указывают, что сервер должен или не должен выполнять: клиентские соединения, фоновые задания, сервис журналов регистрации и т. д.
- Рабочие процессы, Сеансы, Соединения, Блокировки — оперативная картина.
- Администраторы — учётные записи администратора кластера.
Приём, который часто выручает: вынести фоновые задания на отдельный сервер. Для основного сервера ставят требование «не назначать» для фоновых заданий, для второго — «назначать». Тогда тяжёлые обмены и закрытие месяца не мешают пользователям.
Для Linux и для скриптов используют сервер администрирования ras и утилиту rac. Сначала запускают ras, затем выполняют команды:
ras cluster --daemon
rac cluster list
rac server list --cluster=<id-кластера>
rac process list --cluster=<id-кластера>
rac session list --cluster=<id-кластера>
rac infobase summary list --cluster=<id-кластера>
Идентификатор кластера берут из вывода rac cluster list. Если задан администратор кластера, добавляют --cluster-user и --cluster-pwd. Остальные подкоманды и параметры показывает rac help.
Если пароль администратора кластера потерян, не пересоздавайте кластер. Остановите службу в нерабочее время, восстановите файл реестра кластера из резервной копии каталога srvinfo или обратитесь к тому, кто администрирует сервер.
Диагностика кластера: журналы и типовые сбои
У кластера два основных источника данных о проблемах.
📒 Журнал регистрации — события конкретной базы: входы, ошибки, изменения данных. Хранится в каталоге базы внутри srvinfo\reg_1541\<GUID базы>\1Cv8Log. Открывается из конфигуратора или из режима предприятия через Администрирование → Обслуживание → Журнал регистрации.
🔬 Технологический журнал — события самих процессов кластера: исключения, длинные вызовы, ожидания на блокировках. Включается файлом logcfg.xml в каталоге C:\Program Files\1cv8\conf\. Минимальная настройка для сбора исключений:
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">
<log location="D:\techlog" history="24">
<event>
<eq property="name" value="EXCP"/>
</event>
<property name="all"/>
</log>
</config>
Параметр history задаёт, сколько часов хранить файлы. Журнал растёт быстро, поэтому каталог выносят на отдельный диск, а после диагностики настройку отключают.
Отдельный случай — повреждённый сеансовый кэш кластера после аварийного выключения. Практики чистят папки snccntx* в каталоге reg_1541.
Чистка кэша требует остановки службы сервера 1С — все сеансы пользователей оборвутся. Делайте это вне рабочего времени, предупредив пользователей. Удаляйте только папки snccntx*, файл реестра 1CV8Clst.lst не трогайте и заранее скопируйте весь reg_1541.
Производительность и масштабирование кластера серверов 1С
Узкие места кластера обычно не там, где их ищут. Порядок проверки:
- Частота процессора. Серверный вызов 1С выполняется в одном потоке. Высокая частота ядра даёт больше, чем количество ядер.
- Память. Посмотрите, упирается ли
rphostв лимит «Максимальный объём памяти рабочих процессов». Частые перезапуски процессов — признак слишком низкого лимита или утечки в коде. - СУБД. Медленные запросы, нехватка памяти у SQL Server или PostgreSQL, медленные диски. Для СУБД нужны SSD или NVMe.
- Сеть между 1С и СУБД. Задержка на каждом запросе складывается. Серверы ставят в одну сеть, без лишних маршрутизаторов.
- Управляемые блокировки. Ожидания на блокировках видны в консоли и в технологическом журнале.
Когда настройки исчерпаны, кластер масштабируют:
| Способ | Что даёт | Ограничения |
|---|---|---|
| Добавить память и ядра на текущий сервер | Быстро, без перестройки схемы | Упирается в возможности одной машины |
| Добавить рабочий сервер | Нагрузка делится между серверами | Нужна лицензия на сервер и одинаковая версия платформы |
| Вынести фоновые задания на отдельный сервер | Пользователи не страдают от регламентов | Нужны требования назначения функциональности |
| Изолировать тяжёлую базу | «Количество ИБ на процесс» = 1 или отдельный сервер | Больше расход памяти |
| Вынести СУБД на отдельный сервер | 1С и СУБД не делят ресурсы | Нужна быстрая сеть между ними |
Для перезапуска процессов есть параметр кластера интервал перезапуска в секундах. Значение 86400 перезапускает каждый процесс раз в сутки. Кластер переводит соединения на новый процесс постепенно, поэтому пользователи обычно этого не замечают.
Перед добавлением второго сервера измерьте нагрузку на первом. Если узкое место — СУБД, ещё один сервер 1С не ускорит работу ни на секунду.