При развертывании нескольких экземпляров сервера 1С:Предприятие на одной машине под управлением Linux или при необходимости изолировать сетевые службы системным администраторам требуется перевести процессы кластера со стандартных портов (1540, 1541, 1560:1591) на альтернативные диапазоны (например, 2540, 2541, 2560:2591).
Однако простого изменения параметров в файле конфигурации службы (например, /etc/sysconfig/srv1cv83 или unit-файле systemd) оказывается недостаточно: после перезапуска процесс ragent запускается с новыми портами, rmngr продолжает использовать старый порт или стартует с ошибками, а рабочий процесс rphost вовсе не создается. Разберем по шагам, почему возникает эта проблема и как корректно перенести кластер на новые порты.
Проанализируем механизм инициализации сервера 1С:Предприятие в Linux. Параметры, передаваемые в конфигурационном файле службы (SRV1CV8_PORT, SRV1CV8_REGPORT, SRV1CV8_RANGE), передаются процессу ragent в командной строке запуска. Эти настройки определяют порты кластера только в момент его первоначального создания.
В дальнейшем топология кластера, порты центрального сервера, диапазоны рабочих процессов и параметры рабочих серверов жестко сохраняются во внутренних файлах конфигурации в каталоге данных кластера (по умолчанию ~/.1cv8/1C/1cv8/ или /home/usr1cv8/.1cv8/1C/1cv8/). Если обновить только переменные запуска в системном конфиге, агент ragent запустится на новом порту, но менеджер кластера rmngr прочитает старую топологию из реестра 1CV8Reg.lst. Возникает конфликт адресации: процессы не могут обнаружить друг друга, из-за чего рабочий процесс rphost не стартует.
Рассмотрим последовательность действий, которая позволяет перевести существующий работающий кластер на новые порты без потери списка информационных баз, пользователей и журнала регистрации.
service srv1cv83 stop
# или для systemd:
systemctl stop srv1cv83
Откроем конфигурационный файл (например, /etc/sysconfig/srv1cv83) и зададим новые значения портов:
SRV1CV8_PORT=2540
SRV1CV8_REGPORT=2541
SRV1CV8_RANGE=2560:2591
Перейдем в каталог данных пользователя usr1cv8 (по умолчанию /home/usr1cv8/.1cv8/1C/1cv8/). В файле 1cv8wsrv.lst скорректируем порт агента и порт кластера на новые значения (2540 и 2541).
В каталоге данных находится поддиректория реестра, имя которой привязано к старому главному порту: reg_1541. Переименуем эту папку в соответствии с новым портом регистрации:
mv /home/usr1cv8/.1cv8/1C/1cv8/reg_1541 /home/usr1cv8/.1cv8/1C/1cv8/reg_2541
Перейдем в переименованную папку reg_2541 и откроем файл 1CV8Reg.lst. В нем заменим все упоминания старых портов на новые:
- основной порт менеджера кластера (1541 меняем на 2541);
- порт подключения рабочего сервера;
- диапазон сетевых портов рабочих процессов (1560:1591 меняем на 2560:2591).
service srv1cv83 start
# или для systemd:
systemctl start srv1cv83
Проверим список запущенных процессов через ps aux | grep 1C. Все три ключевых процесса — ragent, rmngr и rphost — должны успешно запуститься с новыми номерами портов.
Если на сервере нет критически важных информационных баз или список баз планируется подключить заново через консоль администрирования, можно применить быстрое пересоздание конфигурации.
service srv1cv83 stop./etc/sysconfig/srv1cv83 (SRV1CV8_PORT=2540, SRV1CV8_REGPORT=2541, SRV1CV8_RANGE=2560:2591).
rm -rf /home/usr1cv8/.1cv8/1C/1cv8/*
service srv1cv83 start.При первом запуске с чистым каталогом агент ragent автоматически сформирует файлы 1cv8wsrv.lst, создаст каталог reg_2541 и файл 1CV8Reg.lst со значениями портов из конфигурационного файла. После этого информационные базы потребуется повторно добавить в кластер через консоль администрирования.
Разберем сопутствующие моменты, с которыми можно столкнуться при переносе портов:
1. Ложный статус «Ragent: NOT RUNNING»
В дистрибутивах со скриптами инициализации SysVinit (CentOS 6 и аналоги) команда service srv1cv83 status проверяет доступность сокета агента по стандартному порту 1540. При смене порта на 2540 статус-скрипт может сообщать, что агент не запущен (Ragent: NOT RUNNING), даже когда процесс фактически работает. Проверять реальное состояние службы следует через список процессов: ps aux | grep 1cv8.
2. Настройка межсетевого экрана (iptables / firewalld)
При использовании нестандартных портов необходимо открыть сетевой доступ для клиентских подключений и консолей администрирования ко всем выделенным портам: главному порту агента (2540/tcp), порту менеджера кластера (2541/tcp) и всему рабочему диапазону (2560-2591/tcp).
3. Политики безопасности SELinux
Если в операционной системе включен режим принудительного контроля доступа (SELinux), убедимся, что сетевые политики не блокируют привязку демонов 1С к нестандартным портам. При необходимости добавим новые порты в список разрешенных сетевых ресурсов с помощью утилиты semanage port.