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

· 10 мин

Содержание

Кластер серверов 1С — это группа процессов сервера 1С:Предприятия 8.3 (на одном или нескольких компьютерах), которая принимает подключения клиентов, выполняет серверный код конфигурации и работает с базой данных в СУБД. Клиент сначала обращается к агенту сервера на порт 1540, тот передаёт его менеджеру кластера (1541), а менеджер назначает рабочий процесс из диапазона 1560–1591.

Как только база переводится из файлового варианта в клиент-серверный, кластер появляется в любом случае: даже на одном сервере установщик создаёт «Локальный кластер». Вопрос не в том, нужен ли кластер, а в том, сколько в нём рабочих серверов и как распределить между ними нагрузку.

Что делает кластер серверов 1С и зачем он нужен

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

Что кластер берёт на себя:

  • 🔄 Распределение нагрузки — сеансы пользователей раскладываются по рабочим процессам и серверам.
  • 🔒 Управляемые блокировки — менеджер блокировок не даёт двум пользователям одновременно испортить одни и те же данные.
  • 📝 Сервисы платформы — журнал регистрации, полнотекстовый поиск, регламентные задания, сеансовые данные.
  • 🛡 Отказоустойчивость — если рабочих серверов несколько, сеансы с упавшего сервера можно перевести на другой.
  • 🧮 Учёт лицензий — кластер следит, сколько клиентских подключений занято.

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

Из каких процессов состоит кластер и как они общаются

Архитектура удобнее всего читается через процессы, которые видно в диспетчере задач или в ps на Linux.

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

Последовательность подключения выглядит так:

  1. Клиент обращается к агенту ragent по имени сервера и порту 1540.
  2. Агент сообщает адрес менеджера кластера rmngr.
  3. Менеджер проверяет, есть ли такая информационная база, и выбирает рабочий процесс.
  4. Клиент устанавливает соединение с rphost и дальше работает напрямую с ним.
  5. Рабочий процесс ходит в СУБД и возвращает клиенту результат.

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

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

Каждый компьютер в кластере — это рабочий сервер. Тот, на котором хранится реестр кластера, называют центральным. Файлы настроек лежат в каталоге srvinfo: в Windows обычно C:\Program Files\1cv8\srvinfo, в Linux — в домашнем каталоге пользователя usr1cv8. Реестр кластера — файл 1CV8Clst.lst.

Каталог srvinfo стоит включить в резервное копирование. При потере пароля администратора кластера или повреждении реестра именно копия 1CV8Clst.lst возвращает настройки без пересоздания кластера.

Сервисы кластера

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

Когда одного сервера уже мало: пять признаков

Большинство небольших компаний годами живут на одном рабочем сервере, и это нормально. Добавлять второй сервер стоит, когда видны конкретные симптомы.

  1. Процессор сервера стабильно загружен выше 80% в рабочие часы, и это не СУБД, а процессы rphost.
  2. Рабочие процессы упираются в память и перезапускаются по превышению допустимого объёма несколько раз в день.
  3. Регламентные задания и обмены тормозят интерактивную работу — закрытие месяца или выгрузка на сайт «вешает» всех пользователей.
  4. Простой сервера недопустим — остановка на час означает остановку отгрузок или кассы.
  5. Пользователей больше 100–150 одновременно, и в журнале появляются долгие серверные вызовы без видимой причины в коде.

Если симптом только один и он про скорость отчётов, сначала проверьте запросы и индексы. Второй сервер не ускорит плохой запрос — он просто выполнит его на другом железе.

Что у вас сейчас?

Как настроить кластер серверов 1С: от установки до второго сервера

Минимальная рабочая схема — для Windows Server 2016 и новее. На Linux порядок тот же, но управление идёт через ras и rac.

Шаг 1. Установка сервера

  1. Запустите установщик технологической платформы и отметьте компонент «Сервер 1С:Предприятия 8».
  2. Выберите установку сервера как службы Windows и укажите пользователя, от которого она будет работать (обычно отдельная учётная запись USR1CV8).
  3. Отметьте «Администрирование сервера 1С:Предприятия» — это оснастка консоли.
  4. Установите серверную лицензию (программную или аппаратный ключ).

После установки служба 1C:Enterprise 8.3 Server Agent поднимает агент, менеджер и рабочий процесс, а кластер на порту 1541 создаётся автоматически.

Шаг 2. Подключение в консоли

  1. Откройте «Администрирование серверов 1С Предприятия» из меню «Пуск».
  2. Если оснастка не открывается или пустая, зарегистрируйте её от имени администратора:
regsvr32 "C:\Program Files\1cv8\8.3.25.1374\bin\radmin.dll"

Номер версии в пути подставьте свой — он должен совпадать с версией установленного сервера.

  1. В дереве нажмите правой кнопкой «Центральные серверы 1С:Предприятия» → «Создать» → «Центральный сервер 1С:Предприятия 8.3» и укажите имя компьютера.
  2. Раскройте «Кластеры» → «Локальный кластер».

Шаг 3. Администраторы кластера и базы

  1. В ветке «Администраторы» создайте администратора кластера. Пока список пуст, управлять кластером может любой, кто подключится к консоли.
  2. В ветке «Информационные базы» создайте базу: укажите имя, тип СУБД, сервер СУБД, имя базы данных и пользователя СУБД.
  3. Добавьте базу в список у пользователей, указав сервер и имя базы в кластере.

