Кластер серверов 1С: как он держит нагрузку и переживает отказы
Содержание
Кластер серверов 1С нужен, чтобы распределить работу пользователей и фоновых заданий между несколькими рабочими процессами и серверами, а при отказе одного узла продолжить работу на остальных. Проще говоря, это способ масштабировать 1С:Предприятие 8.3 под рост числа пользователей и не останавливать учёт, когда сломался один компьютер.
Даже на одном сервере 1С всегда работает как кластер — пусть из одной машины. Выигрыш появляется, когда вы начинаете им управлять: добавляете рабочие серверы, выносите тяжёлые регламентные задания отдельно, настраиваете резервирование центрального сервера и следите за потреблением ресурсов.
Из чего состоит кластер серверов 1С
Кластер — это логическая группа процессов, которые обслуживают информационные базы. Физически он может занимать от одного до десятков серверов.
Основные компоненты:
- 🧭 Агент сервера (
ragent) — точка входа. Слушает порт1540, к нему первым обращается клиент и консоль администрирования. - 🗂 Менеджер кластера (
rmngr) — ведёт реестр кластера: список баз, сеансов, рабочих серверов, блокировок. Порт по умолчанию1541. - ⚙️ Рабочие процессы (
rphost) — выполняют серверный код конфигурации: проведение документов, запросы, отчёты, фоновые задания. Используют диапазон портов, по умолчанию1560:1591; он задаётся в свойствах рабочего сервера. - 🛠 Сервер администрирования (
ras) — нужен для утилиты командной строкиrac, по умолчанию порт1545. - 🗄 СУБД — MS SQL Server, PostgreSQL или другая поддерживаемая. Она хранит данные, но в состав кластера 1С не входит.
Как идёт запрос пользователя
- Тонкий клиент обращается к агенту сервера по порту
1540. - Агент передаёт запрос менеджеру кластера (
1541). - Менеджер выбирает рабочий процесс и сообщает клиенту его адрес.
- Дальше клиент работает напрямую с рабочим процессом, а тот — с СУБД.
Из этой цепочки следуют требования к брандмауэру: открыть нужно не только 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С | Схема |
|---|---|---|---|
| До 30 | 4–8 ядер | 16–32 ГБ | 1С и СУБД на одной машине |
| 30–100 | 8–16 ядер | 32–64 ГБ | 1С и СУБД раздельно |
| 100–300 | 2 сервера 1С по 16 ядер | по 64 ГБ | Кластер, фоновые задания отдельно |
| Свыше 300 | 3 и более сервера | от 64 ГБ на сервер | Кластер с резервированием и реплицируемой СУБД |
Цифры ориентировочные: «тяжёлая» ERP на 50 пользователей может нагрузить сервер сильнее, чем Бухгалтерия на 150.
Что важнее всего для 1С
- Частота ядра. Серверный вызов однопоточный, поэтому высокая частота процессора ускоряет проведение сильнее, чем лишние ядра.
- Задержка до СУБД. Сервер 1С и СУБД обмениваются тысячами мелких запросов. Держите их в одной стойке с сетью 10 Гбит/с или на одной машине.
- Диски СУБД. Под данные, журнал транзакций и
tempdb— быстрые NVMe-диски, лучше раздельные. - Память СУБД. Если база целиком помещается в кэш СУБД, нагрузка на диски падает в разы.
Как спланировать рост
- 📏 Снимите базовую загрузку за обычный месяц и за закрытие периода .
- ➕ Заложите запас 30–50% по процессору и памяти.
- 🧪 Проверьте сценарий отказа: выключите один сервер в тестовом контуре и посмотрите, выдержат ли оставшиеся пиковую нагрузку.
Ошибки при построении кластера 1С
- ❌ Разные версии платформы на серверах. Все рабочие серверы кластера должны работать на одной и той же версии. Обновляйте их одновременно.
- ❌ Закрыт диапазон портов на одном из узлов. Клиент получает адрес рабочего процесса, но не может к нему подключиться — ошибка выглядит случайной, потому что падает не на каждом сеансе.
- ❌ Резервирование только сервера 1С. Если СУБД одна и без реплики, второй сервер 1С при её отказе бесполезен.
- ❌ Неодинаковое время на серверах. Расхождение часов мешает работе кластера и путает журналы. Синхронизируйте время с одним источником.
- ❌ Кластер вместо оптимизации. Если тормозит один отчёт или одна обработка, новый сервер не поможет — сначала разберите запрос.
Частые вопросы
Можно ли собрать кластер 1С из серверов на Windows и Linux?
Сколько серверных лицензий нужно для кластера?
Ускорит ли кластер работу файловой базы?
.dt.