Как устроен кластер серверов 1С:Предприятия 8.3 и как настроить его под нагрузку
Содержание
Кластер серверов
1С:Предприятия — это группа из одного или нескольких рабочих серверов, которые совместно обслуживают клиент-серверные информационные базы. На каждом сервере работают три типа процессов: агент ragent (порт 1540), менеджер кластера rmngr (порт 1541) и рабочие процессы rphost (по умолчанию диапазон 1560–1591). Управляют кластером через консоль «Администрирование серверов 1С Предприятия» или утилиту rac.
Типичная ситуация: в компании было 15 пользователей на одной базе, стало 80 и три базы. По утрам всё «висит», один rphost съедает 12 ГБ памяти, а бухгалтерия жалуется на зависание при проведении. Решается это не покупкой нового железа вслепую, а пониманием, как устроен кластер, как он раздаёт сеансы и какие его параметры влияют на производительность и отказоустойчивость. Ниже — архитектура, настройка и диагностика для платформы 8.3 версии 8.3.2x.
Из чего состоит кластер серверов 1С: процессы, порты и роли
Кластер — логическая сущность. Физически это службы и процессы на одном или нескольких компьютерах.
| Компонент | Процесс | Порт по умолчанию | Что делает |
|---|---|---|---|
| Агент сервера | ragent | 1540 | Запускает менеджер кластера, хранит список кластеров и администраторов центрального сервера, принимает подключения консоли |
| Менеджер кластера | rmngr | 1541 | Ведёт реестр кластера: базы, рабочие серверы, сеансы, блокировки, распределяет нагрузку |
| Рабочий процесс | rphost | диапазон 1560–1591 | Выполняет серверный код конфигурации, держит соединения с СУБД |
| Сервер администрирования | ras | 1545 | Шлюз для rac и внешних инструментов управления |
Как идёт подключение клиента:
- Клиент обращается к агенту на центральном сервере (порт 1540).
- Агент передаёт его менеджеру кластера (порт 1541).
- Менеджер выбирает рабочий процесс и сообщает клиенту его адрес и порт из диапазона.
- Дальше клиент работает напрямую с
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С балансирует соединения при подключении, а не отдельные запросы. Если пользователь открыл сеанс на перегруженном процессе, его не перекинут на свободный посреди работы. Перераспределение происходит при переподключении или перезапуске процесса.
Режим распределения нагрузки
В свойствах кластера есть параметр «Режим распределения нагрузки»:
- 🚀 Приоритет по производительности — менеджер старается дать соединение самому быстрому процессу, даже ценой роста памяти. Подходит, когда памяти на серверах с запасом.
- 🧠 Приоритет по памяти — менеджер экономит память и охотнее загружает уже работающие процессы. Подходит для серверов, где памяти впритык.
Параметры рабочего сервера, которые влияют на распределение
| Параметр | Что регулирует | Ориентир |
|---|---|---|
| Количество ИБ на процесс | Сколько баз обслуживает один rphost | 0 — без ограничений; 1 — каждая база в своих процессах |
| Количество соединений на процесс | Порог, после которого запускается новый процесс | Обычно 0 (без ограничений) или 50–150 для крупных баз |
| Менеджер под каждый сервис | Выносит сервисы кластера в отдельные процессы rmngr | Включают на нагруженных кластерах |
💡 Если в кластере есть «тяжёлая» база (ERP, УТ на сотню пользователей) и несколько лёгких, поставьте «Количество ИБ на процесс» = 1. Тогда утечка памяти или долгий запрос в одной базе не затормозит остальные.
Требования назначения функциональности
Когда рабочих серверов несколько, можно явно указать, что и где выполнять. Требования назначения функциональности задают в консоли у конкретного рабочего сервера. Примеры типичных правил:
- Фоновые и регламентные задания крупной базы — только на втором сервере.
- Сеансы клиентов этой базы — только на первом.
- Сервис полнотекстового поиска — на отдельном сервере.
Так бухгалтерия не чувствует ночной (а чаще дневной) пересчёт себестоимости или загрузку обмена.
Отказоустойчивость кластера серверов: резервирование и сценарии отказа
Одна машина — одна точка отказа. Сломался сервер — встали все базы. Платформа 8.3 позволяет сделать кластер отказоустойчивым.
Как это работает
- В кластер добавляют второй (третий) рабочий сервер.
- В его свойствах ставят флаг «Центральный сервер». Теперь реестр кластера реплицируется между центральными серверами.
- В свойствах кластера задают «Уровень отказоустойчивости» — сколько рабочих серверов может отказать одновременно без остановки работы. Для двух серверов это 1.
- Клиенты в строке подключения указывают оба сервера через запятую, например
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 ГБ памяти, две базы.
- Оставляем 8 ГБ операционной системе и антивирусу.
- Максимальный объём памяти рабочих процессов — 56 ГБ.
- Объём, до которого сервер производительный, — 48 ГБ (примерно 85% от 56).
- Безопасный расход за один вызов — 4 ГБ: ни один отчёт не должен брать больше.
- Допустимый объём памяти процесса — 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С:Предприятия 8.3».
- Удалите каталоги
snccntx*внутриsrvinfo\reg_1541. Файл1CV8Clst.lstне трогайте. - Запустите службу и проверьте вход в базы.
Безопасность и разграничение прав в кластере 1С
По умолчанию кластер открыт: любой, кто дотянется до порта 1540 консолью, может удалить базу из кластера или завершить чужие сеансы. Закройте это в первую очередь.
Три уровня администраторов
- Администраторы центрального сервера (агента) — могут создавать и удалять кластеры. Задаются в узле «Администраторы» центрального сервера.
- Администраторы кластера — управляют базами, сеансами, рабочими серверами конкретного кластера.
- Пользователи информационной базы — логин и пароль внутри конфигурации. Их кластер запрашивает при удалении базы, блокировке сеансов и изменении параметров базы.
Как только вы создадите первого администратора, консоль начнёт спрашивать пароль. Заведите учётную запись для себя и резервную, пароль храните в менеджере паролей.
Если пароль администратора кластера потерян, остановите службу и восстановите 1CV8Clst.lst из резервной копии каталога srvinfo. Не пытайтесь «пересоздать кластер»: вместе с ним пропадут регистрации баз и все настройки.
Учётная запись службы
Служба агента по умолчанию работает от локального пользователя USR1CV8. Ему нужны права на каталог srvinfo, каталог технологического журнала и на подключение к СУБД (если используется проверка подлинности Windows). Не запускайте службу от имени доменного администратора — это расширяет последствия любой ошибки в серверном коде.
Прочие настройки
- 🔐 Безопасность соединения в свойствах кластера: «Выключено», «При соединении» или «Постоянно». Шифрование трафика нужно, если клиенты подключаются через небезопасную сеть.
- 🛡️ Профили безопасности — ограничивают, к каким каталогам, COM-объектам и внешним компонентам имеет доступ код базы. Полезны, если в базы загружают внешние обработки.
- 🚫 Блокировка начала сеансов и Блокировка регламентных заданий в свойствах базы — для обновлений и копий базы. Задаётся по базе, не влияет на соседние.
- 🌐 Порты 1540, 1541, 1545 и диапазон рабочих процессов не выставляйте в интернет. Удалённых пользователей подключайте через VPN, RDP или веб-публикацию.