RAS на сервере 1С: запуск в Windows и Linux, порты, проверка через rac

· 9 мин

Содержание

Сервер администрирования 1С запускается одной командой из каталога bin платформы: ras cluster --port=1545 localhost:1540. Здесь 1545 — порт, на котором RAS ждёт утилиту rac и другие клиенты администрирования, а localhost:1540 — адрес агента сервера 1С. Чтобы RAS работал постоянно, его регистрируют службой Windows или юнитом systemd в Linux.

Сам по себе RAS не ставится вместе со службой агента и не стартует автоматически. Поэтому типичная картина: сервер 1С работает, пользователи входят, а rac отвечает сетевой ошибкой. Исправляется это за пять минут в Windows и в Linux.

Что делает сервер администрирования и где он стоит в схеме

Кластер 1С управляется через агент сервера (ragent, порт 1540). Классическая консоль кластера на Windows подключается к агенту через COM-компонент radmin.dll. Утилита rac и сторонние инструменты так не умеют: им нужен посредник с открытым сетевым протоколом. Этот посредник и есть RAS.

Цепочка выглядит так:

rac / скрипт / мониторинг  →  ras (порт 1545)  →  ragent (порт 1540)  →  кластер

Зачем RAS на практике:

  • 🖥️ администрирование кластера на Linux, где нет консоли на radmin.dll;
  • 📜 скрипты: список сеансов, завершение зависших сеансов, блокировка базы перед обновлением;
  • 📊 мониторинг: Zabbix и подобные системы снимают число сеансов и лицензий через rac;
  • 🔄 обработки внутри конфигураций на БСП, которые управляют блокировкой сеансов, — в параметрах администрирования кластера можно выбрать подключение через сервер администрирования вместо COM.

RAS не хранит настроек и не проверяет пароли сам. Права проверяет кластер: если в нём заведены администраторы, rac должен передавать их логин и пароль.

Подготовка: что проверить до запуска

Перед запуском соберите четыре факта.

  1. Версия платформы сервера. RAS и rac должны быть той же версии, что и ragent. Номер видно в пути службы агента или в каталоге установки, например C:\Program Files\1cv8\8.3.24.1586\bin.
  2. Наличие файлов. В Windows это ras.exe и rac.exe в каталоге bin. В Linux — ras и rac в /opt/1cv8/x86_64/<версия>/. Если файлов нет, при установке не выбран компонент «Администрирование сервера 1С:Предприятия» — доустановите его тем же дистрибутивом.
  3. Порт агента. По умолчанию 1540. Если кластер поднят на нестандартных портах (например, второй кластер на 2540), RAS нужно указывать именно этот адрес.
  4. Свободен ли порт 1545. Его может занять другой экземпляр RAS, например оставшийся от прошлой версии платформы.
netstat -ano | findstr :1545
ss -tlnp | grep 1545

Пустой вывод — порт свободен. Если в строке есть LISTENING, посмотрите PID и выясните, чей это процесс.

На одном сервере можно держать несколько RAS: например, для двух кластеров разных версий. Каждому дайте свой порт — 1545, 2545 и так далее — и подключайте к своему агенту.

Запуск RAS в Windows: вручную и службой

Пробный запуск из командной строки

Откройте командную строку от имени администратора и выполните:

cd "C:\Program Files\1cv8\8.3.24.1586\bin"
ras cluster --port=1545 localhost:1540

Окно останется открытым — это нормально, RAS работает, пока живёт процесс. Во втором окне проверьте связь:

"C:\Program Files\1cv8\8.3.24.1586\bin\rac.exe" localhost:1545 cluster list

Если в ответ пришли строки cluster, host, port, name — связка работает. Закройте первое окно и переходите к службе.

Регистрация службы

Служба создаётся штатной утилитой sc. Обратите внимание на синтаксис: после binPath=, start= и DisplayName= обязателен пробел, а кавычки внутри пути экранируются обратным слешем.

set SrvVer=8.3.24.1586
set SrvPath=C:\Program Files\1cv8\%SrvVer%\bin\ras.exe

sc create "1C:Enterprise 8.3 Remote Server" binPath= "\"%SrvPath%\" cluster --service --port=1545 localhost:1540" start= auto DisplayName= "Сервер администрирования 1С:Предприятия 8.3"
sc start "1C:Enterprise 8.3 Remote Server"

