Перенос кластера 1С 8.3 на другие порты: агент, менеджер, рабочие процессы и клиенты

· 10 мин

Содержание

Основные порты сервера 1С задаются не в консоли кластера, а ключами запуска службы агента ragent: -port (агент, по умолчанию 1540), -regport (главный менеджер кластера, 1541) и -range (рабочие процессы, 1560:1591). Чтобы изменить порты, нужно остановить службу, поменять эти ключи, запустить её снова, открыть новые порты в брандмауэре и прописать новый порт у клиентов в виде сервер:2541.

Частое заблуждение: «поменяю -regport в службе — и кластер переедет». Не переедет. Порт уже созданного кластера записан в его реестре в каталоге srvinfo, и ключ запуска на него не влияет. Поэтому на рабочем сервере смена портов почти всегда означает чистый каталог данных и повторную регистрацию баз. Сами базы в СУБД при этом не трогаются.

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

Сервер 1С:Предприятия 8.3 — это несколько процессов, и каждому нужен свой порт.

ПроцессЧто делаетПорт по умолчаниюКлюч
ragentАгент сервера, к нему подключается консоль1540-port
rmngrГлавный менеджер кластера, к нему идёт клиент1541-regport
rphost, служебные rmngrРабочие процессы и сервисы кластера1560–1591-range
rasСервер администрирования для rac и сторонних консолей1545--port у ras
dbgsСервер отладки (режим -debug -http)1550—
HASP License ManagerСетевые аппаратные ключи475—

Зачем трогать стандартную схему:

  • 🔀 Две версии платформы на одном сервере. Например, 8.3.22 для старой конфигурации и 8.3.24 для новой. Две службы не могут слушать 1540 одновременно, вторую сдвигают на 2540/2541/2560–2591.
  • 🧪 Тестовый кластер рядом с рабочим. Отдельные порты и отдельный srvinfo — тесты не задевают боевые базы.
  • 🧱 Порт занят другой программой. Проверяется командой netstat -ano | findstr :1541.
  • 🔒 Требование службы безопасности уйти со стандартных портов. Это слабая защита, но встречается в регламентах.

Принятая схема — сдвигать все порты на тысячу: 2540, 2541, 2560:2591. Так проще помнить, какой экземпляр где.

Подготовка к изменению портов сервера 1С

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

Перед началом:

  1. 📋 Выпишите список зарегистрированных баз из консоли кластера: имя базы в кластере, сервер СУБД, имя базы данных, тип СУБД. Это понадобится для повторной регистрации.
  2. 💾 Скопируйте каталог srvinfo целиком (по умолчанию C:\Program Files\1cv8\srvinfo) в другое место при остановленной службе. Это ваш путь отката.
  3. 🗄️ Сделайте резервную копию баз средствами СУБД. Сами базы при смене портов не меняются, но откат должен быть.
  4. 🔑 Запомните администратора кластера и администраторов баз — при регистрации их спросят.
  5. 🔍 Проверьте, что новые порты свободны: netstat -ano | findstr ":2540 :2541 :256".
  6. 🧾 Найдите, где у вас прописан старый адрес: общий список баз ibases.v8i, файлы default.vrd на веб-сервере, ярлыки, скрипты обмена, внешние соединения COM.

Программные лицензии 1С привязаны к параметрам компьютера, а не к портам. Смена портов их не сбрасывает. Но не меняйте в тот же вечер сетевые карты, имя сервера или конфигурацию виртуальной машины — тогда привязка может слететь.

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

Ключи запуска лежат в свойствах службы «Агент сервера 1С:Предприятия 8.3». Посмотреть их можно так:

Get-CimInstance Win32_Service | Where-Object { $_.PathName -like '*ragent*' } | Select-Object Name, PathName

Типичная строка выглядит так:

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

Способ 1. Новая служба с чистым srvinfo (надёжный)

Подходит и для переноса существующего кластера, и для второго экземпляра рядом.

  1. Создайте каталог данных, например C:\Program Files\1cv8\srvinfo2540.
  2. Если переносите существующий кластер, остановите и удалите старую службу из каталога bin нужной версии:
    ragent.exe -rmsrvc
    
    Для второго экземпляра рядом старую службу не трогайте.
  3. Зарегистрируйте службу с новыми портами:
    cd "C:\Program Files\1cv8\8.3.24.1548\bin"
    ragent.exe -instsrvc -usr ".\USR1CV8" -pwd "Пароль" -regport 2541 -port 2540 -range 2560:2591 -d "C:\Program Files\1cv8\srvinfo2540" -debug
    
    Вместо .\USR1CV8 укажите учётную запись, под которой служба работала раньше.
  4. Запустите службу в services.msc или командой net start с именем службы.
  5. В консоли кластера добавьте центральный сервер с портом 2540. Кластер на порту 2541 создастся автоматически.
  6. Зарегистрируйте базы заново: «Создание информационной базы» с теми же параметрами СУБД и без флажка «Создать базу данных в случае её отсутствия» на уже существующей базе. Данные лежат в СУБД, кластер только хранит ссылку на них.

