Новое имя для сервера 1С:Предприятия без потери кластера и баз
Содержание
Чтобы переименовать сервер 1С, мало сменить имя компьютера в Windows или Linux. Кластер 1С:Предприятия хранит старое имя в своём реестре — файле 1CV8Clst.lst в каталоге srvinfo\reg_1541. Порядок такой: остановить службу агента, скопировать srvinfo, переименовать машину, заменить старое имя в файлах реестра кластера, поправить имя сервера СУБД и списки баз у пользователей, запустить службу.
Если сменить только имя ОС, служба либо не стартует, либо запустится, а клиенты получат Сервер 1С:Предприятия не обнаружен. Процедура ниже рассчитана на платформу 8.3 и Windows Server 2016 и новее или современный Linux. На один сервер уходит 30–60 минут простоя, большая часть — перезагрузка и проверка.
Подготовка перед сменой имени сервера 1С
Переименование — плановая работа с остановкой. Все сеансы пользователей и фоновые задания оборвутся, поэтому назначайте её на вечер или выходной.
Что собрать заранее:
- 📝 Старое и новое имя, короткое и полное (
srv1cиsrv1c.corp.local). Имя выбирайте уникальное: оно будет участвовать в поиске с заменой по файлам. - 📝 Список информационных баз кластера и где лежат их данные: имя сервера СУБД, экземпляр, имя базы.
- 📝 Кто подключается к серверу: рабочие места, терминальные серверы, веб-сервер с публикациями, скрипты резервного копирования, обработки обмена.
- 📝 Номер версии платформы и имя службы агента. В Windows его видно в оснастке
services.msc, в Linux — по командеsystemctl list-unit-files | grep 1cv8.
Резервные копии:
- Выгрузите каждую базу в
.dtили сделайте полный бэкап средствами СУБД. - Остановите службу агента сервера 1С.
- Скопируйте каталог реестра кластера целиком. По умолчанию это
C:\Program Files\1cv8\srvinfoв Windows и/home/usr1cv8/.1cv8/1C/1cv8в Linux. Если при установке указывали другой каталог, он прописан в параметре-dкомандной строки службы.
Без копии каталога srvinfo отката не будет: в нём список баз, администраторы кластера, требования назначения функциональности и настройки рабочих серверов.
Если лицензия на сервер программная, найдите заранее резервный пин-код из комплекта. Программная лицензия привязана к параметрам компьютера. После переименования проверьте, что сервер по-прежнему её получает. Аппаратному ключу HASP имя компьютера безразлично.
Переименование сервера 1С на Windows Server
Главная ловушка Windows — служба 1С стартует сама после перезагрузки, ещё до правки реестра кластера. Поэтому сначала переведите её в ручной запуск.
- Откройте
services.msc, найдите службу «Агент сервера 1С:Предприятия 8.3». Остановите её, тип запуска поставьте «Вручную». Так же поступите со службой сервера администрированияras, если она установлена. - Переименуйте компьютер. Через
Параметры → Система → О программе → Переименовать этот ПКили командой PowerShell от администратора:
Rename-Computer -NewName "SRV1C-NEW" -Restart
- Если сервер в домене, переименование выполняйте под доменной учётной записью с правом менять объекты компьютеров. Учётная запись компьютера в Active Directory переименуется сама.
- После перезагрузки проверьте результат: команда
hostnameдолжна вернуть новое имя.
Что проверить в реестре Windows
Имени компьютера в параметрах самой службы 1С обычно нет: там путь к ragent.exe, порты и каталог -d. Но проверить стоит, особенно если службу регистрировали вручную.
Командная строка службы лежит в параметре ImagePath ветки HKLM\SYSTEM\CurrentControlSet\Services\<имя службы>. Быстрее посмотреть так:
sc qc "1C:Enterprise 8.3 Server Agent (x86-64)"
Имя службы в кавычках подставьте своё из services.msc. Чаще всего старое имя находится у службы ras: её регистрируют с адресом агента вида srv1c-old:1540. Исправьте адрес на новое имя или на localhost:1540. Сделать это можно в regedit или пересоздав службу ras с новым адресом.
Если в домене настроена аутентификация 1С через Kerberos, SPN службы привязан к старому имени. Зарегистрируйте его для нового полного имени (setspn для учётной записи, под которой работает агент), иначе вход по пользователю ОС перестанет работать.
Смена имени сервера 1С на Linux
На Linux порядок тот же: остановить, скопировать, переименовать, поправить реестр, запустить.
# имя службы смотрите в выводе systemctl list-unit-files | grep 1cv8
sudo systemctl stop srv1cv8-8.3.XX.XXXX@default
sudo systemctl disable srv1cv8-8.3.XX.XXXX@default
sudo cp -a /home/usr1cv8/.1cv8 /root/1cv8-backup-$(date +%F)
sudo hostnamectl set-hostname srv1c-new
После hostnamectl откройте /etc/hosts и замените старое имя в строке с 127.0.1.1 или с адресом сервера. Если этого не сделать, sudo начнёт ругаться на неразрешаемое имя, а агент 1С может не найти сам себя.
Проверка:
hostname
hostname -f
getent hosts srv1c-new
Все три команды должны вернуть новое имя, а последняя — правильный IP-адрес, не 127.0.0.1, если к серверу ходят по сети.
В старых сборках платформы служба называется srv1cv83 и управляется через /etc/init.d. Команды остановки отличаются, а каталог реестра кластера тот же.
Правка реестра кластера: 1CV8Clst.lst и соседние файлы
Это ключевой шаг. В каталоге srvinfo хранятся текстовые файлы со списком кластеров, рабочих серверов и баз. Старое имя компьютера встречается в них в нескольких местах:
- 🖥️
1cv8wsrv.lstв корнеsrvinfo— список кластеров агента с адресом менеджера; - 🖥️
reg_1541\1CV8Clst.lst— реестр кластера: рабочие серверы, менеджеры, базы и имена серверов СУБД в их свойствах; - 🖥️ в кластерах с другим портом каталог называется по порту:
reg_2541и так далее.
Служба должна быть остановлена. Найдите все файлы со старым именем.
Windows:
findstr /s /i /m "SRV1C-OLD" "C:\Program Files\1cv8\srvinfo\*.lst"
Linux:
sudo grep -ril "srv1c-old" /home/usr1cv8/.1cv8/1C/1cv8/ --include="*.lst"
Откройте каждый найденный файл в редакторе, который не меняет кодировку (Notepad++, nano), и замените старое имя на новое. Ищите без учёта регистра: имя может быть записано и заглавными, и строчными буквами, а иногда полным доменным именем.
На Linux замену можно сделать одной командой. Перед ней у вас уже есть копия каталога:
sudo find /home/usr1cv8/.1cv8/1C/1cv8/ -name "*.lst" \
-exec sed -i 's/srv1c-old/srv1c-new/gI' {} +
Слепая замена опасна, если старое имя короткое и совпадает с частью других строк. Например, srv или 1c встретятся в путях и именах баз. В таком случае меняйте вхождения по одному, просматривая каждое.
После замены верните службе автоматический запуск и стартуйте её. В Windows — через services.msc, в Linux — systemctl enable --now с тем же именем службы.
Если служба после старта падает или в консоли висят процессы со старыми данными, при остановленной службе удалите папки сеансового кэша snccntx* внутри reg_1541. Они пересоздаются сами. Делайте это только при остановленной службе: при работающей вы оборвёте сеансы.
Сервер СУБД, DNS и списки баз у пользователей
MS SQL Server на том же компьютере
SQL Server запоминает имя машины при установке и после переименования продолжает отдавать старое. Проверьте и исправьте в SQL Server Management Studio:
SELECT @@SERVERNAME;
EXEC sp_dropserver 'SRV1C-OLD';
EXEC sp_addserver 'SRV1C-NEW', 'local';
Для именованного экземпляра указывайте имя целиком: 'SRV1C-OLD\SQLEXPRESS'. Затем перезапустите службу SQL Server — до перезапуска @@SERVERNAME вернёт старое значение.
В свойствах каждой информационной базы в кластере есть поле «Сервер баз данных». Если там было старое имя, замена в 1CV8Clst.lst его уже исправила. Проверьте в консоли кластера: откройте свойства базы и посмотрите это поле.
Когда СУБД стоит на той же машине, что и сервер 1С, в поле «Сервер баз данных» удобно писать localhost. Следующее переименование эту настройку уже не затронет.
PostgreSQL
PostgreSQL имя машины не хранит. Доступ в pg_hba.conf обычно задан IP-адресами, а не именами. Менять нужно только поле «Сервер баз данных» в свойствах баз 1С, если там стояло старое имя.
DNS и клиентские компьютеры
В DNS должна появиться запись A для нового имени. В домене она обновится сама после перезагрузки, в рабочей группе её надо завести вручную или прописать в hosts на клиентах.
У пользователей строка подключения хранится в списке баз — файле ibases.v8i в %APPDATA%\1C\1CEStart. Там вида Connect=Srvr="srv1c-old";Ref="buh";. Варианты обновления:
| Способ | Когда подходит | Минусы |
|---|---|---|
| Изменить базу в окне запуска 1С вручную | 5–10 рабочих мест | Долго, легко пропустить кого-то |
Общий список баз через CommonInfoBases в 1CEStart.cfg | Список уже раздаётся централизованно | Нужно поправить один файл, но только если механизм уже настроен |
Скрипт или групповая политика с заменой строки в ibases.v8i | Десятки рабочих мест в домене | Нужен администратор домена |
| Запись CNAME со старым именем на новый сервер | Переходный период | Новое имя всё равно должно разрешаться у клиентов |
Про CNAME: клиент по старому имени дойдёт до агента, но адреса рабочих процессов агент вернёт под новым именем. Если клиент его не разрешает, подключения не будет. Используйте псевдоним только как временную подпорку на неделю-две.
Не забудьте про скрипты. Пакетные файлы с 1cv8.exe DESIGNER /S"srv1c-old\buh", задания резервного копирования, обработки обмена с адресом сервера — всё это молча перестанет работать.
Кластер из нескольких серверов, веб-публикации и Nginx
Несколько рабочих серверов
Если в кластере несколько рабочих серверов, реестр кластера ведёт центральный сервер, и имена остальных машин записаны в его 1CV8Clst.lst. Переименовываете рабочий (не центральный) сервер — останавливайте службы на обоих и правьте реестр на центральном.
При настроенном резервировании менеджеров реестр копируется между центральными серверами. Остановите службы на всех серверах кластера и проверьте файлы на каждом. Иначе при старте один сервер может вернуть старые данные остальным.
Требования назначения функциональности и параметры отказоустойчивости задаются в свойствах рабочего сервера. Они хранятся в том же реестре и после замены имени сохраняются.
Веб-публикации на Apache или IIS
Строка подключения опубликованной базы лежит в файле default.vrd в каталоге публикации:
ib="Srvr="srv1c-old";Ref="buh";"
Замените имя и перезапустите веб-сервер. Через веб-клиент, HTTP-сервисы и OData к базе снова можно подключиться. Если публикаций много, найдите все default.vrd поиском по каталогу веб-сервера.
Nginx перед веб-сервером
Когда Nginx проксирует запросы к Apache или IIS по имени машины, поправьте proxy_pass или блок upstream:
upstream web1c {
server srv1c-new:80;
}
Затем nginx -t и systemctl reload nginx. Проверьте и сертификат: если внешний адрес не менялся, его трогать не нужно. Если менялся — нужен новый сертификат на новое имя.
Проверка после переименования и типичные сбои
Порядок проверки от сервера к клиенту:
- Служба агента запущена, в журнале событий нет ошибок от источника 1С.
- Порты слушаются: агент
1540, менеджер кластера1541, рабочие процессы — диапазон из свойств рабочего сервера, по умолчанию1560:1591. - В консоли кластера удалите старую запись центрального сервера и добавьте новую с новым именем. Консоль хранит свой список отдельно, на кластер это не влияет.
- Если работает
ras, командаrac cluster listпоказывает кластер с новым именем хоста. - Каждая база открывается в режиме «1С:Предприятие» с рабочего места и с самого сервера.
- Регламентные задания выполняются: обмены, загрузка курсов, резервное копирование .
Как откатить переименование сервера 1С
Если за отведённое окно поднять сервер не удалось, вернитесь к исходному состоянию. Всё, что нужно, у вас уже есть в копиях.
- Остановите службу агента и
ras. - Верните компьютеру старое имя (
Rename-Computerилиhostnamectl), перезагрузите. - Замените каталог
srvinfo(или.1cv8на Linux) сохранённой копией целиком, а не отдельными файлами. - Для MS SQL снова выполните
sp_dropserverиsp_addserver, теперь со старым именем, и перезапустите службу SQL Server. - Верните старые значения в
default.vrd, конфигурации Nginx и в тех списках баз, которые уже успели поменять. - Запустите службу и пройдите проверку из предыдущего раздела.
Не пытайтесь «починить» реестр кластера, удаляя его и регистрируя базы заново, — так теряются администраторы, требования назначения и настройки баз. Восстановление из копии быстрее и надёжнее.
Частые вопросы
Можно ли сменить только IP-адрес сервера 1С, не меняя имени?
Нужно ли переустанавливать платформу после переименования?
ras и внешние ссылки на сервер.Затрагивает ли переименование данные в базах?
Что делать с файловыми базами на этом компьютере?
\\srv1c-old\bases\buh. Кластер их не касается, но путь в списке баз у пользователей нужно заменить на новое имя.Можно ли переименовать сервер без перезагрузки?
hostnamectl меняет имя сразу, но службу 1С всё равно перезапускают после правки реестра кластера.