Служба ragent: старт, параметры и проверка кластера 1С

· 9 мин

Содержание

Агент сервера 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. Порты не должны пересекаться ни в одном диапазоне.

Проверка: агент работает, кластер виден

Служба в статусе «Выполняется» ещё не значит, что всё в порядке. Проверьте по шагам:

  1. Порт слушается. Windows: netstat -ano | findstr :1540. Linux: ss -tlnp | grep 1540.
  2. Процессы на месте: ragent, rmngr и хотя бы один rphost в диспетчере задач или в ps aux | grep -E "ragent|rmngr|rphost".
  3. Кластер отвечает. Запустите сервер администрирования и посмотрите список кластеров:
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.

Агент запущен правильно, если
Выполнено: 0 / 6

Журналы: куда смотреть, если агент не стартует

Журнал событий 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) делайте только при остановленной службе и только если кластер ведёт себя странно после сбоя. Это крайняя мера, не регулярное обслуживание.

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

Нужна ли лицензия, чтобы агент сервера запустился?
Агент стартует и без лицензии, но пользователи не смогут работать с базами: при подключении клиент получит сообщение об отсутствии лицензии на сервер. Лицензию на сервер 1С приобретают отдельно от клиентских.
Можно ли запустить агент от имени администратора, чтобы не настраивать права?
Технически да, но это небезопасно: код конфигурации и внешние обработки на сервере выполнятся с правами администратора ОС. Используйте отдельную учётную запись с минимальными правами.
Где задать порт 1540, если служба уже установлена?
В строке запуска службы: в Windows — параметр ImagePath в реестре или перерегистрация службы, в Linux — переопределение юнита через systemctl edit. После изменения перезапустите службу.
Как запустить агент двух разных версий платформы на одном сервере?
Зарегистрируйте для каждой версии свою службу с непересекающимися портами (например, 1540/1541/1560:1591 и 2540/2541/2560:2591) и отдельными каталогами данных.
Почему после обновления платформы старые базы не открываются?
Служба продолжает запускать ragent из каталога старой версии, а клиенты уже новые. Версия клиента и сервера должны совпадать до последней цифры — перерегистрируйте службу из каталога новой версии.