Что делать, если при установке сервера 1С создается пустой кластер или возникает конфликт IP-портов?

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

Приветствуем, коллеги! При развертывании или обновлении сервера 1С:Предприятие системные администраторы нередко сталкиваются с неприятными сюрпризами. В консоли администрирования может отображаться пустой кластер без возможности добавления рабочих серверов, либо служба агента наотрез отказывается запускаться, рапортуя о конфликте IP-портов. Ситуация усугубляется, когда при попытке исправить положение вручную консоль выдает пугающие ошибки вроде нехватки сервисов ClusterConfigService или SessionDataService.

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

Выясняем причины появления «пустого кластера» и сбоя служб

Когда мы запускаем консоль администрирования 1С и видим абсолютно пустую древовидную структуру (где поля адреса компьютера и портов заблокированы), это сигнализирует о повреждении системных файлов реестра кластера. Давайте разберем детально, из-за чего это происходит:

  1. Повреждение сеансового кэша (папки snccntx): В рабочем каталоге сервера (по умолчанию это C:\Program Files\1cv8\srvinfo\) хранятся временные данные активных сеансов пользователей. Они записываются в файлы с расширением .dat внутри директорий, чье имя начинается на snccntx. При аварийном завершении работы сервера, внезапном отключении электропитания или некорректной блокировке файлов антивирусным ПО эти файлы повреждаются. Менеджер кластера rmngr.exe при старте пытается прочесть битый кэш и аварийно завершает инициализацию сервисов конфигурации.
  2. Обнуление файлов конфигурации кластера: За описание структуры кластера и список подключенных к нему баз отвечают файлы 1CV8Clst.lst и 1cv8wsrv.lst. При критических сбоях файловой системы NTFS в момент записи эти конфигурационные файлы могут оказаться полностью перезаписаны нулями. Для платформы это выглядит так, будто кластер создается с чистого листа, но из-за несоответствия старых кэш-файлов служба работает некорректно.

Попытки вручную удалить поврежденный кластер через консоль обычно заканчиваются ошибкой, сообщающей, что на сервере не запущен сервис ClusterConfigService. Ниже мы рассмотрим два способа устранения этой проблемы.

Способ 1. Полный сброс каталога srvinfo (быстрое решение)

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

Выполним процедуру по шагам:

  1. Откроем оснастку «Службы» операционной системы Windows (вызовем команду services.msc через меню «Выполнить»).
  2. Найдем в списке службу Агент сервера 1С:Предприятия (например, 1C:Enterprise 8.3 Server Agent) и остановим ее.
  3. Перейдем в каталог расположения реестра кластера. По умолчанию это путь: C:\Program Files\1cv8\srvinfo\
  4. Удалим все файлы и папки внутри этого каталога. Важное предупреждение: не удаляйте саму корневую папку srvinfo! Если вы удалите саму папку, операционная система при перезапуске службы создаст ее заново, но права доступа для сервисного пользователя USR1CV8 могут не унаследоваться. Очищайте именно содержимое папки.
  5. Запустим службу Агента сервера 1С заново. Платформа автоматически сгенерирует чистые файлы конфигурации кластера с правильными портами по умолчанию (1540, 1541, 1560-1591).

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

Способ 2. Точечная очистка кэша (сохраняем список баз)

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

Проанализируем этот деликатный процесс:

  1. Остановим службу Агента сервера 1С через консоль служб Windows или с помощью командной строки, запущенной от имени администратора: net stop "1C:Enterprise 8.3 Server Agent"
  2. Перейдем в рабочий каталог настроек конкретного кластера. Обычно он находится по адресу: C:\Program Files\1cv8\srvinfo\reg_1541\ Примечание: если ваш кластер работает на нестандартном порту, имя папки reg_*** будет соответствовать этому порту.
  3. Найдем все вложенные папки, имена которых начинаются с префикса snccntx (например, snccntx5f81ca9c-85d1...). В этих каталогах лежит проблемный кэш сеансов.
  4. Аккуратно удалим только эти папки snccntx. Главные файлы настроек 1CV8Clst.lst и 1cv8wsrv.lst, лежащие в корне каталога srvinfo, трогать не нужно — именно в них хранится вся информация о зарегистрированных базах и настройках кластера.
  5. Запустим службу Агента сервера обратно: net start "1C:Enterprise 8.3 Server Agent"

