Установка и запуск нескольких экземпляров сервера 1С:Предприятие на одном компьютере. Платформа Windows

  • Автор:

multiple-1C-servers-windows-000.pngЛицензия на сервер 1С:Предприятие позволяет запускать на одном компьютере неограниченное количество экземпляров сервера что может быть полезным, если вам нужно одновременно иметь несколько различных версий платформы или просто разделить сервера, например, на разработку и рабочий. Процесс это не сложный, описан в официальной документации, но имеет некоторые свои тонкости, которые мы рассмотрим в данной статье. Также добавим некоторую дополнительную информацию, которая может вам пригодиться.

Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Принцип работы нескольких экземпляров сервера 1С:Предприятие на одном компьютере прост - нам нужно разнести рабочие порты каждого экземпляра. Таким образом мы можем запустить неограниченное количество серверов 1С:Предприятие, ограничением станут только вычислительные ресурсы.

В своей работе сервер 1С:Предприятие использует следующие порты:

  • TCP 1540 - агент сервера
  • TCP 1541 - менеджеру кластера
  • TCP 1560-1591 - рабочие процессы

Когда мы указываем подключение к кластеру серверов 1С:Предприятие, то программа обращается к менеджеру кластера и это единственный порт, который нужно будет явно указать при изменении рабочих портов. В мире 1С укоренилась практика для каждого нового экземпляра менять первую цифру для набора портов, т.е. для второго экземпляра используем 2540, 2541, 2560-2591 и т.д., хотя никто не мешает указать вам произвольные значения.

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

Создание нового пользователя для экземпляра сервера 1С:Предприятие (опционально)

Итак, если вам понадобился новый пользователь для вашего экземпляра сервера 1С:Предприятие, то просто создаем нового локального пользователя через стандартную оснастку, правилом хорошего тона будет задать ему имя основанное на USR1CV8, например, USR1CV8-2х, где 2x указывает на используемый диапазон портов. Запрещаем пользователю менять пароль и делаем срок его действия неограниченным.

multiple-1C-servers-windows-001.pngДелаем нового пользователя членом групп Пользователи и Пользователи журналов производительности:

multiple-1C-servers-windows-002.pngЗатем откроем оснастку Локальные политики безопасности (secpol.msc) и перейдем в ветку Параметры безопасности - Локальные политики - Назначение прав пользователя, здесь нам следует добавить нового пользователя во все политики, где есть оригинальный USR1CV8.

multiple-1C-servers-windows-003.pngНа момент написания статьи таких политик было четыре:

  • Вход в качестве пакетного задания
  • Вход в качестве службы
  • Запретить локальный вход
  • Отказать в доступе к этому компьютеру из сети

На этом создание пользователя закончено

Установка дополнительного экземпляра сервера 1С:Предприятие

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

multiple-1C-servers-windows-004.pngСледующий шаг очень важен, обязательно снимаем флаг Установить север 1С:Предприятие как сервис Windows, в противном случае программа установки обновит текущий экземпляр сервиса.

multiple-1C-servers-windows-005.pngДалее продолжаем установку обычным способом, в данном случае мы установили новый сервер как приложение и теперь нам надо зарегистрировать его как службу. Для этого воспользуемся скриптом, опубликованным в официальной документации, только немного изменим его:

@echo off
rem %1 - полный номер версии 1С:Предприятия
rem %2 - первые две цифры номеров портов. Для портов 1540,1541,1560:1591 - это цифра 15
rem %3 - каталог с данными реестра кластера
chcp 1251
set SrvUserName="SRV-1C\USR1CV8-2x"
set SrvUserPwd="Pa$$word_1"
set RangePort=%260:%291
set BasePort=%241
set CtrlPort=%240
set SrvcName="1C:Enterprise 8.3 Server Agent %CtrlPort% %1"
set BinPath="\"C:\Program Files\1cv8\%1\bin\ragent.exe\" /srvc /agent /regport %BasePort% /port %CtrlPort% /range %RangePort% /d \"%~3\" /debug"
set Desctiption="Агент сервера 1С:Предприятия 8.3. Параметры: %1, %CtrlPort%, %BasePort%, %RangePort%"
if not exist "%~3" mkdir "%~3"
sc stop %SrvcName%
sc delete %SrvcName%
sc create %SrvcName% binPath= %BinPath% start= auto obj= %SrvUserName% password= %SrvUserPwd% displayname= %Desctiption% depend= Dnscache/Tcpip/lanmanworkstation/lanmanserver

