Служба ragent: старт, параметры и проверка кластера 1С
Содержание
Агент сервера 1С — это процесс ragent, и в штатной работе он запускается как служба: в Windows через оснастку «Службы» (services.msc) или командой net start, в Linux через systemctl start. Если службы ещё нет, её регистрируют командой ragent.exe -instsrvc с указанием портов (по умолчанию 1540, 1541 и диапазон 1560:1591), учётной записи и каталога данных кластера.
Агент поднимает менеджер кластера rmngr, а тот — рабочие процессы rphost. Пока агент не запущен, клиенты не подключатся ни к одной серверной базе, а консоль администрирования не увидит сервер. Ниже порядок для обеих ОС, ключи командной строки и способы понять, почему служба не стартует.
Подготовка: учётная запись, каталог данных и порты
Агент не должен работать от имени администратора или LocalSystem. Для него заводят отдельного пользователя — по традиции USR1CV8 в Windows и usr1cv8 в Linux (установщик для Linux создаёт его сам).
Что нужно этой учётной записи в Windows:
- 🔑 право «Вход в качестве службы» (локальная политика безопасности → Назначение прав пользователя);
- 📁 полный доступ к каталогу данных кластера, обычно
C:\Program Files\1cv8\srvinfo; - 📊 членство в группе «Пользователи журналов производительности» — без неё сервер не сможет читать счётчики для балансировки нагрузки;
- 📂 права на каталог временных файлов и на папки, куда базы пишут выгрузки и файлы.
Порты, которые должны быть открыты в брандмауэре между клиентами и сервером:
| Порт | Кто слушает | Зачем |
|---|---|---|
| 1540 | агент ragent | первое обращение клиента, консоль администрирования |
| 1541 | менеджер кластера rmngr | регистрация баз, распределение соединений |
| 1560–1591 | рабочие процессы rphost | обработка запросов клиентов |
| 1545 | сервер администрирования ras | только если используете rac или сторонние консоли |
Диапазон 1560–1591 задаётся в свойствах рабочего сервера, а не в настройках агента. Если сузить его, а брандмауэр оставить открытым только на старый диапазон, клиент дойдёт до агента и упадёт на подключении к рабочему процессу.
Имя сервера, которое клиенты указывают в строке подключения, должно разрешаться в IP и на самом сервере, и на клиентах. Проблемы с DNS — частая причина того, что агент запущен, а базы не открываются.
Запуск агента сервера 1С в Windows
Если служба уже зарегистрирована
Установщик платформы с компонентом «Сервер 1С:Предприятия» обычно сам регистрирует службу. Найти её точное имя проще всего командой:
sc query type= service state= all | findstr /i "1C"
Дальше запуск — через services.msc (кнопка «Запустить» в свойствах службы) или из командной строки, открытой от имени администратора:
net start "1C:Enterprise 8.3 Server Agent (x86-64)"
Имя в кавычках подставьте то, которое вернула команда sc query. В свойствах службы выставьте тип запуска «Автоматически», чтобы агент поднимался вместе с сервером.
Регистрация службы вручную
Если службы нет (сервер ставили без регистрации службы, или её удалили при смене версии), зарегистрируйте её из каталога bin нужной версии платформы:
cd "C:\Program Files\1cv8\8.3.24.1691\bin"
ragent.exe -instsrvc -usr .\USR1CV8 -pwd "Пароль" -port 1540 -regport 1541 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo"
ragent.exe -start
Номер версии в пути замените на свой. Ключ -start запускает только что зарегистрированную службу, -stop останавливает её, -rmsrvc удаляет регистрацию.
Перед -rmsrvc и перерегистрацией остановите службу в нерабочее время: все сеансы пользователей оборвутся, несохранённые документы пропадут.
Запуск в консольном режиме
Для диагностики агент можно запустить не службой, а обычным процессом в окне командной строки — без ключа -srvc. Так видно сообщения, которые он выводит при старте и падении:
ragent.exe -port 1540 -regport 1541 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo" -debug
Окно закрывать нельзя: вместе с ним завершится агент. Не запускайте консольный агент, пока работает служба на тех же портах — второй экземпляр не займёт порт 1540 и сразу завершится.
Консоль администрирования
Оснастка «Администрирование серверов 1С Предприятия» работает только после регистрации библиотеки radmin.dll той же версии, что и сервер:
regsvr32 "C:\Program Files\1cv8\8.3.24.1691\bin\radmin.dll"
После обновления платформы консоль часто перестаёт видеть кластер именно потому, что зарегистрирована библиотека старой версии. Перерегистрация решает это за минуту.
Как запустить агент сервера 1С в Linux
Пакеты платформы ставятся в /opt/1cv8/x86_64/<версия>/ (в старых сборках — /opt/1C/v8.3/x86_64/). Порядок запуска зависит от того, какой скрипт управления пришёл с вашей версией.
Новые версии: юнит systemd
В каталоге версии лежит шаблон юнита вида srv1cv8-<версия>@.service. Его подключают и запускают так:
VER=8.3.24.1691
sudo systemctl link /opt/1cv8/x86_64/$VER/srv1cv8-$VER@.service
sudo systemctl enable srv1cv8-$VER@default
sudo systemctl start srv1cv8-$VER@default
sudo systemctl status srv1cv8-$VER@default
default — имя экземпляра. Если на одном сервере нужны два кластера разных версий, у каждого будет свой юнит и свои порты.
Старые версии: init-скрипт
В более ранних сборках вместо юнита ставился скрипт /etc/init.d/srv1cv83, а параметры (порты, каталог данных, пользователь) задавались в /etc/sysconfig/srv1cv83. Запуск — sudo service srv1cv83 start или sudo systemctl start srv1cv83.
Ручной запуск демоном
Для проверки без юнита агент запускают от имени usr1cv8 с ключом -daemon:
sudo -u usr1cv8 /opt/1cv8/x86_64/8.3.24.1691/ragent -daemon \
-port 1540 -regport 1541 -range 1560:1591 \
-d /home/usr1cv8/.1cv8/1C/1cv8
Каталог данных по умолчанию — /home/usr1cv8/.1cv8/1C/1cv8. Владельцем всех файлов в нём должен быть usr1cv8. Если один раз запустить агент от root, он создаст файлы с владельцем root, и потом служба от usr1cv8 не сможет их прочитать.
sudo chown -R usr1cv8:grp1cv8 /home/usr1cv8/.1cv8
Проверьте /etc/hosts: имя сервера должно указывать на сетевой адрес машины, а не только на 127.0.1.1. Иначе кластер зарегистрируется под адресом, недоступным клиентам.
Ключи командной строки ragent
Одни и те же ключи работают и при регистрации службы, и при ручном запуске.
| Ключ | Что задаёт | Пример |
|---|---|---|
-port | порт агента | -port 1540 |
-regport | порт менеджера кластера | -regport 1541 |
-range | диапазон портов рабочих процессов при первом создании кластера | -range 1560:1591 |
-d | каталог данных кластера | -d "D:\srvinfo" |
-seclev | уровень защищённости соединений: 0, 1 или 2 | -seclev 0 |
-debug | разрешает отладку конфигураций на сервере | -debug |
-srvc | запуск в режиме службы (Windows) | ставится службой сама |
-daemon | запуск в фоне (Linux) | -daemon |
-instsrvc, -rmsrvc | регистрация и удаление службы (Windows) | см. выше |
-usr, -pwd | учётная запись службы (Windows) | -usr .\USR1CV8 |
Чтобы поменять параметры уже зарегистрированной службы в Windows, правьте строку запуска в реестре (ветка HKLM\SYSTEM\CurrentControlSet\Services\<имя службы>, параметр ImagePath) или перерегистрируйте службу. В Linux с systemd текущую строку видно через systemctl cat srv1cv8-<версия>@default, а изменения вносят через systemctl edit, чтобы не править файл из пакета.
Два кластера на одном сервере
Типичная задача — держать рядом две версии платформы для тестирования обновления. Второму агенту дают свой набор портов и свой каталог:
ragent.exe -instsrvc -usr .\USR1CV8 -pwd "Пароль" -port 2540 -regport 2541 -range 2560:2591 -d "C:\Program Files\1cv8\srvinfo2540"
Клиенты подключаются ко второму кластеру по адресу сервер:2541. Порты не должны пересекаться ни в одном диапазоне.
Проверка: агент работает, кластер виден
Служба в статусе «Выполняется» ещё не значит, что всё в порядке. Проверьте по шагам:
- Порт слушается. Windows:
netstat -ano | findstr :1540. Linux:ss -tlnp | grep 1540. - Процессы на месте:
ragent,rmngrи хотя бы одинrphostв диспетчере задач или вps aux | grep -E "ragent|rmngr|rphost". - Кластер отвечает. Запустите сервер администрирования и посмотрите список кластеров:
ras cluster --daemon
rac cluster list
rac по умолчанию обращается к localhost:1545. Из вывода возьмите идентификатор кластера и проверьте рабочие процессы и серверы:
rac process list --cluster=<id кластера>
rac server list --cluster=<id кластера>
Если rac просит авторизацию, значит, для кластера заданы администраторы — передайте их ключами --cluster-user и --cluster-pwd. Полный список команд — в rac help.
Журналы: куда смотреть, если агент не стартует
Журнал событий Windows и journalctl
Первое место — системные журналы ОС. В Windows откройте «Просмотр событий» → «Журналы Windows» → «Приложение» и «Система». Ошибки входа службы, отказ в доступе к каталогу и аварийные завершения процессов 1С видны там.
В Linux смотрите вывод юнита:
journalctl -u srv1cv8-8.3.24.1691@default -n 100 --no-pager
Технологический журнал
Когда системный журнал молчит, включают технологический журнал платформы. Его настраивает файл logcfg.xml в каталоге conf платформы (в Windows обычно C:\Program Files\1cv8\conf, в Linux — /opt/1cv8/conf). Минимальная настройка для ловли исключений:
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">
<log location="C:\techlog" history="24">
<event>
<eq property="name" value="EXCP"/>
</event>
<property name="all"/>
</log>
</config>
Каталог из location должен существовать, а учётная запись службы — иметь в него права на запись. После разбора проблемы файл удалите или закомментируйте секцию: журнал быстро занимает место на диске.
Что лежит в каталоге данных кластера
В каталоге из ключа -d есть папка reg_1541 (номер совпадает с портом менеджера). В ней реестр кластера 1CV8Clst.lst и подпапки баз с их журналами регистрации. Если служба стартует и сразу останавливается после сбоя диска, проверьте, что 1CV8Clst.lst не нулевого размера. Восстанавливают его только из резервной копии каталога.
Рабочие процессы и управление кластером после запуска
Агент сам по себе пользователей не обслуживает. Он держит менеджер кластера, а нагрузку несут рабочие процессы. Их параметры задаются в консоли администрирования в свойствах рабочего сервера:
- ⚙️ диапазон IP-портов рабочих процессов;
- 👥 количество информационных баз и соединений на процесс — от них зависит, когда кластер поднимет новый
rphost; - 🧠 критический объём памяти процессов — при его превышении сервер перезапускает процесс;
- 🔁 настройки отказоустойчивости и требования назначения функциональности (какой сервер кластера что выполняет).
Через rac те же сущности смотрят командами rac server list, rac process list, сеансы — rac session list --cluster=<id>.
Перезапуск агента без потерь
Перезапуск службы останавливает все рабочие процессы. Перед остановкой агента предупредите пользователей и дождитесь, пока они закроют базы: открытые сеансы оборвутся, незаписанные документы пропадут, а длинные операции вроде закрытия месяца придётся запускать заново. Лучшее окно — вечер или выходной, когда в rac session list пусто или остались только фоновые задания.
Очистку сеансовых данных (удаление папок snccntx* в каталоге reg_1541) делайте только при остановленной службе и только если кластер ведёт себя странно после сбоя. Это крайняя мера, не регулярное обслуживание.