Смена портов агента, кластера и рабочих процессов сервера 1С:Предприятия 8.3

· 10 мин

Содержание

Порты сервера 1С задаются тремя параметрами в командной строке службы агента ragent.exe: -port (агент, по умолчанию 1540), -regport (главный менеджер кластера, 1541) и -range (рабочие процессы, 1560:1591). Чтобы сервер 1С работал на другом порту, остановите службу, поменяйте эти значения в свойстве ImagePath службы, откройте новые порты в брандмауэре и пропишите новый порт кластера в строках подключения клиентов: Srvr="server:2541".

Есть подвох, о который спотыкаются чаще всего. Порт кластера хранится в реестре кластера в каталоге srvinfo. Если кластер уже создан, правка -regport в службе сама по себе его порт не меняет. Как с этим быть, разобрано ниже по шагам.

Когда сервер 1С переводят на нестандартный порт

Стандартные порты нужны одному экземпляру сервера. Менять их приходится в нескольких типовых ситуациях:

  • 🖥️ Два сервера 1С на одной машине. Например, рабочий кластер на платформе одной версии и тестовый на другой. Две службы не могут слушать один и тот же порт.
  • 🔄 Переход на новую версию платформы с откатом. Новую версию поднимают рядом на других портах, проверяют и только потом переключают пользователей.
  • 🚫 Порт занят другой программой. Диапазон 1540–1591 иногда пересекается с другим ПО на сервере.
  • 🛡️ Требования безопасности. Служба ИБ просит увести сервис со стандартных портов или уложить его в согласованный диапазон.

Какие порты участвуют в работе сервера:

КомпонентПараметрПо умолчаниюКто подключается
Агент сервера (ragent)-port1540Консоль администрирования, сервер администрирования ras
Главный менеджер кластера (rmngr)-regport1541Клиенты 1С, веб-сервер, COM-соединение
Рабочие процессы (rphost)-range1560:1591Клиенты после установки соединения
Сервер администрирования (ras)--port1545Утилита rac и сторонние консоли

Клиент в строке подключения указывает порт кластера (1541). Дальше менеджер кластера отправляет его к рабочему процессу на порт из диапазона. Поэтому закрытый диапазон даёт ошибку уже после того, как «соединение вроде бы пошло».

💡 Удобная схема для второго экземпляра — сдвинуть все номера на сотню или тысячу: 1640/1641/1660:1691 или 2540/2541/2560:2591. Так по номеру порта сразу видно, к какому экземпляру он относится.

Подготовка: что проверить до изменения порта

Смена порта требует перезапуска службы агента. Все сеансы пользователей оборвутся, несохранённые данные пропадут. Делайте это вне рабочего времени и предупредите пользователей заранее.

Перед изменением:

  1. Проверьте, что новые порты свободны. В командной строке на сервере:

    netstat -ano | findstr ":2540 :2541 :2560"
    

    Пустой вывод — порты свободны. Если строка есть, по номеру PID в последнем столбце найдите процесс: tasklist /FI "PID eq 4321".

  2. Скопируйте каталог srvinfo. Путь к нему стоит после ключа -d в командной строке службы, обычно C:\Program Files\1cv8\srvinfo. В нём лежит реестр кластера: список баз, администраторы, настройки блокировок. Копия нужна, чтобы откатиться за минуту.

  3. Сохраните текущую командную строку службы. Скопируйте значение ImagePath в текстовый файл. Это самый быстрый способ вернуть всё как было.

  4. Составьте список мест, где прописан сервер. Ярлыки и списки баз у пользователей, веб-публикации, внешние обработки с COM-подключением, скрипты резервного копирования через rac или 1cv8.exe.

Как изменить порт сервера 1С в Windows через параметры службы

Шаг 1. Найдите службу агента

Откройте services.msc и найдите службу вида 1C:Enterprise 8.3 Server Agent (x86-64). В её свойствах на вкладке «Общие» видны имя службы и «Исполняемый файл» — полная командная строка. Обычно она выглядит так:

"C:\Program Files\1cv8\8.3.xx.xxxx\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo" -debug

Здесь 8.3.xx.xxxx — номер вашей версии платформы.

Шаг 2. Остановите службу

В той же оснастке нажмите «Остановить» или выполните sc stop с именем службы. Убедитесь в диспетчере задач, что процессы ragent.exe, rmngr.exe и rphost.exe этого экземпляра завершились.

Шаг 3. Поменяйте порты в командной строке

Вариант через sc config — без ручной правки реестра. Командная строка запускается от имени администратора, пробел после binPath= обязателен:

