Ситуация, когда на одном физическом сервере или рабочей станции требуется запустить одновременно два и более экземпляра сервера 1С:Предприятие, встречается довольно часто. Это может быть вызвано необходимостью тестирования новых релизов платформы, разделения ресурсов между критичными базами (например, ЗУП и самописные конфигурации) или требованиями специфического ПО, которое работает только на конкретной версии платформы. Однако при такой настройке системные администраторы часто сталкиваются с проблемой: стандартная консоль администрирования (MMC-снапшот) отказывается подключаться ко второму серверу, выдавая ошибку "Различаются версии клиента и сервера" или пытаясь соединиться по стандартному порту 1540, даже если в настройках указан другой.
В рамках данной статьи мы подробно разберем, как правильно организовать работу с несколькими серверами приложений 1С и настроить инструменты управления ими так, чтобы избежать конфликтов версий.
Разберем природу проблемы. Консоль администрирования 1С представляет собой оснастку для Microsoft Management Console (MMC). Для взаимодействия с сервером приложений она использует программный интерфейс, реализованный в библиотеке radmin.dll. Главная сложность заключается в том, что эта библиотека регистрируется в реестре Windows как COM-компонент с определенным уникальным идентификатором (GUID). Когда вы устанавливаете новую версию платформы, установщик перерегистрирует этот GUID на свою библиотеку.
Если вы запускаете консоль, она обращается к реестру, находит путь к последней зарегистрированной radmin.dll и загружает ее. Если эта библиотека принадлежит версии 8.3.20, а вы пытаетесь подключиться к серверу версии 8.3.14, возникает ошибка несоответствия версий. Консоль "думает", что она должна работать по протоколам новой платформы, в то время как сервер ожидает старые команды.
Прежде чем приступать к сложным манипуляциям с реестром, рассмотрим штатный способ настройки подключений. Проанализируем ситуацию, когда службы обоих серверов уже запущены на разных портах (например, первый на 1540, второй на 2140).
Выполним следующие шаги в консоли управления:
Central 1C:Enterprise 8.3 Servers и выберем "Создать" -> "Центральный сервер".localhost.2140).Если после этого возникает ошибка несоответствия версий, значит, загруженная консолью библиотека radmin.dll не совпадает с версией исполняемого файла ragent.exe того сервера, к которому мы подключаемся. Перейдем к следующему методу.
Этот метод является наиболее надежным, если вам нужно управлять серверами разных версий попеременно. Суть заключается в том, что перед запуском консоли мы будем принудительно указывать операционной системе, какую именно версию библиотеки нужно использовать.
Рассмотрим пример создания скрипта для запуска консоли под конкретную версию платформы. Предположим, у нас есть версии 8.3.14.1600 и 8.3.20.1674. Создадим два текстовых файла с расширением .bat.
Содержимое файла для версии 8.3.14:
regsvr32 "C:\Program Files\1cv8\8.3.14.1600\bin\radmin.dll" /s
start mmc "C:\Program Files\1cv8\common\1CV8 Servers (x86-64).msc"
Содержимое файла для версии 8.3.20:
regsvr32 "C:\Program Files\1cv8\8.3.20.1674\bin\radmin.dll" /s
start mmc "C:\Program Files\1cv8\common\1CV8 Servers (x86-64).msc"
Разберем, что делают эти команды. Команда regsvr32 с ключом /s (тихий режим) регистрирует нужную нам библиотеку в реестре. После этого команда start mmc запускает стандартный файл оснастки. Теперь консоль гарантированно загрузит те компоненты, которые соответствуют выбранному серверу. Для автоматизации этого процесса подойдёт утилита для быстрой регистрации нужной версии консоли кластера и её запуска.
Часто проблемы с консолью начинаются еще на этапе создания второй службы сервера 1С. Если служба настроена некорректно, консоль просто не сможет найти рабочие процессы. Проанализируем правильные параметры создания службы через утилиту sc create.
Для второго экземпляра сервера необходимо выделить не только отдельный порт агента (порт, по которому "стучится" консоль), но и порты для менеджера кластера и диапазон портов рабочих процессов. Посмотрим на пример команды:
sc create "1C:Enterprise 8.3 Server Second" binPath= "\"C:\Program Files\1cv8\8.3.20.1674\bin\ragent.exe\" -srvc -agent -regport 2141 -port 2140 -range 2160:2191 -d \"C:\ProgramData\1C\1cv8_second\""
Обратим внимание на важные параметры:
-port 2140 — основной порт агента. Именно его мы указываем в консоли MMC.-regport 2141 — порт главного менеджера кластера.-range 2160:2191 — диапазон портов для rphost. Он не должен пересекаться со стандартным диапазоном (1560:1591).-d — путь к каталогу данных кластера. Критически важно указать новую пустую папку, чтобы настройки двух разных серверов не перемешались в одном файле 1cv8wsrv.lst.Если работа с MMC-консолью кажется слишком громоздкой или нестабильной из-за постоянных перерегистраций DLL, мы можем воспользоваться современным инструментом — Remote Administration Server (RAS) и Remote Administration Client (RAC). Это кроссплатформенные утилиты администрирования, которые не зависят от COM-регистрации.
Для каждого сервера 1С можно запустить свою службу ras.exe:
ras для первого сервера на порту 1545.ras для второго сервера на порту 2145.После этого мы можем управлять серверами через командную строку утилитой rac или использовать сторонние графические интерфейсы, написанные на различных языках программирования, которые подключаются напрямую к RAS. Этот способ полностью исключает ошибку "Различаются версии клиента и сервера", так как взаимодействие происходит по сетевому протоколу, адаптированному под конкретную версию службы. В качестве такого решения можно выбрать кроссплатформенную мультиверсионную консоль администрирования кластера серверов 1С.
Проанализируем ситуацию: стоит ли вообще держать два сервера? Как отмечают опытные специалисты, часто страх перед обновлением платформы преувеличен. В системе 1С:Предприятие реализован мощный механизм режима совместимости.
Если ваша старая конфигурация стабильно работает на версии 8.3.14, а новая ЗКГУ требует 8.3.20, вы можете установить одну версию платформы (самую свежую) и запустить на ней обе базы. Для старой базы в свойствах конфигурации в поле "Режим совместимости" следует оставить значение "Версия 8.3.14". Это позволит коду выполняться по старым правилам, при этом серверная часть будет использовать все преимущества новой платформы в плане производительности и безопасности. Такой подход значительно упрощает администрирование и снижает нагрузку на оперативную память сервера.
Для тех, кто предпочитает автоматизированные решения, существуют инструменты, такие как "Инструменты разработчика" (ИР). В этом наборе утилит есть специальная кнопка для запуска консоли конкретной службы. Программа самостоятельно анализирует пути к исполняемым файлам запущенных служб 1С, находит соответствующую библиотеку radmin.dll, регистрирует её в фоновом режиме и открывает окно MMC. Это избавляет системного администратора от необходимости писать бат-файлы вручную.
Подведем итог. Чтобы консоль "видела" второй сервер, мы должны:
localhost:2140).regsvr32 ту версию radmin.dll, которая соответствует версии управляемого сервера.Соблюдение этих простых правил позволит вам эффективно управлять любой комбинацией версий 1С на одном оборудовании.