Как исправить ошибку Connection refused при подключении rac к серверу 1С на Linux?

Системный администратор 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Администрирование кластера серверов 1С:Предприятие 8.3 на операционных системах Linux часто выполняется через интерфейс командной строки с помощью утилит ras (сервер администрирования) и rac (клиент администрирования). Разберем распространенную ситуацию: процессы самого сервера 1С (ragent, rmngr, rphost) успешно запущены, базы данных работают, но при попытке получить список кластеров командой rac cluster list система выдает ошибку Ошибка соединения с сервером Connection refused.

Проанализируем основные причины такого поведения и по шагам рассмотрим эффективные методы решения этой проблемы.

Причина 1: Сервер администрирования (RAS) не запущен

Самая банальная и частая причина ошибки соединения — это отсутствие работающего процесса ras. Дело в том, что стандартный скрипт запуска сервера 1С (в старых версиях платформы это /etc/init.d/srv1cv83) отвечает только за запуск агента сервера (ragent). Сервер администрирования не стартует по умолчанию.

Давайте проверим запуск сервера администрирования вручную. Для этого в терминале выполним следующую команду (путь может отличаться в зависимости от архитектуры и версии):

/opt/1C/v8.3/x86_64/ras --daemon cluster

После этого попробуем снова выполнить команду клиента:

/opt/1C/v8.3/x86_64/rac cluster list

Если список кластеров успешно выведен, значит проблема заключалась исключительно в незапущенном сервисе. Однако запускать его вручную после каждой перезагрузки сервера неудобно, поэтому процесс необходимо автоматизировать. Для комплексной настройки окружения и запуска службы можно использовать сценарий автоматической установки 1С и службы RAS.

Причина 2: Особенность (баг) демонизации в версии 1С 8.3.16

Посмотрим на более специфичную проблему. Начиная с версии 8.3.15 и особенно в релизах 8.3.16, разработчики платформы допустили ошибку во внутренних механизмах демонизации процесса. Суть проблемы заключается в следующем: при запуске RAS с параметром --daemon процесс корректно уходит в фон и, судя по утилите netstat, слушает порт (обычно 1545). Но утилита rac при подключении зависает или снова выдает Connection refused.

Выясним причину: внутренний механизм демонизации ломает обработку входящих сетевых сокетов в данных релизах платформы. Чтобы обойти этот баг, необходимо запускать RAS в интерактивном режиме без ключа --daemon, а задачу по уводу процесса в фон (демонизацию) полностью передать системному менеджеру systemd.

Настройка автоматического запуска RAS через systemd

Рассмотрим подробнее, как создать службу (юнит) для автоматического старта сервера администрирования вместе с операционной системой.

Для старых версий платформы (до 8.3.21) и версий с багом (8.3.16)

Вам потребуется создать файл службы вручную. Создадим файл /etc/systemd/system/ras.service со следующим содержимым:


[Unit]
Description=1C RAS Service
After=syslog.target
After=network.target

[Service]
Type=simple
WorkingDirectory=/opt/1C/v8.3/x86_64
User=usr1cv8
Group=grp1cv8
OOMScoreAdjust=-100
ExecStart=/opt/1C/v8.3/x86_64/ras cluster -p 1545
TimeoutSec=300
Restart=always

[Install]
WantedBy=multi-user.target

Обратите внимание: мы используем Type=simple и не передаем ключ --daemon в ExecStart. Это решает проблему зависания сокетов в релизах 8.3.16. После создания файла обновим конфигурацию systemd и запустим службу:


systemctl daemon-reload
systemctl enable --now ras.service
systemctl status ras.service

Для современных версий платформы (начиная с 8.3.21)

Фирма «1С» полностью переработала механизм работы с Linux-службами. Больше не нужно вручную писать конфигурационные файлы. В каталоге с установленной платформой уже есть готовые шаблоны служб. Посмотрим на пример регистрации службы одной командой (замените путь на вашу актуальную версию):


systemctl link /opt/1cv8/x86_64/8.3.22.XXXX/ras-8.3.22.XXXX.service
systemctl enable --now ras-8.3.22.XXXX.service

Альтернативные способы администрирования серверов 1С на Linux

Часто возникает вопрос: неужели на Linux можно работать только через командную строку, и нужно разворачивать отдельный Windows-сервер с установленной консолью MMC? Проанализируем современные варианты работы:

  1. Администрирование из клиента 1С: В актуальных релизах платформы вы можете управлять кластером напрямую из запущенного толстого или тонкого клиента 1С (работает и на Linux, и на Windows). Достаточно открыть обработку «Управление серверами» из меню «Функции для технического специалиста». При этом служба RAS на сервере всё равно должна быть запущена.
  2. Автономный сервер (ibcmd): Начиная с релиза 8.3.16 в платформе появился инструмент «Автономный сервер». Утилита ibcmd позволяет управлять информационными базами без необходимости разворачивать и администрировать полноценный кластер серверов.
  3. Веб-консоли и Open-source решения: Существуют альтернативные веб-интерфейсы (например, WebRAS), которые устанавливаются на Linux-сервер и предоставляют удобный графический интерфейс управления кластером прямо в браузере, обращаясь к RAS API.

Таким образом, правильно настроив службу RAS с учетом особенностей вашей версии платформы, вы не только избавитесь от ошибки соединения, но и откроете для себя возможность комфортно управлять кластером 1С на Linux, используя современные графические инструменты. В качестве альтернативы командной строке подойдёт графическая консоль администрирования серверов 1С для Linux и Windows.

← На главную