Способ 2. Правка ImagePath в реестре

Строка запуска хранится в HKLM\SYSTEM\CurrentControlSet\Services\<имя службы>\ImagePath. Можно исправить там значения -port, -regport, -range или выполнить sc.exe config с новым binPath=.

Этот способ годится, когда вы:

  • меняете только порт агента (-port) или диапазон;
  • поднимаете службу на пустом srvinfo.

Для уже созданного кластера смена -regport в строке запуска порт кластера не поменяет. Это частая причина ситуации «поменял порты, а клиенты по-прежнему ходят на 1541».

Способ 3. Диапазон рабочих процессов из консоли

Диапазон rphost у работающего кластера меняется без переустановки. Откройте консоль, Кластеры → <кластер> → Рабочие серверы, свойства сервера, поле «Диапазоны IP-портов». Там же видно «IP-порт главного менеджера кластера». После изменения диапазона новые процессы стартуют уже на новых портах, старые — после перезапуска.

СпособКогдаРиски
Новая служба + чистый srvinfoПеренос кластера, второй экземплярНужно перерегистрировать базы и задать заново настройки кластера
Правка ImagePath / sc configПорт агента, новый пустой кластерПорт существующего кластера не изменится
Свойства рабочего сервераТолько диапазон rphostМинимальные, процессы перезапустятся

Перед перерегистрацией сохраните скриншоты свойств кластера: интервал перезапуска, допустимый объём памяти, уровень отказоустойчивости, требования назначения функциональности. В новом кластере их придётся выставить руками.

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

На Linux порты задаются теми же параметрами, но через переменные окружения службы.

  • Платформы до 8.3.21 со скриптом /etc/init.d/srv1cv83: параметры в /etc/sysconfig/srv1cv83 (на Debian/Ubuntu — /etc/default/srv1cv83). Нужные строки — SRV1CV8_PORT, SRV1CV8_REGPORT, SRV1CV8_RANGE, SRV1CV8_DATA.
  • Платформы 8.3.21 и новее с юнитом systemd: посмотрите текущие значения через systemctl cat с именем вашего юнита, найдите те же переменные и переопределите их в systemctl edit, чтобы обновление платформы не затёрло правку.

Пример переопределения:

[Service]
Environment=SRV1CV8_PORT=2540
Environment=SRV1CV8_REGPORT=2541
Environment=SRV1CV8_RANGE=2560:2591
Environment=SRV1CV8_DATA=/home/usr1cv8/.1cv8/1C/1cv8-2540

Затем systemctl daemon-reload и перезапуск службы. Правило про srvinfo то же: для существующего кластера укажите новый каталог данных и перерегистрируйте базы. Проверка: ss -tlnp | grep -E '2540|2541'.

Порты лицензирования: программные лицензии и HASP

Отдельного «порта менеджера лицензий» у программной лицензии 1С нет. Её проверяет сервис лицензирования внутри кластера, он работает на тех же портах из диапазона. Если сервер переехал на новые порты и пользователи получают Не обнаружена лицензия, проверьте две вещи:

  1. Файлы лицензий доступны службе с новыми параметрами. Если служба запущена под другой учётной записью, у неё может не оказаться прав на каталог с лицензиями.
  2. Задано назначение функциональности «Сервис лицензирования», если в кластере несколько рабочих серверов.

С аппаратными ключами иначе. HASP License Manager работает на порту 475 (UDP и TCP), а современный драйвер Sentinel держит веб-интерфейс на 1947. Менять 475 не нужно — проще открыть его в брандмауэре. На клиентах путь к менеджеру лицензий задаётся в nethasp.ini в каталоге conf платформы:

[NH_COMMON]
NH_TCPIP = Enabled

[NH_TCPIP]
NH_SERVER_ADDR = 192.168.1.10
NH_USE_BROADCAST = Disabled

Явный адрес вместо широковещательного поиска ускоряет запуск и спасает, когда сервер в другой подсети.

Что поменять на клиентах, веб-сервере и в смежных службах

Клиент по умолчанию ищет кластер на 1541. Если порт другой, его указывают через двоеточие после имени сервера — порт менеджера кластера, а не агента.

Список баз. В карточке базы в поле «Кластер серверов 1С:Предприятия» пишите srv1c:2541. В файле ibases.v8i строка выглядит так:

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