sc config "1C:Enterprise 8.3 Server Agent (x86-64)" binPath= "\"C:\Program Files\1cv8\8.3.xx.xxxx\bin\ragent.exe\" -srvc -agent -regport 2541 -port 2540 -range 2560:2591 -d \"C:\Program Files\1cv8\srvinfo\" -debug"

Вариант через редактор реестра:

  1. Запустите regedit от имени администратора.
  2. Перейдите в HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services и откройте раздел с именем службы из шага 1.
  3. Дважды щёлкните параметр ImagePath и замените значения после -port, -regport и -range.
  4. Остальную часть строки, включая кавычки вокруг путей, не трогайте.

Опечатка в ImagePath — и служба не запустится. Перед правкой экспортируйте раздел службы в .reg-файл через «Файл → Экспорт».

Шаг 4. Запустите службу и проверьте

sc start "1C:Enterprise 8.3 Server Agent (x86-64)"
netstat -ano | findstr ":2540 :2541"

Оба порта должны быть в состоянии LISTENING. Если слушается 2540, а на 2541 тишина, вы попали в ситуацию с уже созданным кластером — следующий раздел.

Второй экземпляр сервера на той же машине

Если нужен не перенос, а второй сервер рядом с первым, создайте отдельную службу со своим каталогом srvinfo:

mkdir D:\srvinfo2540
sc create "1C Server Agent 2540" binPath= "\"C:\Program Files\1cv8\8.3.yy.yyyy\bin\ragent.exe\" -srvc -agent -regport 2541 -port 2540 -range 2560:2591 -d \"D:\srvinfo2540\" -debug" start= auto obj= ".\USR1CV8" password= "пароль_пользователя"

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

Про файл services

В Windows есть файл C:\Windows\System32\drivers\etc\services со списком «имя сервиса — порт». Сервер 1С его не читает: порты берутся только из командной строки службы. Правка этого файла ничего не меняет, а случайная порча строк может сломать другие программы. Трогать его не нужно.

Порт кластера и диапазон рабочих процессов в консоли

Параметр -regport используется при первом запуске, когда каталог srvinfo пуст: агент создаёт кластер по умолчанию с этим портом. После этого порт записан в реестре кластера и живёт своей жизнью.

Если служба уже работала на 1541, есть два рабочих пути.

Путь 1. Новый кластер в консоли. Подходит, когда баз немного:

  1. Откройте «Администрирование серверов 1С Предприятия» и подключитесь к агенту по новому порту (2540).
  2. В ветке «Кластеры» через контекстное меню создайте новый кластер, в поле «IP-порт» укажите 2541.
  3. Зарегистрируйте в нём информационные базы с теми же параметрами СУБД. Данные в SQL при этом не трогаются, вы лишь заново описываете базу в кластере.
  4. Старый кластер удалите после проверки.

Путь 2. Чистый srvinfo. Остановите службу, переименуйте каталог srvinfo в srvinfo_old, создайте пустой и запустите службу с новыми параметрами. Агент создаст кластер сразу на 2541 и с диапазоном 2560:2591. Базы, администраторов кластера и настройки блокировки регламентных заданий придётся завести заново.

Если в старом кластере у базы стояла «Блокировка регламентных заданий» (например, у копии рабочей базы), после перерегистрации она снимется. Проверьте это сразу, иначе копия начнёт обмены и отправку данных наравне с рабочей.

Диапазон рабочих процессов меняется без пересоздания кластера. В консоли раскройте кластер → «Рабочие серверы» → свойства сервера. В поле диапазонов IP-портов укажите новый, например 2560:2591. После этого перезапустите службу в нерабочее время, чтобы рабочие процессы поднялись на новых портах.

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

Смена порта сервера 1С на Linux

На Linux порты задаются тем же набором параметров ragent, но в настройках службы:

  • в старых пакетах — переменные SRV1CV8_PORT, SRV1CV8_REGPORT, SRV1CV8_RANGE в файле /etc/sysconfig/srv1cv83 (RHEL-подобные) или /etc/default/srv1cv83 (Debian, Ubuntu);
  • в новых сборках с юнит-файлом systemd — параметры запуска в самом юните. Меняйте их не в исходном файле, а через systemctl edit, чтобы правку не затерло обновление платформы .

После изменения:

sudo systemctl daemon-reload
sudo systemctl restart <имя службы сервера 1С>
sudo ss -tlnp | grep -E ':(2540|2541)'

Правило про уже созданный кластер действует и здесь: каталог реестра кластера по умолчанию лежит в домашнем каталоге пользователя usr1cv8, порт в нём сохраняется после первого запуска.

Брандмауэр: открываем новые порты сервера

Без правил брандмауэра сервер слушает новый порт, но клиенты с других машин к нему не достучатся. Старые правила на 1540–1591 удалите или отключите, если старый экземпляр больше не нужен.

