Как устроен кластер серверов 1С:Предприятия 8.3 и как настроить его под нагрузку

· 11 мин

Содержание

Кластер серверов 1С:Предприятия — это группа из одного или нескольких рабочих серверов, которые совместно обслуживают клиент-серверные информационные базы. На каждом сервере работают три типа процессов: агент ragent (порт 1540), менеджер кластера rmngr (порт 1541) и рабочие процессы rphost (по умолчанию диапазон 1560–1591). Управляют кластером через консоль «Администрирование серверов 1С Предприятия» или утилиту rac.

Типичная ситуация: в компании было 15 пользователей на одной базе, стало 80 и три базы. По утрам всё «висит», один rphost съедает 12 ГБ памяти, а бухгалтерия жалуется на зависание при проведении. Решается это не покупкой нового железа вслепую, а пониманием, как устроен кластер, как он раздаёт сеансы и какие его параметры влияют на производительность и отказоустойчивость. Ниже — архитектура, настройка и диагностика для платформы 8.3 версии 8.3.2x.

Из чего состоит кластер серверов 1С: процессы, порты и роли

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

КомпонентПроцессПорт по умолчаниюЧто делает
Агент сервераragent1540Запускает менеджер кластера, хранит список кластеров и администраторов центрального сервера, принимает подключения консоли
Менеджер кластераrmngr1541Ведёт реестр кластера: базы, рабочие серверы, сеансы, блокировки, распределяет нагрузку
Рабочий процессrphostдиапазон 1560–1591Выполняет серверный код конфигурации, держит соединения с СУБД
Сервер администрированияras1545Шлюз для rac и внешних инструментов управления

Как идёт подключение клиента:

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

Отсюда главный вывод для сетевиков: на файрволе открывают не только 1540 и 1541, но и весь диапазон портов рабочих процессов. Диапазон задаётся в свойствах рабочего сервера. Если открыть только 1540–1541, клиент «видит» кластер, но не может подключиться к базе.

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

Каждый компьютер кластера — рабочий сервер. Сервер, на котором хранится реестр кластера и к которому подключаются клиенты, — центральный. В небольших внедрениях это один и тот же компьютер.

Реестр кластера лежит в каталоге службы, по умолчанию C:\Program Files\1cv8\srvinfo\reg_1541. Главный файл — 1CV8Clst.lst: в нём список баз, серверов и администраторов кластера.

💡 Делайте копию каталога srvinfo (при остановленной службе) после каждой серьёзной перенастройки. Восстановить кластер из копии 1CV8Clst.lst быстрее, чем вспоминать параметры двадцати баз.

Служба агента

Служба ставится вместе с сервером 1С. Строка запуска выглядит так (версия платформы — ваша):

"C:\Program Files\1cv8\8.3.24.1548\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo"

Здесь -port — порт агента, -regport — порт менеджера кластера, -range — диапазон рабочих процессов, -d — каталог реестра. Чтобы поднять на одном компьютере второй кластер (например, тестовый под другой релиз), регистрируют вторую службу со своими портами: 2540, 2541, 2560:2591.

На всех рабочих серверах кластера должна стоять одна и та же версия платформы. Если обновили платформу на одном сервере, обновляйте и остальные, иначе сервер не войдёт в кластер.

Как кластер 1С распределяет сеансы и нагрузку

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

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

Режим распределения нагрузки

В свойствах кластера есть параметр «Режим распределения нагрузки»:

  • 🚀 Приоритет по производительности — менеджер старается дать соединение самому быстрому процессу, даже ценой роста памяти. Подходит, когда памяти на серверах с запасом.
  • 🧠 Приоритет по памяти — менеджер экономит память и охотнее загружает уже работающие процессы. Подходит для серверов, где памяти впритык.

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

ПараметрЧто регулируетОриентир
Количество ИБ на процессСколько баз обслуживает один rphost0 — без ограничений; 1 — каждая база в своих процессах
Количество соединений на процессПорог, после которого запускается новый процессОбычно 0 (без ограничений) или 50–150 для крупных баз
Менеджер под каждый сервисВыносит сервисы кластера в отдельные процессы rmngrВключают на нагруженных кластерах

💡 Если в кластере есть «тяжёлая» база (ERP, УТ на сотню пользователей) и несколько лёгких, поставьте «Количество ИБ на процесс» = 1. Тогда утечка памяти или долгий запрос в одной базе не затормозит остальные.

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

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

  1. Фоновые и регламентные задания крупной базы — только на втором сервере.
  2. Сеансы клиентов этой базы — только на первом.
  3. Сервис полнотекстового поиска — на отдельном сервере.

Так бухгалтерия не чувствует ночной (а чаще дневной) пересчёт себестоимости или загрузку обмена.

Отказоустойчивость кластера серверов: резервирование и сценарии отказа

Одна машина — одна точка отказа. Сломался сервер — встали все базы. Платформа 8.3 позволяет сделать кластер отказоустойчивым.

