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

· 10 мин

Содержание

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

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

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

В кластере 8.3 работают три вида процессов. У каждого своя задача и свой порт.

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

Кроме них есть два вспомогательных компонента:

  • 🛠 Сервер администрирования ras (порт 1545) — нужен для утилиты командной строки rac и сторонних консолей.
  • 🗄 СУБД — MS SQL Server, PostgreSQL, IBM Db2 или Oracle. Сама СУБД в кластер 1С не входит, это отдельный сервер, к которому обращаются рабочие процессы.

Где лежат служебные файлы. На Windows каталог srvinfo по умолчанию находится в C:\Program Files\1cv8\srvinfo. Внутри — реестр кластера 1CV8Clst.lst и папка reg_1541 с данными менеджера и кэшем сеансов. Файл 1CV8Clst.lst хранит список баз, администраторов и параметры кластера. Его стоит копировать в резервную копию вместе с базами.

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

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

Для небольшой фирмы на 10–40 пользователей кластер обычно состоит из одного компьютера. Несколько серверов в кластере нужны, когда упираются в процессор или память одной машины либо нужна отказоустойчивость.

Как менеджер кластера распределяет нагрузку

Путь клиента при подключении такой:

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

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

По какому принципу выбирается рабочий процесс

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

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

  • ⚡ Приоритет по производительности — клиенты распределяются по самым «быстрым» процессам;
  • 💾 Приоритет по памяти — менеджер старается не запускать лишние процессы и экономит оперативную память.

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

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

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

Установка и первичная настройка кластера 1С

На Windows сервер 1С ставится тем же дистрибутивом, что и клиент, но с отмеченными компонентами «Сервер 1С:Предприятия» и, при необходимости, «Модули расширения веб-сервера» и «Администрирование сервера 1С:Предприятия».

Порядок действий:

  1. Запустите установку платформы нужной версии и отметьте компонент «Сервер 1С:Предприятия».
  2. Выберите установку как службы Windows и укажите пользователя, от имени которого служба будет работать. Обычно создают отдельную учётную запись USR1CV8 без прав администратора домена.
  3. После установки проверьте в оснастке «Службы», что служба агента сервера 1С:Предприятия 8.3 запущена.
  4. Откройте в брандмауэре порты 1540, 1541, 1545 (если нужен rac) и диапазон 1560–1591.
  5. Зарегистрируйте консоль администрирования (см. ниже) и подключитесь к серверу.
  6. В консоли раскройте кластер «Локальный кластер», в узле «Информационные базы» создайте базу или подключите существующую базу СУБД.

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

Консоль не открывается — перерегистрируйте radmin.dll

Консоль «Администрирование серверов 1С Предприятия» — это оснастка MMC. Она работает через библиотеку radmin.dll, которую нужно зарегистрировать для той версии платформы, что установлена на сервере. После обновления платформы консоль часто перестаёт подключаться именно из-за старой регистрации.

Командная строка от имени администратора:

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

Подставьте свой номер версии. Регистрировать нужно 64-битную библиотеку, если стоит 64-битная платформа.

Сервер администрирования и утилита rac

Для автоматизации и работы с Linux-сервером удобнее rac. Сначала запускают сервер администрирования, затем обращаются к нему:

ras cluster --port=1545 localhost:1540
rac cluster list

Команда rac cluster list выводит идентификаторы кластеров. Почти все остальные команды требуют параметр --cluster=<идентификатор>. Полный список подкоманд смотрите в справке rac help.

Параметры кластера, которые стоит задать сразу

Свойства кластера открываются в консоли правой кнопкой по кластеру. Минимум, который настраивают на рабочем сервере:

  • 🔐 Администратор кластера. Пока администраторов нет, управлять кластером может любой, кто дотянулся до порта 1540. Заведите администратора в узле «Администраторы» и сохраните пароль в надёжном месте.
  • 🔁 Интервал перезапуска рабочих процессов, например 86400 секунд (раз в сутки). Процесс перезапускается мягко: новые соединения идут в новый rphost, старый живёт, пока не уйдут его клиенты.
  • 📈 Допустимый объём памяти и интервал превышения. Если процесс держит память выше порога дольше интервала, кластер его перезапустит.
  • 🧹 Принудительно завершать проблемные процессы — включайте осознанно: сеансы на таком процессе оборвутся.

Ограничения для рабочих процессов задают в свойствах рабочего сервера: «Количество ИБ на процесс», «Количество соединений на процесс», «Максимальный объём памяти рабочих процессов», «Безопасный расход памяти за один вызов» и диапазон IP-портов.

Кластер готов к работе
Выполнено: 0 / 6

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

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

  • Доступная производительность — чем ниже относительно соседей, тем хуже процесс отвечает;
  • Среднее время обслуживания клиентского потока и затраченное время на вызовы СУБД — показывают, где тратится время: в 1С или в базе данных;
  • Занято памяти — помогает поймать утечку;
  • Количество соединений.