Windows, PowerShell от имени администратора:

New-NetFirewallRule -DisplayName "1C Server 2540-2541" -Direction Inbound -Protocol TCP -LocalPort 2540,2541 -Action Allow
New-NetFirewallRule -DisplayName "1C Server rphost 2560-2591" -Direction Inbound -Protocol TCP -LocalPort 2560-2591 -Action Allow

То же через netsh:

netsh advfirewall firewall add rule name="1C Server 2540-2591" dir=in action=allow protocol=TCP localport=2540-2541,2560-2591

Linux:

# firewalld
sudo firewall-cmd --permanent --add-port=2540-2541/tcp --add-port=2560-2591/tcp
sudo firewall-cmd --reload
# ufw
sudo ufw allow 2540:2541/tcp
sudo ufw allow 2560:2591/tcp

Если между клиентами и сервером стоит аппаратный межсетевой экран или правила в облаке, откройте те же порты и там. Отдельно — порт ras (1545 или ваш), если консоль или rac работают с другой машины.

Что поменять у клиентов, в веб-публикации и в ras

Список баз у пользователей

В окне запуска откройте базу на изменение. В поле «Кластер серверов 1С:Предприятия» допишите порт кластера через двоеточие: server:2541. Порт агента (2540) сюда не пишут.

Списки баз лежат в файле %APPDATA%\1C\1CEStart\ibases.v8i. Строка подключения в нём после правки выглядит так:

Connect=Srvr="server:2541";Ref="buh";

Если пользователям раздаётся общий список через 1CEStart.cfg, поправьте исходный файл один раз — рабочие места подтянут его при следующем запуске.

Ярлыки, скрипты, COM

В командной строке запуска используется ключ /S:

"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /S"server:2541\buh"

То же касается обработок с внешним соединением: в строку подключения Srvr="server:2541";Ref="buh"; порт добавляется так же.

Веб-публикация

В файле default.vrd в каталоге публикации поправьте атрибут ib:

ib="Srvr=&quot;server:2541&quot;;Ref=&quot;buh&quot;;"

Или опубликуйте заново утилитой webinst с новой строкой -connstr "Srvr=server:2541;Ref=buh;". После правки перезапустите пул приложений IIS или Apache.

Сервер администрирования ras

Служба ras подключается к агенту, поэтому при смене -port её тоже надо перенастроить. В командной строке службы ras адрес агента указан последним аргументом, например localhost:1540. Замените его на localhost:2540 тем же способом, что и для агента. Утилита rac после этого работает как прежде: rac server:1545 cluster list.

Диагностика: сервер на новом порту не отвечает

Начинайте проверку с самого сервера и двигайтесь к клиенту. Сначала netstat или ss на сервере, потом проверка порта с рабочего места:

Test-NetConnection server -Port 2541

TcpTestSucceeded : True — порт доступен по сети, ищите ошибку в строке подключения. False — проблема в службе или брандмауэре.

Диагностика: выберите симптом

Если не помогло

  • Откатитесь: верните сохранённую командную строку службы и каталог srvinfo из копии. Сервер вернётся на 1540/1541.
  • Проверьте права учётной записи службы на каталог srvinfo. После переименования или создания нового каталога доступ часто забывают выдать.
  • Если на машине стоит антивирус с сетевым экраном, у него свои правила, независимые от брандмауэра Windows.
  • Включите технологический журнал сервера с событиями EXCP и CONN на время проверки — он покажет, на каком этапе рвётся соединение.

Частые вопросы

Можно ли поменять только порт кластера, оставив агент на 1540?
Да. Порты независимы: агент может остаться на 1540, а кластер работать на 2541. Но для второго экземпляра на той же машине менять нужно все три параметра, иначе службы конфликтуют.
Нужно ли менять что-то в самой базе данных на SQL Server или PostgreSQL?
Нет. Порт СУБД и порты сервера 1С — разные вещи. Данные базы не меняются, вы правите только регистрацию базы в кластере и строки подключения.
Влияет ли смена порта на лицензии?
Программные лицензии привязаны к параметрам компьютера, а не к порту. После перезапуска службы на тех же параметрах оборудования они продолжают работать. Если вместе с портом переносите сервер на другую машину, это уже смена оборудования.
Почему клиенты подключаются без указания порта?
Если порт не указан, клиент идёт на стандартный порт кластера 1541. Поэтому после переноса на 2541 у пользователей со старой строкой подключения база перестанет открываться.
Можно ли сделать диапазон рабочих процессов из нескольких частей?
Да, в свойствах рабочего сервера задаётся несколько диапазонов. Это удобно, когда служба безопасности выделила порты разрозненными блоками.