Как это работает

  1. В кластер добавляют второй (третий) рабочий сервер.
  2. В его свойствах ставят флаг «Центральный сервер». Теперь реестр кластера реплицируется между центральными серверами.
  3. В свойствах кластера задают «Уровень отказоустойчивости» — сколько рабочих серверов может отказать одновременно без остановки работы. Для двух серверов это 1.
  4. Клиенты в строке подключения указывают оба сервера через запятую, например Srvr="srv1c-01,srv1c-02";Ref="buh";.

При падении одного сервера сеансы, работавшие на нём, обрываются, пользователи переподключаются. Сервисы кластера продолжают работу на оставшемся центральном сервере. Незаписанные данные в оборвавшихся сеансах теряются — отказоустойчивость кластера не равна «бесшовности».

Отказоустойчивость кластера 1С не защищает базу данных. Если упадёт сервер СУБД, кластер останется жив, но работать будет не с чем. Резервирование СУБД (Always On в MS SQL, репликация в PostgreSQL) настраивают отдельно.

Лицензия сервера

Несколько рабочих серверов в кластере, отказоустойчивость и требования назначения функциональности — возможности лицензии сервера уровня КОРП. Лицензия сервера ПРОФ рассчитана на один рабочий сервер. Перед проектом резервирования проверьте, какая лицензия у вас установлена: состав возможностей уточняйте у партнёра под ваш релиз платформы.

Сравнение вариантов резервирования

ВариантКогда подходитРиски
Один сервер + ежедневные копии базДо 30–50 пользователей, простой допустим на часыВосстановление занимает время, теряются данные с последней копии
Холодный резерв: второй сервер с настроенной службой и копией srvinfoСредние компании, лицензия ПРОФПереключение вручную, нужно менять адрес в списке баз или DNS
Отказоустойчивый кластер из 2–3 серверовКруглосуточная работа, сотни пользователейНужна лицензия КОРП, отдельное резервирование СУБД

Настройка рабочих процессов и параметров памяти кластера

Основная масса проблем с производительностью — это неправильно заданные лимиты памяти. Параметры есть в двух местах: в свойствах кластера и в свойствах рабочего сервера.

Свойства кластера

  • 🔄 Интервал перезапуска — через сколько секунд рабочие процессы перезапускаются плановым порядком. 0 — не перезапускать. Ориентир — 86400 (раз в сутки), если есть утечки памяти.
  • 📦 Допустимый объём памяти и Интервал превышения допустимого объёма памяти — если процесс держит больше заданного объёма дольше интервала, кластер выключает его: новые соединения идут в новый процесс, старый завершается, когда уйдут пользователи.
  • 🧯 Выключенные процессы останавливать через — сколько секунд ждать перед принудительной остановкой выключенного процесса.
  • ❗ Принудительно завершать проблемные процессы — флаг, при котором зависшие процессы завершаются автоматически.

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

  • Максимальный объём памяти рабочих процессов — общий потолок для всех rphost на сервере. При его превышении новые вызовы начинают получать ошибки.
  • Безопасный расход памяти за один вызов — если один серверный вызов «съедает» больше, кластер прерывает его. Защищает от отчёта, который пытается выгрузить всю базу.
  • Объём памяти рабочих процессов, до которого сервер считается производительным — порог, после которого менеджер старается не давать этому серверу новые соединения.
  • Диапазон IP-портов — диапазон портов для рабочих процессов.

Пример расчёта для сервера с 64 ГБ

Сервер 1С отдельно от СУБД, 64 ГБ памяти, две базы.

  1. Оставляем 8 ГБ операционной системе и антивирусу.
  2. Максимальный объём памяти рабочих процессов — 56 ГБ.
  3. Объём, до которого сервер производительный, — 48 ГБ (примерно 85% от 56).
  4. Безопасный расход за один вызов — 4 ГБ: ни один отчёт не должен брать больше.
  5. Допустимый объём памяти процесса — 10 ГБ, интервал превышения — 300 секунд.

Проверка: 56 + 8 = 64 ГБ, 48 < 56, 4 < 10. Цифры согласованы.

Если сервер 1С и СУБД стоят на одной машине, сначала ограничьте память СУБД (в MS SQL — параметр максимальной памяти сервера, в PostgreSQL — shared_buffers и work_mem), а остаток делите между ОС и 1С. Иначе СУБД заберёт всё и рабочие процессы начнут падать.

Мониторинг производительности кластера и диагностика проблем

Что смотреть в консоли

В консоли администрирования раскройте кластер:

  • Рабочие процессы — колонки занятой памяти, количества соединений, доступной производительности и среднего времени вызова. Процесс с резко упавшей доступной производительностью — первый подозреваемый.
  • Сеансы — у каждого сеанса видны пользователь, приложение, время начала, объём памяти и время вызова. Отсюда находят «тяжёлый» сеанс.
  • Блокировки — кто какие данные держит. Полезно при ошибке ожидания на блокировке.
  • Счётчики потребления ресурсов — позволяют собирать статистику по сеансам по условию (база, пользователь, приложение) и накладывать ограничения.

