Кластер серверов 1С: как он держит нагрузку и переживает отказы

· 9 мин

Содержание

Кластер серверов 1С нужен, чтобы распределить работу пользователей и фоновых заданий между несколькими рабочими процессами и серверами, а при отказе одного узла продолжить работу на остальных. Проще говоря, это способ масштабировать 1С:Предприятие 8.3 под рост числа пользователей и не останавливать учёт, когда сломался один компьютер.

Даже на одном сервере 1С всегда работает как кластер — пусть из одной машины. Выигрыш появляется, когда вы начинаете им управлять: добавляете рабочие серверы, выносите тяжёлые регламентные задания отдельно, настраиваете резервирование центрального сервера и следите за потреблением ресурсов.

Из чего состоит кластер серверов 1С

Кластер — это логическая группа процессов, которые обслуживают информационные базы. Физически он может занимать от одного до десятков серверов.

Основные компоненты:

  • 🧭 Агент сервера (ragent) — точка входа. Слушает порт 1540, к нему первым обращается клиент и консоль администрирования.
  • 🗂 Менеджер кластера (rmngr) — ведёт реестр кластера: список баз, сеансов, рабочих серверов, блокировок. Порт по умолчанию 1541.
  • ⚙️ Рабочие процессы (rphost) — выполняют серверный код конфигурации: проведение документов, запросы, отчёты, фоновые задания. Используют диапазон портов, по умолчанию 1560:1591; он задаётся в свойствах рабочего сервера.
  • 🛠 Сервер администрирования (ras) — нужен для утилиты командной строки rac, по умолчанию порт 1545.
  • 🗄 СУБД — MS SQL Server, PostgreSQL или другая поддерживаемая. Она хранит данные, но в состав кластера 1С не входит.

Как идёт запрос пользователя

  1. Тонкий клиент обращается к агенту сервера по порту 1540.
  2. Агент передаёт запрос менеджеру кластера (1541).
  3. Менеджер выбирает рабочий процесс и сообщает клиенту его адрес.
  4. Дальше клиент работает напрямую с рабочим процессом, а тот — с СУБД.

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

Центральный и рабочий сервер

Каждая машина в кластере — рабочий сервер. Если у него в свойствах включён флаг «Центральный сервер», на нём работает менеджер кластера и хранится копия реестра. Центральных серверов может быть несколько — это основа резервирования.

Масштабирование кластера 1С: как распределяется нагрузка

Один сервер упирается в процессор и память. Кластер позволяет расти горизонтально: добавили рабочий сервер — менеджер начинает раздавать на него новые соединения.

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

Что влияет на балансировку

НастройкаГде задаётсяЧто даёт
Режим распределения нагрузкиСвойства кластераПриоритет по производительности или по памяти
Количество ИБ на процессСвойства рабочего сервераСколько баз обслуживает один rphost
Количество соединений на процессСвойства рабочего сервераКогда запускать новый рабочий процесс
Максимальный объём памяти рабочих процессовСвойства рабочего сервераПотолок памяти для всех rphost на машине
Безопасный расход памяти за один вызовСвойства рабочего сервераОбрывает «прожорливый» вызов, а не весь процесс

Когда добавлять сервер

Признаки, что одной машины мало:

  • 📈 загрузка процессора держится выше 70–80% в рабочие часы;
  • 🐢 медленно открываются формы при нормальной скорости СУБД;
  • 💾 рабочие процессы регулярно упираются в лимит памяти и перезапускаются;
  • 🌙 ночные регламенты не укладываются в окно и мешают утренней работе.

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

Отказоустойчивость кластера серверов 1С

Вторая причина строить кластер — простой. Если 1С стоит на одном сервере, его отказ останавливает всю компанию: склад, кассы, бухгалтерию.

Резервирование центрального сервера

При нескольких центральных серверах реестр кластера реплицируется между ними. Если один выпал, менеджер кластера продолжает работу на другом, а клиенты переподключаются.