Шаг 4. Второй рабочий сервер

  1. На второй машине установите ту же версию платформы и запустите службу агента.
  2. В консоли центрального сервера откройте «Рабочие серверы» → «Создать».
  3. Укажите имя компьютера, порт агента 1540 и диапазон портов рабочих процессов.
  4. Задайте ограничения: количество баз и соединений на процесс, безопасный и критический объём памяти.
  5. Перейдите в «Требования назначения функциональности» и опишите, какой сервер что обслуживает — например, фоновые задания конкретной базы только на втором сервере.

Версии платформы на всех серверах кластера должны совпадать до последней цифры. Иначе второй сервер не войдёт в кластер или будет отвергать подключения.

Работа через командную строку

На Linux и в скриптах кластер администрируют через rac. Сначала запускают сервер администрирования:

ras cluster --daemon
rac cluster list
rac session list --cluster=<UUID кластера>

UUID кластера берут из вывода rac cluster list. Полный перечень команд и параметров — в rac help.

Мониторинг и тонкая настройка кластера

Начинать мониторинг стоит с того, что уже есть в консоли.

  • 📊 Рабочие процессы — колонки занятой памяти, доступной производительности и среднего времени вызова. Резкое падение доступной производительности у одного процесса — сигнал, что он перегружен.
  • 👥 Сеансы — кто подключён, к какой базе, на каком процессе, сколько времени идёт вызов.
  • 🔐 Блокировки — кто и что держит. Полезно, когда пользователи жалуются на ожидание.

Для разбора «почему медленно» включают технологический журнал. Он настраивается файлом logcfg.xml в каталоге conf платформы. Пример, который пишет долгие вызовы и исключения:

<config xmlns="http://v8.1c.ru/v8/tech-log">
  <log location="D:\techlog" history="24">
    <event><eq property="name" value="EXCP"/></event>
    <event><eq property="name" value="CALL"/><gt property="duration" value="30000"/></event>
    <property name="all"/>
  </log>
</config>

Технологический журнал без фильтров за несколько часов заполняет диск десятками гигабайт. Включайте его на ограниченное время, ставьте history и выносите каталог на диск, где нет базы СУБД.

Что настраивают для стабильности:

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

Для крупных внедрений есть «Центр управления производительностью» из состава корпоративного инструментального пакета. Он собирает метрики APDEX и счётчики сервера в одну картину.

Частые сбои кластера и что с ними делать

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

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

При очистке кэша удаляйте только файлы snccntx*. Каталоги с GUID баз и файл 1CV8Clst.lst не трогайте — это реестр кластера.

Кластер 1С против других вариантов работы

Кластер — не единственный способ дать базу многим пользователям. Сравнение по сути:

ВариантКогда подходитОграничения
Файловая базаДо 5–10 пользователей, небольшие объёмыНет СУБД и сервера, медленнее при росте, выше риск повреждения
Один рабочий сервер (локальный кластер)Десятки пользователей, обычный офисОдна точка отказа
Кластер из нескольких рабочих серверовСотни пользователей, критичный простойНужна лицензия КОРП и квалифицированный администратор
Терминальный сервер поверх кластераУдалённые офисы, слабые каналыНагрузка на терминальный сервер, лицензии RDS
Облачная 1С (аренда)Нет своего администратораОграничения на доработки и интеграции

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

Лицензии: ПРОФ и КОРП

Серверная лицензия бывает двух видов. С ПРОФ кластер работает, но часть функций управления недоступна — в том числе требования назначения функциональности, без которых не разнести нагрузку по серверам осмысленно. Если планируется больше одного рабочего сервера, сразу закладывайте КОРП. Клиентские лицензии кластер считает общими для всех рабочих серверов.

Куда движется серверная часть 1С

За последние годы заметны несколько устойчивых направлений.

  • 🐧 Linux и отечественные ОС. Сервер 1С давно полноценно работает на Linux, а связка с PostgreSQL стала обычным выбором вместо MS SQL Server.
  • 🗄 Импортозамещение СУБД. Растёт число внедрений на сборках PostgreSQL от российских разработчиков, кластеры переносят с Windows на Linux целиком.
  • 📦 Контейнеры и виртуализация. Рабочие серверы всё чаще разворачивают на виртуальных машинах, чтобы добавлять мощность без закупки железа.
  • 🤖 Автоматизация администрирования. ras/rac позволяют управлять кластером из скриптов: собирать сеансы, перезапускать процессы, выгружать метрики в системы мониторинга.

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

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

Можно ли поставить сервер 1С и СУБД на один компьютер?
Да, для небольших компаний это обычная схема. Разносить их на разные машины стоит, когда СУБД и рабочие процессы начинают конкурировать за память и диск.
Сколько рабочих серверов можно добавить в кластер?
Платформа не ограничивает их число жёстко. На практике ограничивают лицензия, сеть и сервер СУБД: он общий для всех рабочих серверов и часто становится узким местом раньше.
Нужен ли отдельный кластер для каждой базы?
Нет. Один кластер обслуживает десятки баз. Отдельный кластер на другом порту создают, когда нужно изолировать тестовые базы от рабочих или запустить разные версии платформы.
Файловую базу можно подключить к кластеру?
Нет, кластер работает только с базами в СУБД. Файловую базу сначала выгружают в .dt и загружают в новую клиент-серверную базу.
Что будет, если упадёт центральный сервер?
Без резервирования новые подключения станут невозможны, текущие сеансы оборвутся. Поэтому при нескольких серверах настраивают резервирование менеджера кластера на втором рабочем сервере.