То же из командной строки

Сначала запустите сервер администрирования ras, затем используйте rac:

rac cluster list
rac process list --cluster=<uuid-кластера>
rac session list --cluster=<uuid-кластера>
rac session list --cluster=<uuid-кластера> --licenses

UUID кластера берут из вывода rac cluster list. Остальные подкоманды и параметры смотрите в rac help — их много, и они удобны для скриптов мониторинга.

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

Когда консоли мало, включают технологический журнал. Файл logcfg.xml кладут в каталог conf платформы (например, C:\Program Files\1cv8\conf). Минимальная настройка для поиска исключений и долгих вызовов:

<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">
  <log location="D:\1c_techlog" history="24">
    <event>
      <eq property="name" value="EXCP"/>
    </event>
    <event>
      <eq property="name" value="CALL"/>
      <gt property="duration" value="50000"/>
    </event>
    <property name="all"/>
  </log>
</config>

history="24" — хранить журнал 24 часа. Пишите журнал на отдельный диск: на нагруженном сервере он растёт на гигабайты в час.

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

Частые симптомы и что делать

Диагностика: выберите симптом

Пара пояснений к последним двум пунктам.

Консоль — это оснастка MMC, и для каждой версии платформы её библиотеку регистрируют отдельно:

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

Очистка сеансовых данных:

  1. Предупредите пользователей: остановка службы оборвёт все сеансы во всех базах кластера. Делайте это вечером или в выходной.
  2. Остановите службу «Агент сервера 1С:Предприятия 8.3».
  3. Удалите каталоги snccntx* внутри srvinfo\reg_1541. Файл 1CV8Clst.lst не трогайте.
  4. Запустите службу и проверьте вход в базы.

Безопасность и разграничение прав в кластере 1С

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

Три уровня администраторов

  1. Администраторы центрального сервера (агента) — могут создавать и удалять кластеры. Задаются в узле «Администраторы» центрального сервера.
  2. Администраторы кластера — управляют базами, сеансами, рабочими серверами конкретного кластера.
  3. Пользователи информационной базы — логин и пароль внутри конфигурации. Их кластер запрашивает при удалении базы, блокировке сеансов и изменении параметров базы.

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

Если пароль администратора кластера потерян, остановите службу и восстановите 1CV8Clst.lst из резервной копии каталога srvinfo. Не пытайтесь «пересоздать кластер»: вместе с ним пропадут регистрации баз и все настройки.

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

Служба агента по умолчанию работает от локального пользователя USR1CV8. Ему нужны права на каталог srvinfo, каталог технологического журнала и на подключение к СУБД (если используется проверка подлинности Windows). Не запускайте службу от имени доменного администратора — это расширяет последствия любой ошибки в серверном коде.

Прочие настройки

  • 🔐 Безопасность соединения в свойствах кластера: «Выключено», «При соединении» или «Постоянно». Шифрование трафика нужно, если клиенты подключаются через небезопасную сеть.
  • 🛡️ Профили безопасности — ограничивают, к каким каталогам, COM-объектам и внешним компонентам имеет доступ код базы. Полезны, если в базы загружают внешние обработки.
  • 🚫 Блокировка начала сеансов и Блокировка регламентных заданий в свойствах базы — для обновлений и копий базы. Задаётся по базе, не влияет на соседние.
  • 🌐 Порты 1540, 1541, 1545 и диапазон рабочих процессов не выставляйте в интернет. Удалённых пользователей подключайте через VPN, RDP или веб-публикацию.

Частые вопросы о кластере серверов 1С

Нужен ли кластер, если сервер 1С один?
Да, кластер есть всегда: при установке сервера создаётся «Локальный кластер» с одним рабочим сервером. Вопрос только в том, добавлять ли к нему другие серверы.
Можно ли держать на одном компьютере два кластера разных версий платформы?
Можно. Для каждой версии регистрируют отдельную службу агента со своими портами (например, 1540 и 2540) и своим каталогом srvinfo. Клиенты указывают порт в имени сервера: srv1c:2541.
Сколько пользователей выдерживает один рабочий сервер?
Зависит от конфигурации и сценариев. Ориентировочно: 50–100 активных пользователей БП или ЗУП на сервере с 8 ядрами и 32–64 ГБ памяти. Для ERP с проведением в реальном времени нужен запас в 2–3 раза.
Где хранятся данные баз — в кластере или в СУБД?
Данные хранятся в СУБД (MS SQL, PostgreSQL и др.). Кластер хранит только регистрацию базы: имя, сервер СУБД, имя базы данных, учётную запись и параметры. Удаление базы из кластера без флага удаления базы данных данные не трогает.
Почему после добавления второго сервера ничего не ускорилось?
Балансировка срабатывает на новых соединениях. Пока пользователи не переподключились, они работают на прежних процессах. Также проверьте, не запрещено ли требованиями назначения функциональности использовать новый сервер.