При администрировании сервера 1С:Предприятие на базе ОС Linux (например, Rocky Linux) с использованием консольной утилиты rac системные администраторы нередко сталкиваются с ошибкой соединения. Разберем типичную ситуацию: сервер развернут, кластер работает, доступ через толстый и тонкий клиент есть, но при попытке получить список информационных баз через RAC в консоль выводится ошибка Already open и обращение к непонятному адресу, например list:1545.
Проанализируем причины такого поведения платформы и по шагам настроим правильное взаимодействие компонентов администрирования.
Ошибка возникает из-за строго позиционного синтаксиса встроенного парсера утилиты rac. Многие пользователи по привычке формируют команду аналогично другим консольным инструментам, передавая аргументы в произвольном порядке, например:
/opt/1cv8/x86_64/8.3.27.1559/rac infobase --cluster=server1c:1541 list
В структуре вызова rac действие (в данном случае list) должно идти строго до параметров действия (аргументов с дефисами). Правильный порядок выглядит так:
racinfobase или cluster)list или summary list)--cluster=...)localhost:1545)Если нарушить этот порядок и указать команду list в самом конце после параметров с дефисами, парсер прекращает разбор флагов. Первое попавшееся нераспознанное слово (в нашем случае list) он принимает за имя сетевого узла сервера RAS с портом по умолчанию 1545. Так и формируется фиктивный адрес list:1545.
Само сообщение Already open генерируется сетевой библиотекой Boost.Asio, которую использует платформа 1С. Оно появляется при попытке повторно открыть сокет в процессе неудачного разрешения этого фиктивного сетевого имени хоста.
Выясним, как правильно сформировать запрос. Важно помнить, что клиент администрирования rac подключается не напрямую к менеджеру кластера (порт 1541), а к серверу администрирования ras (порт 1545). Кроме того, в параметр --cluster передается не адрес сервера, а уникальный идентификатор (UUID) кластера.
Сначала узнаем идентификатор кластера. Выполним команду:
rac cluster list server1c:1545
Из полученного ответа необходимо скопировать GUID из поля cluster. Теперь соберем правильную команду для получения списка информационных баз:
/opt/1cv8/x86_64/8.3.27.1559/rac infobase summary list --cluster=<Ваш_UUID_кластера> localhost:1545
Если утилита запускается локально на том же сервере, адрес localhost:1545 в конце можно опустить — по умолчанию rac сам обратится к локальному порту 1545.
Для того чтобы работал клиент rac, в системе обязательно должен быть запущен сервер администрирования ras. По умолчанию после установки сервера 1С на Linux служба RAS не запущена и отсутствует в автозагрузке.
Настроим её запуск через systemd. В комплекте платформы уже предусмотрен готовый шаблон юнита. Выполним следующие команды (с учетом вашей версии платформы, в примере — 8.3.27.1559):
systemctl link /opt/1cv8/x86_64/8.3.27.1559/ras-8.3.27.1559.service
systemctl daemon-reload
systemctl enable --now ras-8.3.27.1559.service
Если служба запускается вручную или настраивается в собственном юните, команда выглядит так:
/opt/1cv8/x86_64/8.3.27.1559/ras cluster --daemon --port=1545 localhost:1540
Обратите внимание на порты: сервер RAS связывается с агентом кластера ragent, который работает на порту 1540. Передача порта менеджера кластера (1541) при запуске RAS приведет к ошибкам взаимодействия.
Рассмотрим дополнительные аспекты, которые необходимо учитывать при работе с утилитами администрирования:
--cluster-user=<имя> и --cluster-pwd=<пароль>.firewalld. Если планируется вызывать rac удаленно с других рабочих станций, необходимо явно открыть порт 1545 протокола TCP:
firewall-cmd --permanent --add-port=1545/tcp
firewall-cmd --reload
Если работа в консоли кажется неудобной, рассмотрим другие инструменты, которые также взаимодействуют со службой RAS или агентом кластера:
УправлениеСерверами.epf, входящей в состав дистрибутива. Она позволяет администрировать сервер из режима Предприятия через службу RAS.Внимательно следите за синтаксисом команд rac и состоянием службы ras, и ошибки вроде Already open больше не будут блокировать вашу работу с кластером серверов 1С.