Ключ --service говорит RAS, что его запускает диспетчер служб. Без него служба не стартует или сразу останавливается.

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

sc config "1C:Enterprise 8.3 Remote Server" obj= ".\USR1CV8" password= "ПарольУчётки"

Учётной записи нужно право «Вход в качестве службы». Пользователь USR1CV8, которого создаёт установщик сервера 1С, его уже имеет.

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

Это главный подводный камень. В binPath службы записан путь к конкретной версии. Вы обновили сервер до новой сборки — агент работает на новой, а RAS продолжает стартовать из старого каталога. Если старую версию удалили, служба не запустится вовсе.

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

  1. Остановите и удалите старую службу RAS.
  2. Создайте её заново с новым номером версии в SrvVer.
  3. Запустите и проверьте через rac новой версии.
sc stop "1C:Enterprise 8.3 Remote Server"
sc delete "1C:Enterprise 8.3 Remote Server"

Остановка RAS не трогает пользователей: сеансы держит агент и рабочие процессы, а не сервер администрирования. Отвалятся только открытые подключения rac и мониторинга.

Запуск RAS как службы в Linux

Разовый запуск и режим демона

cd /opt/1cv8/x86_64/8.3.24.1586
sudo -u usr1cv8 ./ras cluster --port=1545 localhost:1540

Ключ --daemon отправляет процесс в фон:

sudo -u usr1cv8 ./ras cluster --daemon --port=1545 localhost:1540

Для теста этого хватит, но после перезагрузки сервера RAS не поднимется. Для постоянной работы нужен systemd.

Юнит systemd

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

