Как работает кластер серверов 1С: от агента до рабочих процессов

· 9 мин

Содержание

Кластер серверов 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, когда в кластере сотни сеансов.

Как клиент находит базу: путь соединения и порты

Порядок подключения тонкого клиента к серверной базе такой:

  1. Клиент обращается к агенту сервера на порт 1540.
  2. Агент передаёт его менеджеру кластера на порт 1541.
  3. Менеджер выбирает рабочий процесс и возвращает клиенту его адрес из диапазона 1560–1591.
  4. Клиент устанавливает соединение с рабочим процессом и дальше работает с ним напрямую.

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

НаправлениеПорты
Клиенты → сервер 1С1540, 1541, 1560–1591
Консоль администрирования → агент1540
rac → ras1545
Рабочие процессы → СУБД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. Частота процессора. Серверный вызов 1С выполняется в одном потоке. Высокая частота ядра даёт больше, чем количество ядер.
  2. Память. Посмотрите, упирается ли rphost в лимит «Максимальный объём памяти рабочих процессов». Частые перезапуски процессов — признак слишком низкого лимита или утечки в коде.
  3. СУБД. Медленные запросы, нехватка памяти у SQL Server или PostgreSQL, медленные диски. Для СУБД нужны SSD или NVMe.
  4. Сеть между 1С и СУБД. Задержка на каждом запросе складывается. Серверы ставят в одну сеть, без лишних маршрутизаторов.
  5. Управляемые блокировки. Ожидания на блокировках видны в консоли и в технологическом журнале.

Когда настройки исчерпаны, кластер масштабируют:

СпособЧто даётОграничения
Добавить память и ядра на текущий серверБыстро, без перестройки схемыУпирается в возможности одной машины
Добавить рабочий серверНагрузка делится между серверамиНужна лицензия на сервер и одинаковая версия платформы
Вынести фоновые задания на отдельный серверПользователи не страдают от регламентовНужны требования назначения функциональности
Изолировать тяжёлую базу«Количество ИБ на процесс» = 1 или отдельный серверБольше расход памяти
Вынести СУБД на отдельный сервер1С и СУБД не делят ресурсыНужна быстрая сеть между ними

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

Перед добавлением второго сервера измерьте нагрузку на первом. Если узкое место — СУБД, ещё один сервер 1С не ускорит работу ни на секунду.

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

Нужен ли кластер, если у меня один сервер?
Да, кластер есть всегда. При установке сервера 1С создаётся кластер «Локальный кластер» с одним рабочим сервером.
Можно ли держать в одном кластере серверы разных версий платформы?
Нет. Все рабочие серверы кластера должны работать на одной версии платформы, включая номер сборки.
Сколько баз выдержит один кластер?
Жёсткого предела на практике нет: ограничивают память, процессор и СУБД. Сотни небольших баз на одном кластере — рабочий сценарий.
Можно ли запустить два кластера на одном компьютере?
Можно. Каждому задают свои порты агента, менеджера и рабочих процессов и отдельный каталог службы.
Где хранятся данные баз: в кластере или в СУБД?
Данные хранятся в СУБД. В каталоге кластера лежат реестр, журналы регистрации и сеансовые данные.