Теперь об отличиях от оригинального скрипта. Прежде всего нужно правильно установить кодовую страницу 1251, чего нет в исходном скрипте, если этого не сделать, то описание вашего экземпляра сервера будет выглядеть очень "креативно", хотя на работоспособность это не влияет.

multiple-1C-servers-windows-006.pngВо-вторых, убрали из зависимостей протокол TCP/IP v6, не знаем, чем руководствовались составители документации на ИТС, но в установленных по умолчанию экземплярах Windows Server 2016 - 2022 добавление этой зависимости приводило к ошибке и невозможности запуска экземпляра сервера,

И еще одна тонкость, имя пользователя надо указывать в формате SRV-1C\USR1CV8-2x, где SRV-1C - имя текущего узла. В противном случае вы столкнетесь с ошибкой, что указанный пользователь не существует или использует неверный пароль. Запуск скрипта следует осуществлять с правами администратора, мы сохранили его с рекомендованным 1С именем register-service.bat.

В качестве параметров передаем скрипту полный номер используемой версии платформы, первые две цифры для нового набора портов, например, 25 для 2540, 2541 и 2560-2591 и путь к рабочему каталогу кластера, если каталог не существует, то он будет создан. По умолчанию рабочим каталогом является C:\Program Files\1cv8\srvinfo.

Поэтому в нашем случае команда регистрации службы нового экземпляра будет выглядеть так:

register-service.bat 8.3.22.2239 25 "C:\Program Files\1cv8\srvinfo2x"

Обратите внимание, что если путь к рабочему каталогу содержит пробелы, как в нашем случае, то его нужно обернуть в кавычки. В результате вы получите примерно следующий вывод:

multiple-1C-servers-windows-007.pngНа ошибки 1060 можете не обращать внимание, скрипт пытается остановить и удалить уже существующий экземпляр с таким же именем, не проверяя существование службы и при ее отсутствии мы получаем такую ошибку. Главное, что последней строкой должно идти CreateService: успех.

Но не будем спешить идти запускать службу, перед этим нам необходимо выдать указанному при регистрации пользователю полные права на указанную рабочую директорию, в нашем случае это C:\Program Files\1cv8\srvinfo2x. После чего переходим в оснастку Службы, находим созданный экземпляр и запускаем его.

multiple-1C-servers-windows-008.pngДля обращения к конкретному экземпляру сервера 1С:Предприятие используем его имя с явным указанием порта менеджера кластера, т.е. 2541.

multiple-1C-servers-windows-009.pngНа этом установка отдельного экземпляра сервера 1С:Предприятие закончена.

Удаление дополнительного экземпляра сервера 1С:Предприятие

Перед удалением дополнительного экземпляра сервера 1С:Предприятие нужно сначала остановить и удалить службу, для этого используйте скрипт unregister-service.bat, это тоже официальный скрипт из документации, но в этом случае его можно использовать без изменений.

@echo off
rem %1 - полный номер версии 1С:Предприятия
rem %2 - первые две цифры номеров портов. Для портов 1540,1541,1560:1591 - это цифра 15
set SrvcName="1C:Enterprise 8.3 Server Agent %240 %1"
sc stop %SrvcName%
sc delete %SrvcName%

Его также следует запустить от имени администратора и передать ему номер платформы и первые две цифры набора портов:

 unregister-service.bat 8.3.22.2239 25

После чего следует обязательно перезагрузить компьютер, затем указанную платформу можно удалить.

Обновление дополнительного экземпляра сервера 1С:Предприятие

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

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

Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Помогла статья? Поддержи автора и новые статьи будут выходить чаще:

Поддержи проект!

Или подпишись на наш Телеграм-канал: Подпишись на наш Telegram-канал



Loading Comments