При запуске менеджер кластера заново создаст чистые папки сеансов. Ошибка исчезнет, а все ваши базы останутся на своих местах в консоли администрирования. Для автоматизации этой процедуры можно использовать скрипт для очистки серверных сеансовых данных 1С.

Разбираемся с природой конфликта IP-портов

Другая распространенная проблема — ошибка запуска, сообщающая о невозможности старта рабочего процесса из-за конфликта IP-портов. Это происходит в двух типичных сценариях, которые мы сейчас подробно рассмотрим.

Сценарий А. «Зависшие» или зомби-процессы в памяти сервера

Когда вы останавливаете службу 1С стандартными средствами Windows, процессы рабочих хостов rphost.exe или менеджера кластера rmngr.exe не всегда успевают завершить свои транзакции и остаются «висеть» в оперативной памяти в качестве зомби-процессов.

При последующем старте службы новые процессы пытаются захватить свои стандартные порты (например, 1541), но эти сетевые ресурсы все еще заняты старыми зависшими процессами. Возникает аппаратный конфликт.

Для решения этой проблемы выполним следующие действия:

  1. Остановим службу Агента сервера 1С.
  2. Откроем Диспетчер задач Windows на вкладке «Подробности» (Details) и отсортируем список процессов по имени.
  3. Принудительно завершим («убьем») все процессы с именами ragent.exe, rmngr.exe и rphost.exe.
  4. Если вы сомневаетесь, какой именно процесс держит порт, откроем командную строку от имени администратора и выполним проверку сетевой активности: netstat -ano | findstr 1541 Система выдаст строку с сетевым подключением, где в самом конце будет указан числовой идентификатор процесса (PID). Этот процесс можно принудительно завершить командой: taskkill /F /PID [ID_процесса]
  5. После полной очистки памяти запустим службу Агента сервера заново.

Сценарий Б. Параллельная работа нескольких версий платформ

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

Чтобы развести службы по разным портам, нам необходимо скорректировать параметры их запуска в системном реестре Windows:

  1. Откроем редактор реестра, выполнив команду regedit.
  2. Перейдем к ветке реестра, содержащей параметры служб Windows: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\
  3. Найдем ветку нужной службы 1С (например, 1C:Enterprise 8.3 Server Agent...).
  4. Откроем для редактирования строковый параметр ImagePath.
  5. Изменим параметры запуска службы, назначив ей свободные порты и обязательно указав выделенный рабочий каталог с помощью ключа -d, чтобы новая служба не мешала конфигурационным файлам основной платформы. Пример скорректированной строки запуска:
    
    "C:\Program Files\1cv8\8.3.25.1238\bin\ragent.exe" -srvc -agent -regport 1641 -port 1640 -range 1660:1691 -d "C:\Program Files\1cv8\srvinfo_second"
    
  6. Создадим физический каталог C:\Program Files\1cv8\srvinfo_second и предоставим учетной записи, под которой запускается служба, полные права на эту папку.

Обеспечиваем права доступа для пользователя USR1CV8

Частая ошибка начинающих администраторов — удаление папки srvinfo целиком без последующей проверки прав безопасности NTFS. По умолчанию служба Агента сервера запускается под специальной локальной учетной записью USR1CV8.

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

Чтобы вернуть права доступа на созданную папку, проанализируем и выполним следующую инструкцию:

  1. Перейдем в проводнике Windows к каталогу C:\Program Files\1cv8\.
  2. Нажмем правой кнопкой мыши по папке srvinfo (или вашей кастомной папке, заданной ключом -d) и выберем пункт «Свойства».
  3. Перейдем на вкладку «Безопасность» и нажмем кнопку «Изменить».
  4. Нажмем кнопку «Добавить», введем имя локального пользователя USR1CV8 (или доменного пользователя, под которым работает служба) и нажмем «ОК».
  5. В списке разрешений для пользователя USR1CV8 установим галочки напротив пунктов «Изменение» (Modify) и «Запись» (Write).
  6. Нажмем кнопку «Применить» и подтвердим наследование прав для всех вложенных папок и файлов.
  7. Запустим службу сервера 1С.

Соблюдение этого простого правила убережет вас от бесконечных циклов падения службы 1С при любых манипуляциях с кэшем сервера.

← На главную