Кластер из нескольких серверов 1С:Предприятия 8.3: установка, рабочие серверы, балансировка
Содержание
Кластер серверов 1С делают так: на первую машину ставят сервер 1С:Предприятия как службу — он сам создаёт кластер с портом 1541 и становится центральным. Затем на остальные машины ставят сервер той же сборки, а в консоли администрирования центрального узла добавляют их как рабочие серверы и настраивают распределение нагрузки.
Звучит как три шага, но кластер чаще всего ломается на мелочах: разные сборки платформы, закрытые порты, имена серверов, которые не резолвятся в обе стороны. Порядок действий одинаков для платформы 8.3 на Windows Server 2016 и новее; отличия для Linux отмечены отдельно.
Как устроен кластер серверов 1С: агент, менеджер и рабочие процессы
Кластер — это логическое объединение одного или нескольких рабочих серверов, которые обслуживают общий список информационных баз. На каждой машине работают свои процессы:
| Процесс | Роль | Порт по умолчанию |
|---|---|---|
ragent | агент сервера: принимает первое обращение клиента и консоли, хранит список кластеров | 1540 |
rmngr | менеджер кластера: реестр баз, сеансы, блокировки, распределение нагрузки | 1541 |
rphost | рабочие процессы: выполняют серверный код, работают с СУБД | диапазон 1560:1591 |
ras | сервер администрирования для утилиты rac и веб-консолей | 1545 |
Как идёт подключение клиента:
- 🔌 Клиент обращается к агенту на порт
1540центрального сервера. - 📋 Агент передаёт его менеджеру кластера (
1541). - ⚙️ Менеджер выбирает рабочий процесс на одном из рабочих серверов и отдаёт клиенту его адрес и порт из диапазона.
- 🔁 Дальше клиент работает с этим
rphostнапрямую.
Отсюда главное следствие: клиент должен видеть по сети каждый рабочий сервер, а не только центральный. Если второй сервер недоступен с рабочего места, сеанс упадёт в момент, когда менеджер направит пользователя туда.
Центральный сервер — тот, на котором хранится реестр кластера (файл 1CV8Clst.lst в каталоге srvinfo\reg_1541). Остальные — рабочие серверы. В 8.3 центральных может быть несколько: реестр между ними реплицируется.
Подготовка инфраструктуры: сеть, версии, лицензии
До установки решите четыре вопроса. Каждый из них потом обходится дороже, чем сейчас.
Одна сборка платформы везде
На всех серверах кластера должна стоять одна и та же сборка платформы — до последней цифры, например 8.3.24.1691 на всех машинах. С разными сборками менеджер не договорится с агентом, и в журнале появятся ошибки протокола обмена. Разрядность тоже держите одинаковой — на практике это x86-64.
Клиенты должны подключаться той же сборкой. Если пользователи работают на старом клиенте, обновление сервера потребует обновить и рабочие места.
Имена и сеть
- 🖥️ Каждый сервер должен разрешать имена всех остальных — и короткое имя, и полное доменное. Без DNS пропишите строки в
C:\Windows\System32\drivers\etc\hostsна серверах и, при необходимости, на клиентах. - 🧱 В брандмауэре откройте входящие
1540,1541,1545и весь диапазон рабочих процессов (1560-1591) на каждом сервере. - ⏱️ Синхронизируйте время: расхождение часов путает журналы и мешает разбору инцидентов.
- 🗄️ Сервер СУБД доступен со всех рабочих серверов, а не только с центрального: базу открывает тот
rphost, к которому попал пользователь.
Учётная запись службы
Установщик предлагает создать локального пользователя USR1CV8. Для одного сервера этого хватает. В кластере удобнее доменная учётная запись: ей проще выдать права на сетевые каталоги (обмены, выгрузки, файлы внешних обработок), и права одинаковы на всех узлах. Учётной записи нужны полный доступ к каталогу srvinfo и право входа в качестве службы.
Лицензии
Программную лицензию на сервер нужно активировать на каждом рабочем сервере, где запускаются рабочие процессы. Клиентские лицензии кластер раздаёт сам.
Часть функций масштабирования — в частности, требования назначения функциональности и отказоустойчивость — работает только с серверной лицензией уровня КОРП. Если планируете больше одного рабочего сервера ради надёжности, сверьте состав лицензий у партнёра до покупки железа.
Ориентир по памяти: один рабочий процесс на загруженной базе легко занимает 2–4 ГБ и больше. Планируйте ОЗУ из числа процессов, а не по минимальным требованиям установщика.
Установка сервера 1С на центральный узел
Windows
- Запустите
setup.exeиз дистрибутива технологической платформы. - В составе компонентов отметьте «Сервер 1С:Предприятия 8» и «Администрирование сервера 1С:Предприятия». Компонент сервера администрирования (
ras) поставьте, если будете пользоватьсяrac. - На шаге параметров установки выберите «Установить 1С:Предприятие 8 как сервис Windows » и укажите учётную запись службы.
- После установки проверьте в
services.msc, что служба «Агент сервера 1С:Предприятия 8.3» запущена.
При первом запуске агент сам создаёт «Локальный кластер» на порту 1541. Он и станет основой — создавать кластер вручную не нужно.
Параметры службы лежат в строке её запуска (реестр, ветка службы, значение ImagePath):
"C:\Program Files\1cv8\8.3.24.1691\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo" -debug
Здесь -port — порт агента, -regport — порт менеджера кластера, -range — диапазон портов, -d — каталог данных кластера. Ключ -debug разрешает отладку на сервере — в продуктиве его обычно убирают.
Консоль администрирования
Консоль ставится вместе с компонентом администрирования. Если оснастка не открывается или пишет об ошибке класса, зарегистрируйте библиотеку вручную из командной строки администратора:
regsvr32 "C:\Program Files\1cv8\8.3.24.1691\bin\radmin.dll"
Регистрируйте библиотеку той же сборки, что и сервер. После обновления платформы этот шаг часто приходится повторять.
В консоли: правой кнопкой по «Central 1C:Enterprise 8.3 servers» → «Создать» → «Центральный сервер 1С:Предприятия 8.3», укажите имя машины и порт 1540. Разверните его — внутри будет «Локальный кластер».
Linux
Начиная с 8.3.20 платформа ставится единым установщиком setup-full-<версия>-x86_64.run, сервер выбирается компонентом. Службы запускаются через systemd; точные имена юнитов зависят от сборки, проверьте их командой systemctl list-units | grep 1C. Управление кластером на Linux удобнее вести через ras и rac:
rac cluster list
Команда покажет UUID кластера — он нужен почти для всех остальных команд rac. Синтаксис остальных подкоманд смотрите в rac help.
Первая база
Создайте базу в кластере: «Локальный кластер» → «Информационные базы» → правой кнопкой «Создать» → «Информационная база». Укажите имя базы в кластере, тип СУБД, адрес сервера СУБД и имя базы данных. Если отметить создание базы данных при её отсутствии, сервер 1С создаст её сам.
Как добавить рабочий сервер в кластер 1С
На второй машине повторите установку: та же сборка, установка службой, та же учётная запись. Проверьте, что служба агента запущена и порт 1540 доступен с центрального сервера:
Test-NetConnection srv-1c-02 -Port 1540
Дальше всё делается на центральном сервере:
- В консоли раскройте «Локальный кластер» → «Рабочие серверы».
- Правой кнопкой «Создать» → «Рабочий сервер».
- Укажите имя компьютера (как оно резолвится с клиентов), порт агента
1540и диапазон портов, например1560:1591. - Если сервер должен хранить реестр кластера — отметьте «Центральный сервер» (подробнее в разделе об отказоустойчивости).
- Нажмите «ОК» и подождите несколько секунд: в разделе «Рабочие процессы» должны появиться
rphostнового сервера.
Если процессы не появились — значит, центральный сервер не достучался до агента второй машины или она не может ответить по имени. Это проверяется в первую очередь (см. диагностику ниже).
На второй машине агент при первом запуске тоже создаёт собственный локальный кластер. Он живёт отдельно и к вашему кластеру не относится. Не регистрируйте в нём рабочие базы, иначе пользователи окажутся в двух разных кластерах с разными блокировками.
Балансировка нагрузки и рабочие процессы
Распределением занимается менеджер кластера: новое соединение он отдаёт рабочему процессу, у которого лучше показатели доступной производительности. Влиять на это можно на трёх уровнях.
Свойства кластера
| Параметр | Что даёт |
|---|---|
| Режим распределения нагрузки | «Приоритет по производительности» или «Приоритет по памяти» |
| Интервал перезапуска | плановый перезапуск рабочих процессов, лечит медленные утечки памяти |
| Допустимый объём памяти и интервал превышения | процесс, который дольше заданного времени держит больше лимита, будет перезапущен |
| Уровень отказоустойчивости | сколько серверов может выйти из строя без остановки кластера |
Свойства рабочего сервера
- 🧮 Количество ИБ на процесс — сколько баз обслуживает один
rphost. Значение1изолирует базы друг от друга: зависание одной базы не тянет остальные. - 👥 Количество соединений на процесс — после достижения лимита сервер поднимает новый процесс. Ноль — без ограничения, тогда процессы растут по внутренним правилам платформы.
- 💾 Максимальный объём памяти рабочих процессов и Безопасный расход памяти за один вызов — защищают сервер от тяжёлого запроса, который съедает всю ОЗУ.
- 🔀 Менеджер под каждый сервис — выносит сервисы кластера в отдельные процессы
rmngr. Помогает на нагруженных кластерах, где один менеджер становится узким местом.
Мощному серверу можно поставить больше процессов и соединений, слабому — меньше. Так нагрузка поделится пропорционально железу.
Требования назначения функциональности
Это правила «что на каком сервере выполнять». Находятся в узле рабочего сервера, раздел «Требования назначения функциональности». Типичные сценарии:
- ⏰ Фоновые и регламентные задания — на отдельный сервер, чтобы ночная загрузка банка не тормозила пользователей.
- 👤 Клиентские соединения конкретной тяжёлой базы — только на мощный сервер.
- 🔍 Сервис полнотекстового поиска или журналов регистрации — на сервер с быстрыми дисками.
Требование задаётся объектом (клиентское соединение, фоновое задание, сервис), типом («Назначать» / «Не назначать») и при необходимости — именем информационной базы. После изменения требований примените их командой «Применить полностью» на кластере — иначе новые правила коснутся только новых соединений.
Отказоустойчивость: второй центральный сервер
Один центральный сервер — единая точка отказа: если он упал, новые пользователи не подключатся, даже если рабочие серверы живы. Схема с резервированием выглядит так:
- Добавьте второй рабочий сервер с флажком «Центральный сервер».
- В свойствах кластера установите «Уровень отказоустойчивости» =
1. Это значит, что кластер переживёт отказ одного сервера. - Пропишите в строке подключения клиентов оба адреса через запятую:
Srvr="srv-1c-01,srv-1c-02";Ref="buh";
При отказе первого центрального сервера клиенты подключатся через второй. Сеансы, которые работали на упавшей машине, оборвутся — пользователю придётся переподключиться. Отказоустойчивость кластера 1С не делает отказоустойчивой СУБД: её резервируют средствами самой СУБД.
Перед тем как полагаться на схему, проверьте её в окно обслуживания: остановите службу на одном центральном сервере и убедитесь, что вход проходит через второй. Сеансы на этом сервере оборвутся, поэтому делайте проверку вне рабочего времени и предупредите пользователей.
Диагностика и мониторинг кластера 1С
Что смотреть в консоли каждый день
- 📊 Рабочие процессы — память, число соединений, «Доступная производительность». Процесс с аномально низкой производительностью при обычной нагрузке — кандидат на разбор.
- 🧑💻 Сеансы — кто сидит в базе, какое приложение, сколько времени длится текущий вызов.
- 🔒 Блокировки — кто держит объект, на котором ждут остальные.
Завершение рабочего процесса или сеанса прерывает работу пользователей на нём без сохранения. Перед этим посмотрите, кто подключён, и по возможности предупредите.
Технологический журнал
Для разбора медленных вызовов, исключений и взаимоблокировок включите технологический журнал: файл logcfg.xml в каталоге conf платформы (например, C:\Program Files\1cv8\conf). Включайте только нужные события и следите за местом на диске: журнал с полным набором событий за сутки занимает десятки гигабайт. Его нужно настраивать на каждом рабочем сервере.
Типовые сбои и что с ними делать
Кэш сервера
Если после смены состава кластера сервер ведёт себя странно — дублирующиеся сеансы, неверные пути, старые данные о базах, — помогает очистка сеансового кэша: остановить службу агента, удалить содержимое папок snccntx* в каталоге кластера srvinfo\reg_1541, запустить службу. Файлы 1CV8Clst.lst и реестр баз при этом не трогайте.
Остановка службы обрывает все сеансы на этом сервере — делайте это только вне рабочего времени и после резервной копии каталога srvinfo.
Частые вопросы
Можно ли собрать кластер на одном сервере?
Можно ли запустить два кластера на одной машине?
-port 2540 -regport 2541 -range 2560:2591, и отдельный каталог -d. Так делают для тестовой среды на другой сборке платформы.