ls /opt/1cv8/x86_64/8.3.24.1586/*.service

Если файл для RAS есть, его подключают командой systemctl link с полным путём и затем включают. Если нет или нужен свой порт — напишите юнит сами. Создайте файл /etc/systemd/system/ras-1c.service:

[Unit]
Description=1C:Enterprise Remote Administration Server
After=network.target

[Service]
Type=simple
User=usr1cv8
Group=grp1cv8
ExecStart=/opt/1cv8/x86_64/8.3.24.1586/ras cluster --port=1545 localhost:1540
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

Здесь Type=simple и запуск без --daemon: процессом управляет systemd, ему не нужно, чтобы программа уходила в фон сама.

Включите и запустите:

sudo systemctl daemon-reload
sudo systemctl enable --now ras-1c.service
systemctl status ras-1c.service

Чтобы после обновления платформы не править путь в юните, многие держат в ExecStart переменную или символическую ссылку /opt/1cv8/current на актуальный каталог. Тогда при переходе на новую сборку достаточно перевесить ссылку и выполнить systemctl restart ras-1c.

Пользователь usr1cv8 и группа grp1cv8 создаются при установке сервера из пакетов 1С. Если у вас другая учётка для агента, укажите её.

Порты, брандмауэр и доступ по сети

КомпонентПорт по умолчаниюКто подключается
Агент сервера (ragent)1540клиенты 1С, консоль кластера, RAS
Менеджер кластера (rmngr)1541клиенты 1С после агента
Рабочие процессы1560–1591клиенты 1С; диапазон задаётся в свойствах рабочего сервера
Сервер администрирования (ras)1545rac, скрипты, мониторинг

Если rac запускается на том же сервере, брандмауэр не мешает. Для удалённого администрирования откройте 1545 входящим правилом.

Windows:

netsh advfirewall firewall add rule name="1C RAS 1545" dir=in action=allow protocol=TCP localport=1545

Linux с firewalld:

sudo firewall-cmd --permanent --add-port=1545/tcp
sudo firewall-cmd --reload

Linux с ufw:

sudo ufw allow from 10.0.0.0/24 to any port 1545 proto tcp

У RAS нет собственной авторизации. Кто достучался до порта 1545 и знает пароль администратора кластера — тот управляет кластером. Если администраторы кластера не заданы, управлять может любой, кто видит порт. Не публикуйте 1545 в интернет и ограничивайте доступ подсетью администраторов.

Если RAS и агент на разных машинах, вместо localhost:1540 укажите имя или IP сервера с агентом. Тогда порт 1540 должен быть открыт для машины, где работает RAS.

Проверка статуса и разбор ошибок

Базовые проверки

Сначала убедитесь, что процесс жив и слушает порт:

sc query "1C:Enterprise 8.3 Remote Server"
netstat -ano | findstr :1545
systemctl status ras-1c
ss -tlnp | grep 1545

Затем проверьте, что RAS видит кластер:

rac localhost:1545 cluster list

Если rac запущен на той же машине, что RAS, адрес можно опустить: по умолчанию утилита стучится на localhost:1545.

Скопируйте значение поля cluster из ответа — это идентификатор кластера, он нужен почти во всех командах. Дальше проверьте сеансы:

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

Если в кластере заданы администраторы, добавьте --cluster-user=<логин> --cluster-pwd=<пароль>. Полный список подкоманд выдаёт rac help, по конкретному режиму — например, rac help session.

Что означают типичные сбои

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

В Linux при сбое юнита смотрите журнал: journalctl -u ras-1c -n 50. Там видна причина — например, неверный путь к бинарнику или занятый порт.

Скрипты на rac: типовые задачи администратора

RAS ценен тем, что открывает дорогу автоматизации. Три задачи, которые решают чаще всего.

Получить идентификатор кластера в переменную

Windows (bat):

@echo off
set RAC="C:\Program Files\1cv8\8.3.24.1586\bin\rac.exe"
for /f "tokens=2 delims=: " %%i in ('%RAC% cluster list ^| findstr /b cluster') do set CLUSTER=%%i
echo Кластер: %CLUSTER%
%RAC% session list --cluster=%CLUSTER%

Linux (bash):

RAC=/opt/1cv8/x86_64/8.3.24.1586/rac
CLUSTER=$($RAC cluster list | awk '/^cluster/{print $3}')
$RAC session list --cluster=$CLUSTER

Строка в выводе выглядит как cluster : 1d1e..., поэтому идентификатор — третье поле в bash и второе после разбора по двоеточию и пробелу в bat.

Заблокировать базу перед обновлением

Сначала узнайте идентификатор базы:

$RAC infobase summary list --cluster=$CLUSTER

Затем включите блокировку сеансов с сообщением и кодом разрешения:

$RAC infobase update --cluster=$CLUSTER --infobase=<id_базы> \
  --infobase-user=Администратор --infobase-pwd=<пароль> \
  --sessions-deny=on --denied-message="Обновление базы, вход закрыт до 22:00" \
  --permission-code=12345

Код разрешения нужен, чтобы вы сами могли войти в заблокированную базу: его указывают в параметре запуска /UC. После обновления снимите блокировку той же командой с --sessions-deny=off.

Завершить сеанс пользователя

$RAC session terminate --cluster=$CLUSTER --session=<id_сеанса>

Завершение сеанса обрывает работу пользователя без сохранения: незаписанный документ пропадёт. Делайте это вне рабочего времени или после предупреждения людей. Массовое завершение всех сеансов в цикле — только в регламентное окно перед обновлением.

Такие скрипты удобно повесить на планировщик Windows или cron: ночная блокировка, обновление, разблокировка утром. Пароли администратора кластера и базы не храните в теле скрипта открытым текстом — выносите в файл с ограниченными правами.

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

Нужен ли RAS, если я администрирую кластер через обычную консоль на Windows?
Нет. Консоль кластера на Windows работает через radmin.dll и подключается к агенту напрямую. RAS нужен для rac, скриптов, мониторинга и администрирования с Linux.
Можно ли запустить RAS на одной машине, а агент держать на другой?
Можно. В команде запуска укажите адрес агента, например srv1c:1540, и откройте порт 1540 от машины с RAS до сервера с агентом.
Влияет ли остановка RAS на работу пользователей?
Нет. Сеансы обслуживают агент, менеджер кластера и рабочие процессы. Без RAS перестанут работать только rac, скрипты и мониторинг.
Нужна ли отдельная лицензия на сервер администрирования?
Нет. RAS входит в поставку серверной платформы и отдельно не лицензируется. Лицензия сервера 1С нужна самому кластеру.
Как поменять порт RAS, если 1545 уже занят?
Укажите другой порт в ключе --port в строке запуска службы или юнита и перезапустите RAS. В командах rac пишите новый адрес, например localhost:1546.