Агент, менеджер, рабочие процессы: как устроен кластер 1С:Предприятия 8.3
Содержание
Кластер серверов 1С:Предприятия — это группа процессов на одном или нескольких компьютерах, которая обслуживает клиент-серверные информационные базы как единое целое. Клиент подключается к агенту сервера (порт 1540), агент передаёт его менеджеру кластера (порт 1541), а менеджер назначает рабочий процесс, который и выполняет код конфигурации и обращается к СУБД.
Если база в режиме клиент-сервер начала тормозить, «висят» сеансы или пользователи видят Сервер 1С:Предприятия не обнаружен, причина почти всегда в одном из звеньев этой цепочки. Разберитесь, как работает кластер 1С, — и сломанное звено находится за несколько минут.
Из чего состоит кластер 1С: процессы и их роли
В кластере 8.3 работают три вида процессов. У каждого своя задача и свой порт.
| Процесс | Исполняемый файл | Порт по умолчанию | Что делает |
|---|---|---|---|
| Агент сервера | ragent | 1540 | Принимает первое подключение, хранит список кластеров, через него работает консоль |
| Менеджер кластера | rmngr | 1541 | Ведёт реестр баз, сеансов, лицензий, распределяет клиентов по процессам |
| Рабочий процесс | 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 пользователей кластер обычно состоит из одного компьютера. Несколько серверов в кластере нужны, когда упираются в процессор или память одной машины либо нужна отказоустойчивость.
Как менеджер кластера распределяет нагрузку
Путь клиента при подключении такой:
- Клиент обращается к агенту по адресу сервера, например
srv1c:1540. - Агент сообщает адрес менеджера кластера (порт 1541).
- Менеджер проверяет базу, права и лицензию, создаёт сеанс.
- Менеджер выбирает рабочий процесс и передаёт клиенту его порт из диапазона.
- Дальше клиент общается напрямую с этим
rphost.
Отсюда практический вывод: в брандмауэре мало открыть 1540. Нужны 1540, 1541 и весь диапазон рабочих процессов. Если открыт только 1540, клиент «доходит» до сервера и падает на шаге 5.
По какому принципу выбирается рабочий процесс
Каждый rphost постоянно оценивается по показателю «Доступная производительность». Он считается по времени отклика процесса на эталонные вызовы. Новое соединение менеджер отдаёт процессу с лучшим показателем. Если на рабочем сервере открыто много соединений или процесс перегружен длинными вызовами, его показатель падает, и новые клиенты уходят на другие процессы.
В свойствах кластера есть параметр «Режим распределения нагрузки» с двумя вариантами:
- ⚡ Приоритет по производительности — клиенты распределяются по самым «быстрым» процессам;
- 💾 Приоритет по памяти — менеджер старается не запускать лишние процессы и экономит оперативную память.
На одиночном сервере разница почти не видна. На кластере из нескольких машин режим по производительности обычно даёт более ровную нагрузку.
Требования назначения функциональности
Если серверов несколько, можно указать, какие базы и какие сервисы где работают. Это делается в свойствах рабочего сервера, в разделе «Требования назначения функциональности». Например, выделить отдельный сервер под фоновые задания тяжёлой базы, чтобы ночные регламентные операции не мешали пользователям другой базы.
Установка и первичная настройка кластера 1С
На Windows сервер 1С ставится тем же дистрибутивом, что и клиент, но с отмеченными компонентами «Сервер 1С:Предприятия» и, при необходимости, «Модули расширения веб-сервера» и «Администрирование сервера 1С:Предприятия».
Порядок действий:
- Запустите установку платформы нужной версии и отметьте компонент «Сервер 1С:Предприятия».
- Выберите установку как службы Windows и укажите пользователя, от имени которого служба будет работать. Обычно создают отдельную учётную запись
USR1CV8без прав администратора домена. - После установки проверьте в оснастке «Службы», что служба агента сервера 1С:Предприятия 8.3 запущена.
- Откройте в брандмауэре порты 1540, 1541, 1545 (если нужен
rac) и диапазон 1560–1591. - Зарегистрируйте консоль администрирования (см. ниже) и подключитесь к серверу.
- В консоли раскройте кластер «Локальный кластер», в узле «Информационные базы» создайте базу или подключите существующую базу СУБД.
Версия клиента должна совпадать с версией сервера до последней цифры, например 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-портов.
Мониторинг и диагностика производительности
Первое, куда смотреть при жалобах «всё тормозит», — узел «Рабочие процессы» в консоли. Для каждого процесса там видны:
- Доступная производительность — чем ниже относительно соседей, тем хуже процесс отвечает;
- Среднее время обслуживания клиентского потока и затраченное время на вызовы СУБД — показывают, где тратится время: в 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С:Предприятия; без неё клиент-серверная база
не запустится.
Если кластер не отвечает: частые сбои и что делать
Test-NetConnection srv1c -Port 1540 в PowerShell.Очистка кэша сеансов сервера
Когда кластер ведёт себя странно после аварийного отключения — «призрачные» сеансы, ошибки при входе в одну конкретную базу, — помогает очистка серверного кэша. Это приём практиков, но выполнять его нужно аккуратно:
- Предупредите пользователей: остановка службы обрывает все сеансы всех баз кластера. Делайте это вечером или в выходной.
- Остановите службу агента сервера 1С:Предприятия.
- Убедитесь в диспетчере задач, что не осталось процессов
ragent,rmngr,rphost. - В каталоге
srvinfo\reg_1541удалите папки, имена которых начинаются наsnccntx. Файл1CV8Clst.lstи папки с идентификаторами баз не трогайте. - Запустите службу и проверьте вход в базы.
Не удаляйте весь каталог srvinfo и не пересоздавайте кластер «для профилактики». Вместе с реестром пропадёт список баз, администраторов и все настройки. Если реестр всё-таки повреждён, остановите службу и восстановите 1CV8Clst.lst из резервной копии.
Потерян пароль администратора кластера
Пароль хранится в реестре кластера, сбросить его из консоли нельзя. Рабочий путь — остановить службу, восстановить 1CV8Clst.lst из резервной копии, где пароль известен, и запустить службу. Если копии нет, обратитесь к администратору сервера, который настраивал кластер, — ковырять файл реестра вручную опасно.
Частые вопросы о кластере серверов 1С
Нужен ли кластер серверов, если пользователей всего 5–7?
Можно ли запустить на одном компьютере два кластера разных версий платформы?
srv1c:2541.