Если списки раздаются централизованно через общий файл в 1CEStart.cfg, достаточно поправить один ibases.v8i на общем ресурсе.

Веб-публикация. В default.vrd каждой опубликованной базы исправьте строку подключения:

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

После правки перезапустите IIS или Apache.

Сервер администрирования RAS. Он подключается к агенту, поэтому указывайте новый порт агента:

ras.exe cluster --service --port=1545 srv1c:2540

Если RAS установлен службой, её нужно пересоздать с новым адресом агента. Утилита rac при этом обращается к RAS: rac srv1c:1545 cluster list.

Скрипты и обмены. Пакетный запуск, COM-соединения и обработки обмена используют ту же форму Srvr="srv1c:2541". Поиск по 1541 в каталоге скриптов находит всё за минуту.

Несколько рабочих серверов и межсетевые экраны

В кластере из нескольких серверов у каждого свой агент, менеджер и диапазон. При добавлении рабочего сервера в консоли указывается его порт агента. Между серверами кластера порты должны быть открыты в обе стороны: клиенту нужен доступ не только к 2541, но и ко всему диапазону рабочих процессов, потому что после рукопожатия он работает напрямую с rphost.

Правило для брандмауэра Windows:

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

Если между клиентами и сервером есть NAT, клиент получает от менеджера внутреннее имя сервера. Это имя должно разрешаться у клиента в доступный адрес — иначе соединение с 2541 пройдёт, а с рабочим процессом нет.

Проверка после смены портов и разбор ошибок

После запуска пройдите по порядку:

  1. ✅ Порты слушаются: netstat -ano | findstr ":2540 :2541", PID совпадает с ragent и rmngr.
  2. ✅ Сеть пропускает: с клиента Test-NetConnection srv1c -Port 2541, затем проверьте любой порт диапазона, где уже запущен rphost.
  3. ✅ Консоль видит кластер на 2541, базы зарегистрированы.
  4. ✅ Клиент входит в базу, фоновые задания стартуют по расписанию.
  5. ✅ Веб-публикация открывается, обмены отрабатывают.
Диагностика: выберите симптом

Если ничего не помогает, верните старую конфигурацию: остановите новую службу, восстановите сохранённый srvinfo, зарегистрируйте прежнюю службу с исходными ключами. Базы в СУБД всё это время не затрагиваются.

Автоматизация смены портов скриптом

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

$newPort  = 2540
$newReg   = 2541
$newRange = '2560:2591'

$svc  = Get-CimInstance Win32_Service | Where-Object { $_.PathName -like '*ragent*' } | Select-Object -First 1
$path = $svc.PathName
$path = $path -replace '-port\s+\d+',          "-port $newPort"
$path = $path -replace '-regport\s+\d+',       "-regport $newReg"
$path = $path -replace '-range\s+\d+:\d+',     "-range $newRange"

Stop-Service -Name $svc.Name
sc.exe config "$($svc.Name)" binPath= "$path"
Start-Service -Name $svc.Name

Get-CimInstance Win32_Service -Filter "Name='$($svc.Name)'" | Select-Object Name, State, PathName

Перед запуском скрипта убедитесь, что ragent на сервере один: фильтр берёт первую найденную службу. Остановка службы оборвёт сеансы — запускайте в окно обслуживания.

Для регистрации баз в новом кластере удобно использовать rac через RAS: список кластеров даёт rac srv1c:1545 cluster list, а параметры создания базы смотрите в справке rac help infobase. Список баз для скрипта берите из таблицы, которую выписали на этапе подготовки.

Смена портов сервера 1С
Выполнено: 0 / 8

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

Нужно ли менять порты на клиентах, если поменял только диапазон rphost?
Нет. Клиент знает только порт менеджера кластера, адрес рабочего процесса ему сообщает сам кластер. Но новый диапазон надо открыть в брандмауэре.
Можно ли держать две версии платформы на одном сервере?
Да, это главная причина смены портов. Каждой версии — своя служба, свой каталог srvinfo и свой набор портов, например 1540/1541/1560:1591 и 2540/2541/2560:2591. Одну базу при этом регистрируют только в одном кластере.
Сколько портов должно быть в диапазоне рабочих процессов?
Каждому рабочему процессу и служебному менеджеру нужен свой порт. Стандартных 32 портов хватает для большинства серверов. Если процессов много, расширьте диапазон или добавьте второй через запятую.
Влияет ли смена портов на файловые базы?
Нет. Файловые базы работают без сервера 1С, их порты не касаются.
Защищает ли нестандартный порт от взлома?
Почти нет: сканер найдёт открытый порт за минуты. Защищают закрытый снаружи доступ, администратор кластера с паролем и VPN для удалённых пользователей.