В практике системного администрирования 1С часто возникает ситуация, когда необходимо использовать разные версии платформы одновременно. Например, одна информационная база требует обновления до актуального релиза для корректной работы нового функционала, в то время как другие базы жестко привязаны к старой версии из-за особенностей доработок или стабильности. По умолчанию стандартный установщик 1С предлагает заменить текущую версию сервера или установить новую, но не настраивает их автоматическую параллельную работу. В этой статье мы подробно разберем, как реализовать одновременную работу двух и более версий сервера 1С на одной операционной системе Windows.
Разберем ситуацию, с которой столкнулся автор темы. На сервере установлена платформа версии 8.3.14.1779. При установке новой версии 8.3.15.1489 клиентское приложение обновляется, но служба сервера 1С (агент сервера) остается привязанной к старому исполняемому файлу. Если в настройках информационной базы в стартере 1С указать конкретную версию платформы, отличную от версии сервера, возникнет конфликт. Клиент попытается подключиться к серверу, версии не совпадут, и работа станет невозможной. Для полноценной работы необходимо, чтобы на сервере функционировали два независимых экземпляра службы ragent.exe.
Проанализируем процесс установки. При запуске инсталлятора новой версии платформы важно выполнить следующие действия:
Теперь рассмотрим, как зарегистрировать вторую службу в системе. Стандартная служба 1С обычно называется 1C:Enterprise 8.3 Server Agent. Нам нужно создать службу с уникальным именем, которая будет ссылаться на исполняемый файл новой версии. Для этого воспользуемся утилитой sc create.
Выясним, какие параметры нам потребуются. Для изоляции второй версии сервера мы должны изменить стандартные порты и указать новый каталог данных кластера (srvinfo). Проанализируем пример команды для создания службы:
sc create "1C:Enterprise 8.3.15.1489" binPath= "\"C:\Program Files\1cv8\8.3.15.1489\bin\ragent.exe\" -srvc -agent -regport 1640 -port 1641 -range 1660:1691 -d \"C:\1C_Data\srvinfo_8_3_15\"" start= auto obj= "NT AUTHORITY\LocalService"
Разберем подробнее каждый флаг в этой команде:
binPath= — полный путь к исполняемому файлу ragent.exe конкретной версии. Обратите внимание на использование кавычек и экранирование.-srvc — параметр, указывающий на запуск в режиме службы Windows.-agent — запуск агента сервера.-regport 1640 — порт агента сервера (по умолчанию 1540). Для второй службы мы меняем его на 1640.-port 1641 — порт главного менеджера кластера (по умолчанию 1541). Мы устанавливаем 1641.-range 1660:1691 — диапазон портов для рабочих процессов rphost. Чтобы избежать конфликтов со старой службой (у которой диапазон 1560:1591), выделяем новый диапазон.-d — путь к каталогу данных кластера. Это самый важный параметр. Если две разные версии сервера будут обращаться к одной папке srvinfo, произойдет повреждение файлов конфигурации кластера.После создания службы необходимо убедиться, что у пользователя, от имени которого она запускается (в нашем примере LocalService или специально созданная учетная запись USR1CV8), есть полные права доступа на созданную папку данных C:\1C_Data\srvinfo_8_3_15. Проверим это через свойства папки на вкладке "Безопасность".
Запустим службу через оснастку "Службы" или командой:
net start "1C:Enterprise 8.3.15.1489"
Рассмотрим ситуацию, описанную в сообщениях форума: "консоль кластера не хочет подниматься". Причина кроется в механизме регистрации COM-компонентов Windows. Оснастка MMC (файл 1cv8.msc) использует библиотеку radm.dll. В операционной системе может быть зарегистрирована только одна версия этой библиотеки одновременно.
Если вам нужно управлять новым кластером через стандартную консоль, попробуйте зарегистрировать нужную библиотеку вручную:
regsvr32 "C:\Program Files\1cv8\8.3.15.1489\bin\radm.dll"
Однако этот метод неудобен, если нужно постоянно переключаться между версиями. Рассмотрим альтернативный и более современный подход — использование сервера администрирования ras.exe.
Вместо использования капризной MMC-консоли, мы можем запустить для каждой версии платформы свой сервер администрирования (RAS). Это позволит управлять серверами через кроссплатформенную утилиту или командную строку (RAC). Разберем, как запустить RAS для новой версии на отдельном порту:
"C:\Program Files\1cv8\8.3.15.1489\bin\ras.exe" cluster --port=1645 localhost:1640
Теперь, используя современную "1С:Администрирование серверов" (написанную на Java), мы можем одновременно подключиться к порту 1545 (для версии 8.3.14) и к порту 1645 (для версии 8.3.15) без каких-либо конфликтов регистраций в системе.
Выясним, как пользователю подключиться к базе, работающей на "нестандартной" службе. В списке информационных баз при добавлении или редактировании адреса сервера необходимо явно указывать порт главного менеджера кластера. Формат строки подключения будет следующим:
ИмяСервера:1641
Где 1641 — это порт, который мы указали в параметре -port при создании службы. Если порт не указать, клиент по умолчанию попытается подключиться к 1541 и попадет на старую версию сервера 1С.
Проанализируем влияние такой настройки на сервер. Важно помнить следующее:
rmngr.exe и несколько rphost.exe. Это увеличивает потребление RAM. Рекомендуется ограничить объем памяти на один рабочий процесс в настройках каждого кластера.conf).Таким образом, мы разобрали полный цикл настройки параллельной работы серверов 1С. Этот метод является надежным и широко применяется в крупных компаниях для обеспечения плавного перехода между версиями платформы.