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

· 10 мин

Содержание

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

Звучит как три шага, но кластер чаще всего ломается на мелочах: разные сборки платформы, закрытые порты, имена серверов, которые не резолвятся в обе стороны. Порядок действий одинаков для платформы 8.3 на Windows Server 2016 и новее; отличия для Linux отмечены отдельно.

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

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

ПроцессРольПорт по умолчанию
ragentагент сервера: принимает первое обращение клиента и консоли, хранит список кластеров1540
rmngrменеджер кластера: реестр баз, сеансы, блокировки, распределение нагрузки1541
rphostрабочие процессы: выполняют серверный код, работают с СУБДдиапазон 1560:1591
rasсервер администрирования для утилиты rac и веб-консолей1545

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

  1. 🔌 Клиент обращается к агенту на порт 1540 центрального сервера.
  2. 📋 Агент передаёт его менеджеру кластера (1541).
  3. ⚙️ Менеджер выбирает рабочий процесс на одном из рабочих серверов и отдаёт клиенту его адрес и порт из диапазона.
  4. 🔁 Дальше клиент работает с этим 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

  1. Запустите setup.exe из дистрибутива технологической платформы.
  2. В составе компонентов отметьте «Сервер 1С:Предприятия 8» и «Администрирование сервера 1С:Предприятия». Компонент сервера администрирования (ras) поставьте, если будете пользоваться rac.
  3. На шаге параметров установки выберите «Установить 1С:Предприятие 8 как сервис Windows » и укажите учётную запись службы.
  4. После установки проверьте в 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

Дальше всё делается на центральном сервере:

  1. В консоли раскройте «Локальный кластер» → «Рабочие серверы».
  2. Правой кнопкой «Создать» → «Рабочий сервер».
  3. Укажите имя компьютера (как оно резолвится с клиентов), порт агента 1540 и диапазон портов, например 1560:1591.
  4. Если сервер должен хранить реестр кластера — отметьте «Центральный сервер» (подробнее в разделе об отказоустойчивости).
  5. Нажмите «ОК» и подождите несколько секунд: в разделе «Рабочие процессы» должны появиться rphost нового сервера.

Если процессы не появились — значит, центральный сервер не достучался до агента второй машины или она не может ответить по имени. Это проверяется в первую очередь (см. диагностику ниже).

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

Перед добавлением рабочего сервера
Выполнено: 0 / 6

Балансировка нагрузки и рабочие процессы

Распределением занимается менеджер кластера: новое соединение он отдаёт рабочему процессу, у которого лучше показатели доступной производительности. Влиять на это можно на трёх уровнях.

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

ПараметрЧто даёт
Режим распределения нагрузки«Приоритет по производительности» или «Приоритет по памяти»
Интервал перезапускаплановый перезапуск рабочих процессов, лечит медленные утечки памяти
Допустимый объём памяти и интервал превышенияпроцесс, который дольше заданного времени держит больше лимита, будет перезапущен
Уровень отказоустойчивостисколько серверов может выйти из строя без остановки кластера

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

  • 🧮 Количество ИБ на процесс — сколько баз обслуживает один rphost. Значение 1 изолирует базы друг от друга: зависание одной базы не тянет остальные.
  • 👥 Количество соединений на процесс — после достижения лимита сервер поднимает новый процесс. Ноль — без ограничения, тогда процессы растут по внутренним правилам платформы.
  • 💾 Максимальный объём памяти рабочих процессов и Безопасный расход памяти за один вызов — защищают сервер от тяжёлого запроса, который съедает всю ОЗУ.
  • 🔀 Менеджер под каждый сервис — выносит сервисы кластера в отдельные процессы rmngr. Помогает на нагруженных кластерах, где один менеджер становится узким местом.

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

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

Это правила «что на каком сервере выполнять». Находятся в узле рабочего сервера, раздел «Требования назначения функциональности». Типичные сценарии:

  • ⏰ Фоновые и регламентные задания — на отдельный сервер, чтобы ночная загрузка банка не тормозила пользователей.
  • 👤 Клиентские соединения конкретной тяжёлой базы — только на мощный сервер.
  • 🔍 Сервис полнотекстового поиска или журналов регистрации — на сервер с быстрыми дисками.

Требование задаётся объектом (клиентское соединение, фоновое задание, сервис), типом («Назначать» / «Не назначать») и при необходимости — именем информационной базы. После изменения требований примените их командой «Применить полностью» на кластере — иначе новые правила коснутся только новых соединений.

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

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

  1. Добавьте второй рабочий сервер с флажком «Центральный сервер».
  2. В свойствах кластера установите «Уровень отказоустойчивости» = 1. Это значит, что кластер переживёт отказ одного сервера.
  3. Пропишите в строке подключения клиентов оба адреса через запятую:
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. Так делают для тестовой среды на другой сборке платформы.
Нужна ли отдельная клиентская лицензия на каждый рабочий сервер?
Нет. Клиентские лицензии выдаются на уровне кластера. Серверная лицензия нужна на каждой машине, где запускаются рабочие процессы.
Обязательно ли ставить СУБД на отдельную машину?
Нет, но при высокой нагрузке сервер 1С и СУБД конкурируют за память и диск. Для кластера из нескольких серверов отдельный сервер СУБД — обычная практика.
Как обновлять платформу в кластере?
Одновременно на всех серверах: остановить службы, установить новую сборку, поправить путь в строке запуска службы, перерегистрировать radmin.dll, запустить службы. Сеансы при этом прерываются, поэтому обновление планируют на нерабочее время.