Как читать картину

Что видноВероятная причинаЧто проверить
Время уходит на вызовы СУБДТяжёлые запросы, нехватка индексов, устаревшая статистикаПлан обслуживания СУБД, профилирование запросов
Время уходит в самой 1С, процессор на 100%Тяжёлый серверный код, много фоновых заданийРегламентные задания, расширения и обработки
Память rphost растёт суткамиУтечка в коде или в платформеЛимит памяти, интервал перезапуска, обновление платформы
Сеансы стоят в ожиданииУправляемые блокировкиУзел «Блокировки», технологический журнал

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

Когда консоли не хватает, включают технологический журнал. Его настраивают файлом logcfg.xml в каталоге bin\conf установленной платформы. Минимальная настройка для поиска длинных вызовов и взаимоблокировок:

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

Журнал пишется на диск очень быстро. Ставьте history в часах (здесь 24) и выносите location на диск, где не лежат базы. После расследования удалите или переименуйте logcfg.xml.

Сеансы и соединения: как посмотреть и как завершить

В узле информационной базы в консоли есть раздел «Сеансы». Там видно, кто работает, из какого приложения (тонкий клиент, конфигуратор, фоновое задание, COM-соединение), на каком компьютере и в каком рабочем процессе.

Сеанс и соединение — разные вещи. Сеанс — это логическая работа пользователя с базой, соединение — канал между клиентом и рабочим процессом. Один сеанс может не иметь активного соединения (например, пользователь ушёл на обед, а окно открыто), но лицензию он всё равно держит.

Завершение сеанса

В консоли: выделите сеанс в списке, правой кнопкой — «Удалить». Через rac:

rac session list --cluster=<id_кластера>
rac session terminate --cluster=<id_кластера> --session=<id_сеанса>

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

Блокировка начала сеансов

Чтобы во время работ никто не зашёл в базу, в свойствах информационной базы в консоли включают «Блокировку начала сеансов»: указывают время начала и окончания, сообщение для пользователей и код разрешения. С этим кодом администратор войдёт в заблокированную базу через параметр запуска /UC<код>.

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

Лицензии в кластере

Клиентские лицензии на клиент-серверную базу выдаёт менеджер кластера. Посмотреть, кто какую занял, можно командой rac session list --cluster=<id> --licenses или в консоли в узле «Сеансы», где у сеанса показан тип лицензии. Для самого сервера нужна отдельная лицензия на сервер 1С:Предприятия; без неё клиент-серверная база не запустится.

Если кластер не отвечает: частые сбои и что делать

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

Очистка кэша сеансов сервера

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

  1. Предупредите пользователей: остановка службы обрывает все сеансы всех баз кластера. Делайте это вечером или в выходной.
  2. Остановите службу агента сервера 1С:Предприятия.
  3. Убедитесь в диспетчере задач, что не осталось процессов ragent, rmngr, rphost.
  4. В каталоге srvinfo\reg_1541 удалите папки, имена которых начинаются на snccntx. Файл 1CV8Clst.lst и папки с идентификаторами баз не трогайте.
  5. Запустите службу и проверьте вход в базы.

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

Потерян пароль администратора кластера

Пароль хранится в реестре кластера, сбросить его из консоли нельзя. Рабочий путь — остановить службу, восстановить 1CV8Clst.lst из резервной копии, где пароль известен, и запустить службу. Если копии нет, обратитесь к администратору сервера, который настраивал кластер, — ковырять файл реестра вручную опасно.

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

Нужен ли кластер серверов, если пользователей всего 5–7?
Нет, обычно хватает файловой базы. Клиент-серверный режим со своим кластером оправдан при 15–20 одновременных пользователях и выше, при больших базах или требованиях к надёжности.
Можно ли запустить на одном компьютере два кластера разных версий платформы?
Да. Для этого вторую службу агента устанавливают на других портах, например 2540, 2541 и диапазон 2560–2591. В адресе базы тогда указывают порт: srv1c:2541.
Чем отличается кластер 1С от кластера СУБД?
Кластер 1С распределяет работу процессов платформы, а данные хранит СУБД. Отказоустойчивость СУБД (зеркалирование, репликация) настраивается отдельно, средствами самой СУБД.
Влияет ли количество рабочих процессов на число лицензий?
Нет. Клиентские лицензии считаются по сеансам пользователей, а не по процессам. Количество рабочих процессов зависит от нагрузки и параметров рабочего сервера.
Как добавить в кластер второй сервер?
Установите на второй компьютер ту же версию сервера 1С, затем в консоли центрального сервера в узле «Рабочие серверы» создайте новый сервер с его именем и портами. Порты между машинами должны быть открыты в обе стороны.