В свойствах кластера задаётся уровень отказоустойчивости — сколько рабочих серверов может отказать одновременно без потери данных сеансов. Чтобы уровень 1 имел смысл, нужно минимум два сервера с ролью центрального.

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

  • ✅ Сеансы на уцелевших серверах продолжают работать.
  • 🔄 Сеансы с упавшего сервера переподключаются к живым рабочим процессам. Тонкий клиент, как правило, восстанавливает соединение сам.
  • ❌ Операция, которая выполнялась в момент сбоя, не завершится. Незакрытая транзакция в СУБД откатится, и документ придётся провести заново.

Слабое место — СУБД

Кластер 1С защищает только серверную часть 1С. База данных остаётся единственной точкой отказа, если её не резервировать отдельно:

  • для MS SQL Server — группы доступности Always On или отказоустойчивый кластер Windows;
  • для PostgreSQL — потоковая репликация с автоматическим переключением (например, через Patroni).

Стройте отказоустойчивость слоями: два и более сервера 1С, реплицируемая СУБД, резервное копирование по расписанию. Кластер без резервной копии базы от потери данных не спасает.

Изоляция ресурсов и фоновые задания в кластере

Тяжёлые регламентные задания — пересчёт итогов, обмены, загрузка банковских выписок, закрытие месяца — съедают ресурсы у тех, кто работает в базе. Кластер позволяет развести их по разным машинам.

Требования назначения функциональности

У каждого рабочего сервера в консоли есть ветка «Требования назначения функциональности». Там указывают, какой тип работы сервер берёт на себя:

  • Объект требования — например, клиентские соединения, фоновые задания, сервис журналов регистрации, полнотекстовый поиск.
  • Тип требования — «Назначать», «Не назначать» или «Авто».
  • Информационная база — можно ограничить требование одной базой.

Типовая схема для 50–150 пользователей:

СерверКлиентские соединенияФоновые задания
Сервер 1НазначатьНе назначать
Сервер 2Не назначатьНазначать

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

Если всем серверам поставить «Не назначать» для какого-то объекта, эта функциональность перестанет выполняться. Фоновые задания просто не стартуют, и обмены встанут без явной ошибки у пользователя. После изменения требований примените их и проверьте, что задания запускаются.

Менеджер под каждый сервис

В свойствах рабочего сервера есть флаг «Менеджер под каждый сервис». С ним сервисы кластера (журнал регистрации, блокировки, сеансовые данные) работают в отдельных процессах rmngr. Сбой одного сервиса не тянет за собой остальные, а в мониторинге видно, какой сервис потребляет память.

Часть этих механизмов доступна только при серверной лицензии уровня КОРП: в первую очередь гибкие требования назначения функциональности и настройки отказоустойчивости. С лицензией ПРОФ кластер работает, но управлять им тоньше не получится.

Мониторинг и администрирование кластера

Кластер без наблюдения быстро превращается в чёрный ящик. Минимальный набор инструментов — консоль, утилита rac и технологический журнал.

Консоль администрирования серверов 1С

Оснастка MMC показывает рабочие серверы, процессы, базы, сеансы и блокировки. Подключается к агенту сервера по порту 1540.

Если консоль не открывается после обновления платформы, перерегистрируйте библиотеку нужной версии от имени администратора:

regsvr32 "C:\Program Files\1cv8\8.3.24.1548\bin\radmin.dll"

Номер версии в пути подставьте свой — он должен совпадать с версией сервера.

Утилита rac для автоматизации

Через rac удобно собирать данные скриптами. Сначала запускают сервер администрирования ras, затем обращаются к нему:

ras cluster --daemon
rac cluster list
rac session list --cluster=<id_кластера>
rac process list --cluster=<id_кластера>

Список остальных команд и параметров смотрите в rac help — у разных версий платформы он отличается.

Что смотреть регулярно

  • 👥 Сеансы — число активных и «зависших» сеансов, кто держит лицензии.
  • 🧠 Рабочие процессы — занятая память, доступная производительность, число соединений.
  • 🔒 Блокировки — долгие управляемые блокировки на регистрах.
  • 📊 Счётчики потребления ресурсов — сколько процессорного времени и памяти тратит база, пользователь или фоновое задание.
  • 🚦 Ограничения потребления ресурсов — правило, которое прерывает вызов при превышении порога.

