Администрирование кластера серверов 1С:Предприятие 8.3 на операционных системах Linux часто выполняется через интерфейс командной строки с помощью утилит ras (сервер администрирования) и rac (клиент администрирования). Разберем распространенную ситуацию: процессы самого сервера 1С (ragent, rmngr, rphost) успешно запущены, базы данных работают, но при попытке получить список кластеров командой rac cluster list система выдает ошибку Ошибка соединения с сервером Connection refused.
Проанализируем основные причины такого поведения и по шагам рассмотрим эффективные методы решения этой проблемы.
Самая банальная и частая причина ошибки соединения — это отсутствие работающего процесса 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.
Посмотрим на более специфичную проблему. Начиная с версии 8.3.15 и особенно в релизах 8.3.16, разработчики платформы допустили ошибку во внутренних механизмах демонизации процесса. Суть проблемы заключается в следующем: при запуске RAS с параметром --daemon процесс корректно уходит в фон и, судя по утилите netstat, слушает порт (обычно 1545). Но утилита rac при подключении зависает или снова выдает Connection refused.
Выясним причину: внутренний механизм демонизации ломает обработку входящих сетевых сокетов в данных релизах платформы. Чтобы обойти этот баг, необходимо запускать RAS в интерактивном режиме без ключа --daemon, а задачу по уводу процесса в фон (демонизацию) полностью передать системному менеджеру 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
Часто возникает вопрос: неужели на Linux можно работать только через командную строку, и нужно разворачивать отдельный Windows-сервер с установленной консолью MMC? Проанализируем современные варианты работы:
ibcmd позволяет управлять информационными базами без необходимости разворачивать и администрировать полноценный кластер серверов.Таким образом, правильно настроив службу RAS с учетом особенностей вашей версии платформы, вы не только избавитесь от ошибки соединения, но и откроете для себя возможность комфортно управлять кластером 1С на Linux, используя современные графические инструменты. В качестве альтернативы командной строке подойдёт графическая консоль администрирования серверов 1С для Linux и Windows.