Запуск нескольких экземпляров сервера 1С:Предприятие на одном сервере
В прошлой статье мной была описана процедура запуска на одном сервере двух экземпляров 1С:Предприятие разных версий: 8.2 и 8.3. Но для случая, когда возникает необходимость запустить на одном «железе» два экземпляра одной версии, тот алгоритм не подходит. В этой статье я поделюсь своим опытом установки, запуска и эксплуатации на одном сервере одновременно нескольких версий 1С:Предприятия. |
В примере ниже были использованы версии 1С:Предприятие: 8.2.19.130, 8.3.7.1860 и 8.3.9.1850 (все они имеют х64 разрядность). Весь процесс мной проделан на сервере под управлением Windows Server 2008 R2 Enterprise х64. Делаем небольшое допущение, что у вас в системе ещё не было установлено серверов 1С:Предприятие. Если же у вас присутствуют работающие экземпляры данного программного обеспечения, необходимо деинсталлировать их, предварительно обратив внимание на размещение файлов, относящихся к существующим кластерам 1С и диапазон портов, на которых они работают. Для этого выполните Win+R -> services.msc
. Вызовите правой кнопкой мыши свойства существующей службы Агента 1С:Предприятия и внимательно посмотрите на строку Исполняемый файл
:
В данной строке вы обнаружите всю необходимую вам в дальнейшем информацию:
"C:\Program Files\1cv82\8.2.19.130\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files (x86)\1cv82\srvinfo"
Для успешной реализации поставленной задачи в процессе установки сервера 1С:Предприятия каждой из требуемых версий необходимо обязательно снять галочку напротив Установить сервер 1С:Предприятия как сервис Windows (рекомендуется)
:
После успешного завершения установки сервера 1С:Предприятия запускаем cmd.exe
(Win+R -> cmd.exe) и выполняем следующие команды.
Для сервера 1С:Предприятия 8.2 (его версия, как условились – 8.2.19.130):
c:\>sc create "1C:Предприятие 8.2 Server Agent" binPath= "\"C:\Program Files\1cv82\8.2.19.130\bin\ragent.exe\" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d \"C:\Program Files (x86)\1cv82\srvinfo"" start= auto displayname= "1C:Предприятие 8.2 Server Agent" obj= ".\Администратор" password= "passwd"
где:
- “1C:Предприятие 8.2 Server Agent” – имя создаваемой службы;
- binPath= “\“C:\Program Files\1cv82\8.2.19.130\bin\ragent.exe\” – путь до файла требуемой версии
ragent.exe
; - -regport 1541 – порт, на котором будет работать создаваемый кластер;
- -range 1560:1591 – порты, но которых кластер будет принимать соединения;
- -d \“C:\Program Files (x86)\1cv82\srvinfo” – путь до папки для хранения файлов создаваемого кластера;
- start= auto – тип запуска службы агента 1С:Предприятие (автоматический);
- displayname= “1C:Предприятие 8.2 Server Agent” – отображаемое имя создаваемой службы;
- obj= “.\Администратор” – имя пользователя, уполномоченного для запуска данной службы (локальный администратор);
- password= “passwd” – пароль пользователя, от имени которого запускается служба.
В случае успешного создания службы агента 1C:Предприятие в окне cmd.exe
вы увидите:
[SC] CreateService: успех
Необязательный шаг – вы можете задать описание созданной службы командой:
c:\>sc description "1C:Предприятие 8.2 Server Agent" "Кластер 1С версии 8.2"
Нам осталось запустить эту службу:
c:\>sc start "1C:Предприятие 8.2 Server Agent" Имя_службы: 1C:Enterprise 8.3 Server Agent TEST Тип : 10 WIN32_OWN_PROCESS Состояние : 2 START_PENDING (STOPPABLE, NOT_PAUSABLE, ACCEPTS_SHUTDOWN) Код_выхода_Win32 : 0 (0x0) Код_выхода_службы : 0 (0x0) Контрольная_точка : 0x2 Ожидание : 0x1388 ID_процесса : 25492 Флаги :
В оснастке Службы сервера Windows вы обнаружите работающую новую, только что созданную вами службу:
Аналогичным образом создаём службу для сервера 1С:Предприятия 8.3 (к примеру – версии 8.3.9.1850). Для этого необходимо ввести следующую последовательность команд:
c:\>sc create "1С:Предприятие 8.3 Server Agent" binPath= "\"C:\Program Files\1cv8\8.3.9.1850\bin\ragent.exe\" -srvc -agent -regport 2541 -port 2540 -range 2560:2591 -d \"C:\Program Files\1cv8\srvinfo"" start= auto displayname= "1С:Предприятие 8.3 Server Agent" obj= ".\Администратор" password= "passwd" [SC] CreateService: успех c:\>sc description "1С:Предприятие 8.3 Server Agent" "Кластер 1С версии 8.3" [SC] ChangeServiceConfig2: успех c:\>sc start "1C:Предприятие 8.3 Server Agent" Имя_службы: 1С:Предприятие 8.3 Server Agent Тип : 10 WIN32_OWN_PROCESS Состояние : 2 START_PENDING (STOPPABLE, NOT_PAUSABLE, ACCEPTS_SHUTDOWN) Код_выхода_Win32 : 0 (0x0) Код_выхода_службы : 0 (0x0) Контрольная_точка : 0x2 Ожидание : 0x1388 ID_процесса : 20632 Флаги :
Обратите внимание, что в команде на создание службы для агента этой версии 1С:Предприятие используются уже другие порты и папка для хранения файлов, относящиеся к кластеру версии 8.3.9.1850!
Теперь необходимо создать командные файлы запуска оснасток управления этими кластерами. На рабочем столе создаём файл с именем 1C 8.2 (x64).cmd
и вносим в него следующие строки:
@echo off regsvr32 /s /n /i:user "%programfiles%\1cv82\8.2.19.130\bin\radmin.dll" mmc "%programfiles%\1cv82\common\1CV8 Servers (x86-64).msc"
С помощью которого вы осуществите регистрацию библиотеки консоли администрирования серверов 1С Предприятия необходимой вам версии 8.2 и непосредственно сам запуск консоли.
Для запуска консоли администрирования 1С:Предприятия версии 8.3 на рабочем столе создаём файл с именем 1C 8.3 (x64).cmd
и вносим в него следующие строки:
@echo off regsvr32 /s /n /i:user "%programfiles%\1cv8\8.3.9.1850\bin\radmin.dll" mmc "%programfiles%\1cv8\common\1CV8 Servers (x86-64).msc"
Вообще, при создании как служб агентов, так и этих запускающих файлов, необходимо быть очень внимательным к путям до файлов кластеров и самих исполняющихся файлов и консолей администрирования, которые могут варьироваться как от используемой вами версии 1С:Предприятия, так и от её разрядности!
Администрировать кластер 8.3 из оснастки, предназначенной для 8.2 нельзя, и наоборот. Вы увидите предупреждение о несоответствии версий.
Теперь, в зависимости от ваших задач, вы можете установить другую, отличную от 8.3.9.1850 версию 1С:Предприятие. Наша компания использует Битфинанс, для работы которого необходима версия 1С 8.3.7.1860 (требование разработчиков). Для этих нужд было принято решение поднять ещё один кластер уже данной версии и в придачу ещё один – тестовый. По накатанной делаем:
Для рабочего кластера Битфинанса (со своими рабочими портами и папкой размещения файлов кластера):
c:\>sc create "1С:Предприятие 8.3 Server Agent BitFinans" binPath= "\"C:\Program Files\1cv8\8.3.7.1860\bin\ragent.exe\" -srvc -agent -regport 3541 -port 3540 -range 3560:3591 -d \"C:\Program Files (x86)\1cv8\srvinfobit"" start= auto displayname= "1С:Предприятие 8.3 Server Agent BitFinans" obj= ".\Администратор" password= "passwd" c:\>sc description "1С:Предприятие 8.3 Server Agent BitFinans" "Рабочий кластер 1С BitFinans" c:\>sc start "1С:Предприятие 8.3 Server Agent BitFinans"
И для тестового кластера Битфинанса (со своими рабочими портами и папкой размещения файлов тестового кластера):
c:\>sc create "1С:Предприятие 8.3 Server Agent BitFinans test" binPath= "\"C:\Program Files\1cv8\8.3.7.1860\bin\ragent.exe\" -srvc -agent -regport 4541 -port 4540 -range 4560:4591 -d \"C:\Program Files (x86)\1cv8\srvinfobittest"" start= auto displayname= "1С:Предприятие 8.3 Server Agent BitFinans test" obj= ".\Администратор" password= "passwd" c:\>sc description "1С:Предприятие 8.3 Server AgentBitFinans test" "Тестовый кластер 1С BitFinans" c:\>sc start "1С:Предприятие 8.3 Server Agent BitFinans test"
Так как эти два кластера одной версии, для их администрирования на рабочем столе создадим один файл 1C BitFinans (x64).cmd
и внесём в него следующие строки:
@echo off regsvr32 /s /n /i:user "%programfiles%\1cv8\8.3.7.1860\bin\radmin.dll" mmc "%programfiles%\1cv8\common\1CV8 Servers (x86-64).msc"
На первом снимке в данной заметке вы видите отображение всех данных служб агентов в консоли администрирования services.msc
Вот таким образом мы можем наблюдать запущенные нами кластеры из Диспетчера задач при добавлении в меню Вид Командной строки:
При обновлении версии 1С:Предприятия 8.3, сперва необходимо будет установить эту новую версию (опять же без галочки напротив Установить сервер 1С:Предприятия как сервис Windows (рекомендуется)
). Потом остановить и удалить службу агента обновляемой версии:
c:\>sc stop "1С:Предприятие 8.3 Server Agent" c:\>sc delete "1С:Предприятие 8.3 Server Agent"
И заново зарегистрировать, настроить и запустить службу агента обновлённой версии по этому же алгоритму, не забыв поменять номера версии во всех приведённых выше командах.
Вот, в принципе, и всё!
При обновлении версии 1С:Предприятия 8.3 не обязательно удалять старую службу и создавать новую. Можно, остановив службу, с помощью Regedit в разделе HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\1C:Enterprise 8.3 Server Agent в параметре ImagePath изменить путь к запускаемому файлу. потом запустить службу.
В статье вы никак не коснулись вопроса лицензирования.
Какой тип серверной лицензии 1С у вас используется? Она одна или на каждый экземпляр сервера своя?
Спасибо за статью!!! Всё получилось, не сработал до конца только последний пункт – создание cmd.
Точнее, что получилось – в cmd нигде не прописано с каким портом должна стартовать оснастка mmc.
Из-за этого при выполнении командлента ругается что не соответствует версия сервера и клиента, и уже потом вручную приходится в свойствах кластера указывать нужный порт для нужной версии платформы.
Это никак не побороть?