Автоматический перезапуск процессов

В свойствах кластера задают интервал перезапуска рабочих процессов и допустимый объём памяти. Процесс, который вышел за лимит, получает время на завершение текущих вызовов, после чего останавливается, а новые соединения уходят в свежий процесс.

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

Технологический журнал

Для разбора медленных операций и ошибок включают технологический журнал файлом logcfg.xml в каталоге conf платформы. Пишите в него только нужные события (например, длительные вызовы и исключения) и ограничивайте срок хранения: полный журнал за час занимает гигабайты.

Требования к железу и планирование ресурсов

Конкретная цифра зависит от конфигурации и характера работы, поэтому ниже — ориентиры для старта, а не норма.

Ориентиры для сервера 1С

ПользователейПроцессорПамять сервера 1ССхема
До 304–8 ядер16–32 ГБ1С и СУБД на одной машине
30–1008–16 ядер32–64 ГБ1С и СУБД раздельно
100–3002 сервера 1С по 16 ядерпо 64 ГБКластер, фоновые задания отдельно
Свыше 3003 и более сервераот 64 ГБ на серверКластер с резервированием и реплицируемой СУБД

Цифры ориентировочные: «тяжёлая» ERP на 50 пользователей может нагрузить сервер сильнее, чем Бухгалтерия на 150.

Что важнее всего для 1С

  1. Частота ядра. Серверный вызов однопоточный, поэтому высокая частота процессора ускоряет проведение сильнее, чем лишние ядра.
  2. Задержка до СУБД. Сервер 1С и СУБД обмениваются тысячами мелких запросов. Держите их в одной стойке с сетью 10 Гбит/с или на одной машине.
  3. Диски СУБД. Под данные, журнал транзакций и tempdb — быстрые NVMe-диски, лучше раздельные.
  4. Память СУБД. Если база целиком помещается в кэш СУБД, нагрузка на диски падает в разы.

Как спланировать рост

  • 📏 Снимите базовую загрузку за обычный месяц и за закрытие периода .
  • ➕ Заложите запас 30–50% по процессору и памяти.
  • 🧪 Проверьте сценарий отказа: выключите один сервер в тестовом контуре и посмотрите, выдержат ли оставшиеся пиковую нагрузку.
Нужен ли вам кластер из нескольких серверов?

Ошибки при построении кластера 1С

  • ❌ Разные версии платформы на серверах. Все рабочие серверы кластера должны работать на одной и той же версии. Обновляйте их одновременно.
  • ❌ Закрыт диапазон портов на одном из узлов. Клиент получает адрес рабочего процесса, но не может к нему подключиться — ошибка выглядит случайной, потому что падает не на каждом сеансе.
  • ❌ Резервирование только сервера 1С. Если СУБД одна и без реплики, второй сервер 1С при её отказе бесполезен.
  • ❌ Неодинаковое время на серверах. Расхождение часов мешает работе кластера и путает журналы. Синхронизируйте время с одним источником.
  • ❌ Кластер вместо оптимизации. Если тормозит один отчёт или одна обработка, новый сервер не поможет — сначала разберите запрос.

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

Можно ли собрать кластер 1С из серверов на Windows и Linux?
Технически платформа это допускает, но на практике держите все узлы на одной ОС и одной версии платформы — так проще обновлять и разбирать сбои.
Сколько серверных лицензий нужно для кластера?
Каждый рабочий сервер, на котором запускаются рабочие процессы, требует своей серверной лицензии. Клиентские лицензии считаются на весь кластер.
Ускорит ли кластер работу файловой базы?
Нет. Кластер работает только с клиент-серверными базами. Файловую базу сначала переводят на СУБД, загрузив выгрузку .dt.
Чем кластер отличается от терминального сервера?
Терминальный сервер даёт пользователям удалённый рабочий стол с клиентом 1С. Кластер выполняет серверный код и работает с СУБД. Они дополняют друг друга, а не заменяют.
Можно ли добавить сервер в кластер без остановки работы?
Да, новый рабочий сервер регистрируют в консоли на лету, и менеджер начинает отдавать ему новые соединения. Текущие сеансы при этом не прерываются.