Как правильно изменить сетевые порты сервера 1С:Предприятие под Linux

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

При развертывании нескольких экземпляров сервера 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 не стартует.

Способ 1. Ручное изменение портов с сохранением информационных баз и настроек

Рассмотрим последовательность действий, которая позволяет перевести существующий работающий кластер на новые порты без потери списка информационных баз, пользователей и журнала регистрации.

  1. Остановим службу сервера 1С:
    
    service srv1cv83 stop
    # или для systemd:
    systemctl stop srv1cv83
    
  2. Скорректируем параметры запуска службы:

    Откроем конфигурационный файл (например, /etc/sysconfig/srv1cv83) и зададим новые значения портов:

    
    SRV1CV8_PORT=2540
    SRV1CV8_REGPORT=2541
    SRV1CV8_RANGE=2560:2591
    
  3. Отредактируем файл конфигурации агента сервера:

    Перейдем в каталог данных пользователя usr1cv8 (по умолчанию /home/usr1cv8/.1cv8/1C/1cv8/). В файле 1cv8wsrv.lst скорректируем порт агента и порт кластера на новые значения (2540 и 2541).

  4. Переименуем каталог реестра кластера:

    В каталоге данных находится поддиректория реестра, имя которой привязано к старому главному порту: reg_1541. Переименуем эту папку в соответствии с новым портом регистрации:

    mv /home/usr1cv8/.1cv8/1C/1cv8/reg_1541 /home/usr1cv8/.1cv8/1C/1cv8/reg_2541
  5. Обновим реестр информационных баз и серверов:

    Перейдем в переименованную папку reg_2541 и откроем файл 1CV8Reg.lst. В нем заменим все упоминания старых портов на новые:

    - основной порт менеджера кластера (1541 меняем на 2541);
    - порт подключения рабочего сервера;
    - диапазон сетевых портов рабочих процессов (1560:1591 меняем на 2560:2591).

  6. Запустим службу сервера 1С:
    
    service srv1cv83 start
    # или для systemd:
    systemctl start srv1cv83
    

    Проверим список запущенных процессов через ps aux | grep 1C. Все три ключевых процесса — ragent, rmngr и rphost — должны успешно запуститься с новыми номерами портов.

Способ 2. Полное пересоздание кластера с нуля

Если на сервере нет критически важных информационных баз или список баз планируется подключить заново через консоль администрирования, можно применить быстрое пересоздание конфигурации.

  1. Остановим службу сервера 1С: service srv1cv83 stop.
  2. Укажем новые порты в конфигурационном файле /etc/sysconfig/srv1cv83 (SRV1CV8_PORT=2540, SRV1CV8_REGPORT=2541, SRV1CV8_RANGE=2560:2591).
  3. Полностью очистим каталог данных кластера: rm -rf /home/usr1cv8/.1cv8/1C/1cv8/*
  4. Запустим службу: service srv1cv83 start.

При первом запуске с чистым каталогом агент ragent автоматически сформирует файлы 1cv8wsrv.lst, создаст каталог reg_2541 и файл 1CV8Reg.lst со значениями портов из конфигурационного файла. После этого информационные базы потребуется повторно добавить в кластер через консоль администрирования.

Особенности диагностики и сетевой безопасности в Linux

Разберем сопутствующие моменты, с которыми можно столкнуться при переносе портов:

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.

← На главную