Перенос кластера 1С 8.3 на другие порты: агент, менеджер, рабочие процессы и клиенты
Содержание
Основные порты сервера 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С
Смена портов требует остановки службы агента. Все пользователи будут отключены, фоновые и регламентные задания прервутся — делайте это вне рабочего времени и предупредите людей заранее.
Перед началом:
- 📋 Выпишите список зарегистрированных баз из консоли кластера: имя базы в кластере, сервер СУБД, имя базы данных, тип СУБД. Это понадобится для повторной регистрации.
- 💾 Скопируйте каталог
srvinfoцеликом (по умолчаниюC:\Program Files\1cv8\srvinfo) в другое место при остановленной службе. Это ваш путь отката. - 🗄️ Сделайте резервную копию баз средствами СУБД. Сами базы при смене портов не меняются, но откат должен быть.
- 🔑 Запомните администратора кластера и администраторов баз — при регистрации их спросят.
- 🔍 Проверьте, что новые порты свободны:
netstat -ano | findstr ":2540 :2541 :256". - 🧾 Найдите, где у вас прописан старый адрес: общий список баз
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 (надёжный)
Подходит и для переноса существующего кластера, и для второго экземпляра рядом.
- Создайте каталог данных, например
C:\Program Files\1cv8\srvinfo2540. - Если переносите существующий кластер, остановите и удалите старую службу из каталога
binнужной версии:Для второго экземпляра рядом старую службу не трогайте.ragent.exe -rmsrvc - Зарегистрируйте службу с новыми портами:Вместо
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укажите учётную запись, под которой служба работала раньше. - Запустите службу в
services.mscили командойnet startс именем службы. - В консоли кластера добавьте центральный сервер с портом
2540. Кластер на порту 2541 создастся автоматически. - Зарегистрируйте базы заново: «Создание информационной базы» с теми же параметрами СУБД и без флажка «Создать базу данных в случае её отсутствия» на уже существующей базе. Данные лежат в СУБД, кластер только хранит ссылку на них.
Способ 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С нет. Её проверяет сервис лицензирования внутри кластера, он работает на тех же портах из диапазона. Если сервер переехал на новые порты и пользователи получают Не обнаружена лицензия, проверьте две вещи:
- Файлы лицензий доступны службе с новыми параметрами. Если служба запущена под другой учётной записью, у неё может не оказаться прав на каталог с лицензиями.
- Задано назначение функциональности «Сервис лицензирования», если в кластере несколько рабочих серверов.
С аппаратными ключами иначе. 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="srv1c:2541";Ref="buh";"
После правки перезапустите 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 пройдёт, а с рабочим процессом нет.
Проверка после смены портов и разбор ошибок
После запуска пройдите по порядку:
- ✅ Порты слушаются:
netstat -ano | findstr ":2540 :2541", PID совпадает сragentиrmngr. - ✅ Сеть пропускает: с клиента
Test-NetConnection srv1c -Port 2541, затем проверьте любой порт диапазона, где уже запущенrphost. - ✅ Консоль видит кластер на 2541, базы зарегистрированы.
- ✅ Клиент входит в базу, фоновые задания стартуют по расписанию.
- ✅ Веб-публикация открывается, обмены отрабатывают.
Если ничего не помогает, верните старую конфигурацию: остановите новую службу, восстановите сохранённый 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. Список баз для скрипта берите из таблицы, которую выписали на этапе подготовки.