Кластер серверов 1С:Предприятия: устройство, отказоустойчивость и балансировка
Содержание
Кластеризация 1С — это объединение одного или нескольких компьютеров с сервером 1С:Предприятия 8.3 в единый кластер, который сам распределяет сеансы пользователей по рабочим процессам и серверам. На практике она решает две задачи: выдержать нагрузку сотен пользователей и не остановить работу, если один сервер выйдет из строя.
Даже сервер 1С, установленный на одну машину, — уже кластер, только из одного рабочего сервера. Добавляете второй и третий компьютер — получаете масштабирование и резервирование. Всё настраивается в консоли администрирования серверов 1С или утилитой rac, без правки конфигурации базы.
Архитектура кластера 1С: агент, менеджер и рабочие процессы
Кластер состоит из нескольких процессов. Они запускаются на каждом сервере, который в него входит, и общаются по TCP.
| Процесс | Файл | Порт по умолчанию | Что делает |
|---|---|---|---|
| Агент сервера | ragent | 1540 | Точка входа: принимает клиентов и консоль, хранит список кластеров |
| Менеджер кластера | rmngr | 1541 | Ведёт реестр кластера, сеансы, блокировки, сервисы |
| Рабочий процесс | rphost | 1560–1591 | Выполняет серверный код и запросы к СУБД |
| Сервер администрирования | ras | 1545 | Посредник для утилиты rac |
Путь клиента такой. Толстый или тонкий клиент сначала обращается к агенту на порт 1540. Агент передаёт его менеджеру кластера на 1541. Менеджер выбирает рабочий процесс и выдаёт клиенту его адрес из диапазона портов. Дальше клиент работает напрямую с rphost.
Консоль администрирования серверов (оснастка MMC) подключается к агенту, то есть тоже на 1540. Утилите rac нужен запущенный ras.
Центральный и рабочий сервер
🔹 Центральный сервер — тот, где хранится реестр кластера и работает главный менеджер. Именно его указывают в строке подключения Srvr="имя_сервера".
🔹 Рабочий сервер — любой компьютер кластера, на котором запускаются рабочие процессы. Центральный сервер тоже обычно рабочий.
🔹 Признак «Центральный сервер» ставится в свойствах рабочего сервера. Центральных серверов в кластере может быть несколько — это и есть основа отказоустойчивости в 8.3.
Реестр кластера хранится в каталоге службы, по умолчанию C:\Program Files\1cv8\srvinfo\reg_1541. Там же лежат каталоги сеансовых данных snccntx* — их ещё называют кэшем сервера.
Виды кластеризации серверов 1С и сценарии отказоустойчивости
Под словом «кластеризация» в 1С скрывается несколько разных механизмов. Их часто путают, хотя решают они разные задачи.
| Вид | Как устроен | Что даёт | Чего не даёт |
|---|---|---|---|
| Один сервер, много процессов | Один компьютер, несколько rphost | Распределение пользователей по процессам, перезапуск «тяжёлого» процесса | Защиты от отказа железа |
| Горизонтальное масштабирование | Несколько рабочих серверов, один центральный | Рост числа пользователей и фоновых заданий | Работы при падении центрального |
| Отказоустойчивый кластер | Несколько центральных серверов, уровень отказоустойчивости ≥ 1 | Переживает падение одного или нескольких серверов | Защиты от отказа СУБД |
| Выделение функций | Требования назначения функциональности | Фоновые задания или журналы — на отдельный сервер | Сам по себе отказоустойчивости |
Что происходит при отказе сервера
Если в кластере два центральных сервера и уровень отказоустойчивости равен 1, то при падении одного из них кластер продолжает работать. Реестр и служебные данные хранятся на обоих.
Пользователи, чьи сеансы обслуживал упавший сервер, увидят ошибку соединения. Клиент переподключится к живому серверу, но незаписанные данные в открытых формах пропадут. Это не «бесшовный» переход, а быстрый возврат к работе.
Уровень отказоустойчивости — это сколько серверов может выйти из строя одновременно. Центральных серверов должно быть больше этого числа. Ставить уровень 2 при двух центральных серверах бессмысленно.
Слабое место — СУБД
Кластер 1С резервирует только свою часть. База данных MS SQL Server или PostgreSQL остаётся одной точкой отказа. Для неё нужна своя схема: кластер Windows Server Failover Cluster, Always On, потоковая репликация PostgreSQL с автоматическим переключением.
Если сервер СУБД упал, никакое число серверов 1С базу не спасёт.
Настройка балансировки нагрузки в кластере 1С
Балансировка настраивается в трёх местах: свойства кластера, свойства рабочего сервера и требования назначения функциональности. Все они есть в консоли Администрирование серверов 1С Предприятия.
Шаг 1. Добавить сервер в кластер
- На новом компьютере установите сервер 1С той же версии, что и на центральном. Номер сборки платформы должен совпадать до последней цифры.
- Запустите службу агента сервера.
- В консоли откройте центральный сервер, раскройте кластер, затем ветку
Рабочие серверы. - Правой кнопкой —
Создать→Рабочий сервер. Укажите имя компьютера и порт агента (1540). - Откройте свойства нового сервера и задайте диапазон портов рабочих процессов, если он отличается от 1560–1591.
Шаг 2. Свойства рабочего сервера
Здесь задаётся, сколько работы сервер возьмёт на себя.
🔧 Количество ИБ на процесс и Количество соединений на процесс — сколько баз и соединений помещается в один rphost. При нуле решает платформа. Для тяжёлых баз ставят одну базу на процесс.
🔧 Максимальный объём памяти рабочих процессов — потолок для всех rphost сервера. Защищает сервер от ухода в своп.
🔧 Безопасный расход памяти за один вызов — если серверный вызов съел больше, он будет прерван. Спасает от отчёта, который за минуту выедает всю память.
🔧 Центральный сервер — флажок, который делает сервер резервным держателем реестра.
🔧 Менеджер под каждый сервис — запускает отдельные процессы rmngr для служебных сервисов. Помогает на больших кластерах, где один менеджер становится узким местом.
Шаг 3. Свойства кластера
В свойствах кластера (правой кнопкой по кластеру → Свойства):
- ⚙️ Уровень отказоустойчивости — сколько серверов может отказать одновременно.
- ⚙️ Режим распределения нагрузки — приоритет по производительности или по памяти. Первый ставит сеанс на самый быстрый процесс, второй экономит память.
- ⚙️ Интервал перезапуска — плановый перезапуск рабочих процессов в секундах. Значение 86400 — раз в сутки. Новые соединения уходят на новый процесс, старый доживает до освобождения.
- ⚙️ Допустимый объём памяти и Интервал превышения — если процесс держит больше памяти дольше заданного времени, кластер его перезапустит.
- ⚙️ Принудительно завершать проблемные процессы — включайте осознанно: при срабатывании оборвутся сеансы, которые в нём работают.
Шаг 4. Требования назначения функциональности
ТНФ задают, какой сервер какие объекты обслуживает. Ветка находится внутри каждого рабочего сервера: Требования назначения функциональности.
Типичный пример — отправить фоновые задания на отдельный сервер:
- На основном сервере создайте требование: объект «Фоновое задание», тип «Не назначать».
- На выделенном сервере: объект «Фоновое задание», тип «Назначать».
- В свойствах кластера нажмите
Применить требования(или примените их частично — без разрыва текущих сеансов).
Таким же способом выносят сервис журналов регистрации, полнотекстового поиска или клиентские соединения конкретной базы. Если требований нет, работает правило «Авто» — нагрузку распределяет кластер.
Полное применение требований перераспределяет соединения, и часть пользователей переподключится. Делайте это вне рабочего времени или выбирайте частичное применение.
Требования к железу и сети для кластеризации 1С
Кластер плохо прощает медленную сеть. Между серверами 1С постоянно идут служебные вызовы, а между 1С и СУБД — каждый запрос пользователя.
Сеть
- 🌐 Серверы 1С и СУБД — в одной локальной сети, не ниже 1 Гбит/с, лучше 10 Гбит/с между 1С и СУБД.
- 🌐 Задержка между узлами — доли миллисекунды. Кластер, растянутый между двумя городами, работать будет, но медленно.
- 🌐 Каждый сервер должен разрешать имена остальных. Если DNS ненадёжен, пропишите все узлы в
C:\Windows\System32\drivers\etc\hostsна каждом сервере и на клиентах. - 🌐 Часы на всех узлах синхронизированы с одним источником времени.
Порты в брандмауэре
Откройте входящие подключения на каждом сервере кластера:
1540 агент сервера (ragent)
1541 менеджер кластера (rmngr)
1560-1591 рабочие процессы (rphost), диапазон из свойств рабочего сервера
1545 сервер администрирования (ras), если используете rac
Если вы увеличили диапазон портов в свойствах рабочего сервера, расширьте и правило брандмауэра. Клиентам нужен доступ ко всем этим портам, а не только к 1540.
Процессор, память, диск
| Ресурс | Ориентир | Комментарий |
|---|---|---|
| Процессор | Высокая частота важнее числа ядер | Один серверный вызов выполняется в одном потоке |
| Память | Ориентировочно 16–32 ГБ на рабочий сервер для 50–100 пользователей | Плюс запас под Максимальный объём памяти рабочих процессов |
| Диск | SSD под каталог srvinfo и временные файлы | Сеансовые данные пишутся на диск постоянно |
| Платформа | Одна и та же сборка на всех узлах | Иначе сервер не войдёт в кластер |
Цифры по памяти — грубый ориентир. Реальная потребность зависит от конфигурации: ERP на 100 пользователей и БП на 100 пользователей нагружают сервер по-разному.
Ещё один момент — лицензия. Расширенные механизмы кластера (требования назначения функциональности, несколько рабочих серверов с балансировкой, отказоустойчивость) относятся к редакции сервера КОРП. Перед проектом проверьте, какая лицензия сервера у вас куплена.
Мониторинг и диагностика кластера серверов 1С
Что смотреть в консоли
В консоли администрирования у каждого кластера есть ветки:
- 📊
Рабочие процессы— память, число соединений, средняя длительность вызова и доступная производительность каждогоrphost. Процесс с низкой производительностью и большой памятью — первый кандидат на разбор. - 📊
Сеансы— кто подключён, к какой базе, с какого компьютера, какая лицензия. Здесь же видно, сколько сеанс занимает в вызове. - 📊
Блокировки— управляемые блокировки 1С. Помогают найти, кто держит данные. - 📊
Соединения— соединения с базой на уровне процессов.
То же из командной строки
Утилита rac удобна для скриптов и мониторинга по расписанию. Сначала запустите сервер администрирования, затем обращайтесь к нему:
ras cluster --daemon
rac cluster list
rac server list --cluster=<uuid_кластера>
rac process list --cluster=<uuid_кластера>
rac session list --cluster=<uuid_кластера> --licenses
Если на кластере заданы администраторы, добавляйте --cluster-user= и --cluster-pwd=. Полный список параметров — в rac help и rac <режим> help.
Технологический журнал
Когда консоль показывает «всё медленно», а причину не видно, включают технологический журнал. Он настраивается файлом logcfg.xml в каталоге conf платформы. Обычно собирают события EXCP (исключения), TLOCK и TDEADLOCK (блокировки), DBMSSQL или DBPOSTGRS (запросы к СУБД длиннее порога).
Технологический журнал без фильтров быстро забивает диск. Ставьте ограничение по длительности событий и срок хранения, а после диагностики выключайте лишнее.
Частые симптомы
Крайняя мера при странном поведении кластера — очистка сеансовых данных: остановить службу агента, удалить каталоги snccntx* внутри reg_1541, запустить службу. При остановке службы оборвутся все сеансы всех пользователей — делайте это только вне рабочего времени и после предупреждения.
Безопасность кластера 1С и разграничение прав
По умолчанию кластер открыт: любой, кто дотянется до порта 1540 консолью, может завершать сеансы, удалять базы из кластера и менять настройки. Закрыть это нужно до ввода в работу.
Три уровня администраторов
- Администраторы центрального сервера — ветка
Администраторыпод самим сервером в консоли. Могут создавать и удалять кластеры. - Администраторы кластера — ветка
Администраторывнутри кластера. Управляют сеансами, процессами, базами этого кластера. - Права в информационной базе — пользователи 1С и пароль к СУБД в свойствах базы. Чтобы создать или удалить базу в кластере, нужны и права кластера, и данные пользователя СУБД.
Первым создавайте администратора с аутентификацией Windows или паролем и сразу проверяйте вход. Если создать запись и закрыть консоль с ошибкой в пароле, войти будет нельзя. Тогда нужно остановить службу и восстановить реестр кластера из резервной копии каталога srvinfo или обратиться к администратору сервера.
Учётная запись службы
Служба агента по умолчанию работает от локального пользователя USR1CV8. Ей не нужны права администратора Windows. Достаточно полного доступа к каталогу srvinfo и права входа в качестве службы.
Не запускайте службу от доменного администратора: любая внешняя обработка, выполненная на сервере, получит эти же права.
Защита соединения и профили безопасности
- 🔒 В свойствах кластера есть параметр Уровень безопасности соединения: незащищённое, защищённое или постоянно защищённое. Защищённое шифрует трафик между клиентом и кластером.
- 🔒 Профили безопасности ограничивают, что может делать код конфигурации на сервере: доступ к файлам, COM-объектам, внешним компонентам, интернет-ресурсам. Профиль назначают базе в её свойствах в консоли.
- 🔒 Доступ к портам кластера ограничьте брандмауэром: только сеть пользователей и серверы СУБД, без проброса в интернет.
Частые ошибки при кластеризации серверов 1С
- ❌ Разные сборки платформы на узлах. Обновили один сервер, второй забыли — кластер разваливается. Обновляйте все узлы в одно окно.
- ❌ Второй сервер без флажка «Центральный сервер». Сервер добавлен, нагрузка делится, но при падении основного всё равно всё стоит.
- ❌ Отказоустойчивый кластер 1С на одном сервере СУБД. Деньги потрачены на второй сервер 1С, а точка отказа осталась.
- ❌ Открыт только порт 1540. Консоль работает, а клиенты не подключаются.
- ❌ Нет администратора кластера. Любой пользователь сети может открыть консоль и завершить чужие сеансы.
- ❌ Кластер через медленный канал. Рабочий сервер в другом филиале замедляет всех, кому выпал его процесс.
Частые вопросы
Можно ли сделать кластер 1С из одного сервера?
Нужна ли отдельная лицензия на второй сервер кластера?
Работает ли кластеризация 1С с файловой базой?
Можно ли управлять кластером без консоли MMC?
ras и работайте утилитой rac из командной строки — так управляют кластером на Linux и в скриптах мониторинга.