Кластер серверов 1С:Предприятия: устройство, отказоустойчивость и балансировка

· 11 мин

Содержание

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

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

Архитектура кластера 1С: агент, менеджер и рабочие процессы

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

ПроцессФайлПорт по умолчаниюЧто делает
Агент сервераragent1540Точка входа: принимает клиентов и консоль, хранит список кластеров
Менеджер кластераrmngr1541Ведёт реестр кластера, сеансы, блокировки, сервисы
Рабочий процессrphost1560–1591Выполняет серверный код и запросы к СУБД
Сервер администрированияras1545Посредник для утилиты 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. На новом компьютере установите сервер 1С той же версии, что и на центральном. Номер сборки платформы должен совпадать до последней цифры.
  2. Запустите службу агента сервера.
  3. В консоли откройте центральный сервер, раскройте кластер, затем ветку Рабочие серверы.
  4. Правой кнопкой — Создать → Рабочий сервер. Укажите имя компьютера и порт агента (1540).
  5. Откройте свойства нового сервера и задайте диапазон портов рабочих процессов, если он отличается от 1560–1591.

Шаг 2. Свойства рабочего сервера

Здесь задаётся, сколько работы сервер возьмёт на себя.

🔧 Количество ИБ на процесс и Количество соединений на процесс — сколько баз и соединений помещается в один rphost. При нуле решает платформа. Для тяжёлых баз ставят одну базу на процесс.

🔧 Максимальный объём памяти рабочих процессов — потолок для всех rphost сервера. Защищает сервер от ухода в своп.

🔧 Безопасный расход памяти за один вызов — если серверный вызов съел больше, он будет прерван. Спасает от отчёта, который за минуту выедает всю память.

🔧 Центральный сервер — флажок, который делает сервер резервным держателем реестра.

🔧 Менеджер под каждый сервис — запускает отдельные процессы rmngr для служебных сервисов. Помогает на больших кластерах, где один менеджер становится узким местом.

Шаг 3. Свойства кластера

В свойствах кластера (правой кнопкой по кластеру → Свойства):

  • ⚙️ Уровень отказоустойчивости — сколько серверов может отказать одновременно.
  • ⚙️ Режим распределения нагрузки — приоритет по производительности или по памяти. Первый ставит сеанс на самый быстрый процесс, второй экономит память.
  • ⚙️ Интервал перезапуска — плановый перезапуск рабочих процессов в секундах. Значение 86400 — раз в сутки. Новые соединения уходят на новый процесс, старый доживает до освобождения.
  • ⚙️ Допустимый объём памяти и Интервал превышения — если процесс держит больше памяти дольше заданного времени, кластер его перезапустит.
  • ⚙️ Принудительно завершать проблемные процессы — включайте осознанно: при срабатывании оборвутся сеансы, которые в нём работают.

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

ТНФ задают, какой сервер какие объекты обслуживает. Ветка находится внутри каждого рабочего сервера: Требования назначения функциональности.

Типичный пример — отправить фоновые задания на отдельный сервер:

  1. На основном сервере создайте требование: объект «Фоновое задание», тип «Не назначать».
  2. На выделенном сервере: объект «Фоновое задание», тип «Назначать».
  3. В свойствах кластера нажмите Применить требования (или примените их частично — без разрыва текущих сеансов).

Таким же способом выносят сервис журналов регистрации, полнотекстового поиска или клиентские соединения конкретной базы. Если требований нет, работает правило «Авто» — нагрузку распределяет кластер.

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

Требования к железу и сети для кластеризации 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. Администраторы центрального сервера — ветка Администраторы под самим сервером в консоли. Могут создавать и удалять кластеры.
  2. Администраторы кластера — ветка Администраторы внутри кластера. Управляют сеансами, процессами, базами этого кластера.
  3. Права в информационной базе — пользователи 1С и пароль к СУБД в свойствах базы. Чтобы создать или удалить базу в кластере, нужны и права кластера, и данные пользователя СУБД.

Первым создавайте администратора с аутентификацией Windows или паролем и сразу проверяйте вход. Если создать запись и закрыть консоль с ошибкой в пароле, войти будет нельзя. Тогда нужно остановить службу и восстановить реестр кластера из резервной копии каталога srvinfo или обратиться к администратору сервера.

Учётная запись службы

Служба агента по умолчанию работает от локального пользователя USR1CV8. Ей не нужны права администратора Windows. Достаточно полного доступа к каталогу srvinfo и права входа в качестве службы.

Не запускайте службу от доменного администратора: любая внешняя обработка, выполненная на сервере, получит эти же права.

Защита соединения и профили безопасности

  • 🔒 В свойствах кластера есть параметр Уровень безопасности соединения: незащищённое, защищённое или постоянно защищённое. Защищённое шифрует трафик между клиентом и кластером.
  • 🔒 Профили безопасности ограничивают, что может делать код конфигурации на сервере: доступ к файлам, COM-объектам, внешним компонентам, интернет-ресурсам. Профиль назначают базе в её свойствах в консоли.
  • 🔒 Доступ к портам кластера ограничьте брандмауэром: только сеть пользователей и серверы СУБД, без проброса в интернет.

Частые ошибки при кластеризации серверов 1С

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

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

Можно ли сделать кластер 1С из одного сервера?
Да. Любая установка сервера 1С — кластер из одного рабочего сервера. Несколько рабочих процессов на нём уже распределяют нагрузку, но от отказа железа не защищают.
Нужна ли отдельная лицензия на второй сервер кластера?
Лицензия сервера 1С выдаётся на компьютер, где работают рабочие процессы. Каждому рабочему серверу нужна своя лицензия сервера, клиентские лицензии остаются общими.
Работает ли кластеризация 1С с файловой базой?
Нет. Кластер обслуживает только клиент-серверные базы на MS SQL Server, PostgreSQL и других поддерживаемых СУБД. Файловую базу сначала переводят в клиент-серверный вариант через выгрузку и загрузку .dt.
Можно ли управлять кластером без консоли MMC?
Да. Запустите сервер администрирования ras и работайте утилитой rac из командной строки — так управляют кластером на Linux и в скриптах мониторинга.
Сколько пользователей выдерживает один рабочий сервер?
Ориентировочно от 50 до 150 пользователей типовой конфигурации на современном сервере. Точную цифру даёт только нагрузочный тест на вашей базе.