Создание дополнительного кластера 1С предприятия для Windows Server 2012 на одном физическом сервере

Публикация № 377023

Администрирование - Системное

36
Чем отличается копирование сервиса 1С предприятие на Windows Server 2012? Как поднять дополнительный кластер 1С на сервере 2012?

Если у вас есть опыт создания дополнительного кластера 1С предприятие на сервере 2008 R2 и ниже. И если вы пытаетесь перенести свой опыт на Windows 2012 Server, вы столкнетесь с тем, что простое копирование веток реестра HKLM\System\CurrentControlSet\Services не создает новой копии службы 1С предприятие в списке служб.

Все дело в том, что Microsoft в целях безопасности поменяла способ хранения списка служб. Теперь основной список служб хранится в защищенной области реестра и требует повышения привилегий при создании службы. Место хранения настроек службы, для сохранения обратной совместимости, не изменилось.

Ничего не изменилось для программ и установщиков, которые прописывают службы через Windows API. А вот для системного администратора уже давно существует утилита SC.EXE. Просто ей мало кто пользовался.

Давайте же для примера создадим копию кластера 1С предприятие с точностью до минорной версии. Мы будем действовать из консоли с повышенными привилегиями. Запустим консоль от имени администратора.

Для начала мы сделаем полную копию каталогов BIN и SrvInfo. 1C не рекомендует разным копиям кластера использовать один и тот же каталог SrvInfo.

Для этого мы можем выполнить следующие консольные команды:

xcopy "%PROGRAMFILES%\1cv8\8.3.5.1383\bin" "%PROGRAMFILES%\1cv8\8.3.5.1383\bin2"
xcopy "%PROGRAMFILES%\1cv8\SrvInfo" "%PROGRAMFILES%\1cv8\SrvInfo2"

Командная строка xCopy

Программа XCOPY задаст вопрос, что мы имеем в виду под «назначением», каталог или файл. Мы должны указать, что это каталог. Как на рисунке.

Далее, мы создаем еще один сервис 1С предприятия, работающий во вновь созданных каталогах.

sc create "1C:Enterprise 8.3 Server Agent (x86-64) 2" binpath= """"%PROGRAMFILES%\1cv8\8.3.5.1383\bin2\ragent.exe""" -srvc -agent -regport 1641 -port 1640 -range 1660:1691 -d"""%PROGRAMFILES%\1cv8\srvinfo2""" -debug" DisplayName= "Агент сервера 1С:Предприятия 8.3 (x86-64) 2" start= auto

Для команды sc очень важно отсутствие пробела перед знаком равно ("=") в параметрах. Также важен пробел после знака равно ("=") в параметрах. Очень внимательно. Ну, а экранирование кавычек в командной строке, это просто "песня".

Командная строка Sc Create


Далее, необходимо донастроить службу. Укажите пользователя, под которым будет запускаться служба:

Настройка службы "Вход в систему"+

Настройте параметры восстановления службы.

Настройка службы "Восстановление"

Запустите службу. Иногда бывает, что при копировании командной строки с сайта, часть символов заменяются. Возможно, вам придется откорректировать параметр запуска в реестре по пути “HKLM\SYSTEM\CurrentControlSet\1C:Enterprise 8.3 Server Agent (x86-64) 2”. Параметр ImagePath.

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

 

Следующим этапом необходимо настроить кластер 1С предприятия.

Консоль кластера "Добавить"

Укажите порт “RegPort”, соответствующий тому, который вы настроили для запуска сервиса:

Консоль кластера "Новый кластер"

Все. Теперь настраиваейте кластер как обычно. 

 

Для тех, кто дочитал досюда, но ему любопытно, что это за параметры 1640, 1641 и так далее.

Сервер 1С предприятия работает на трех основных процессах:

Ragent (агент кластера серверов 1С предприятия), по умолчанию, висит на порту 1540. В примере мы задали для дополнительной сущности порт 1640.

Rmngr (менеджер кластера 1С предприятия), по умолчанию, висит на порту 1541, ожидает, когда к нему постучатся пользователи, назначет пользователю процесс RpHost, а в промежутке между этими действиями выполняет еще кучу нужной и полезной работы. В примере для новой сущности задан порт 1641.

RpHost (рабочий процесс сервера 1С предприятия), по умолчанию занимает диапазон портов 1560:1591. Собственно, эти процессы и обслуживают работу пользователей. В примере мы задали диапазон портов 1660:1691.

Перед тем, как занимать порты под сервис 1С предприятия, уточните, а может, уже кто-то висит на вашем диапазоне портов. Воспользуйтесь командой консоли "NetStat -a -n -o".

И еще одно уточнение. В своем примере я создаю "отладочный кластер" 1С предприятия. Это достигается опцией "-debug" в командной строке запуска сервиса. На самом деле, режим отладки на сервере замедляет работу предприятия. Если вы не собираетесь отлаживать на сервере, то лучше отказаться от данного ключа запуска.

36

См. также

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. karpik666 2359 09.07.15 13:39 Сейчас в теме
На самое главное не увидел ответа, зачем нужно использовать 2 кластера на одном сервере?
shmyglya; elian; +2 Ответить
15. elian 74 18.04.18 18:39 Сейчас в теме
(1) Господин Гилёв для настройки своих сервисов рекомендует устанавливать их в отдельный кластер. Лично мне понадобилось именно для этого.
2. igel9780 155 09.07.15 14:41 Сейчас в теме
В моем примере, один из двух кластеров используется для отладки. А чаще всего, необходимость возникает когда нужно держать несколько версий платформы одновременно.
Andrefan; +1 Ответить
3. webester 29 09.07.15 16:37 Сейчас в теме
Совсем недавно добавлял еще одну версию платформы на сервер2012, просто скопировал ветку и все заработало без каких то либо утилит.
4. efin 10.07.15 13:57 Сейчас в теме
У меня похожая задача, для 8.1 я решал ее так http://kb.mista.ru/article.php?id=639

Однако, сейчас в цепочке появился веб-сервер Apache2.2 (стоит на отдельном linux-сервере), который публикует базы и веб-сервисы в вебе.

Как бы Вы решили вопрос с одновременной установкой двух разных версий 1С на одном физическом сервере и запустили 2 apacha на разных портах?
5. igel9780 155 10.07.15 14:25 Сейчас в теме
Я как-то не запускал два апача на линкусе. Но, насколько мне известно, люди вполне себе поднимают и два и больше апача. Только вот зачем?
6. efin 10.07.15 14:46 Сейчас в теме
(5) Затем, что на сервере 1С у меня 2 сервера приложений - 8.3.5 и 8.3.6
7. Danila-Master 97 14.07.15 08:51 Сейчас в теме
Для начала мы сделаем полную копию каталогов BIN и SrvInfo. 1C не рекомендует разным копиям кластера использовать один и тот же каталог SrvInfo.

С каталогом SrvInfo, допустим, согласен. Но считаю, что ошибки не будет, если использовать один каталог SrvInfo.
А зачем копировать коталог BIN?
8. igel9780 155 14.07.15 13:38 Сейчас в теме
Если не копировать SrvInfo, ошибка будет. Если настраивать второй кластер в каталоге SrvInfo, то он начинает пересекаться по основной рабочей машине. Более того, стандартная утилита администрирования умеет работать только с одним каталогом SrvInfo. Я лично запускал утилиту администрирования с разных машин к разным менеджерам кластера.

А вот по каталогу BIN, думаю, вы правы. Хотя я не проверял.
9. osipov_dv 15.07.15 15:28 Сейчас в теме
Не понял, зачем такой головняк автору...
Ставим первый нужный релиз, при установке выбираем ставить как сервис и т.п.
Запускаем первый релиз, работаем.
Ставим второй релиз, при установке не выбираем ставить как сервис.
Делаем экспорт ветки реестра “HKLM\SYSTEM\CurrentControlSet\1C:Enterprise 8.3 Server Agent (x86-64)” в reg файл.
Правим reg-файл (имя сервиса, путь до exe, порты)
вливаем изменения в реестр
запускаем второй сервис

PS: ну да, если платформа одинаковая в рамках 8.x, то надо путь еще создать\прописать другой для папки сервера.
10. Chai 07.01.18 21:53 Сейчас в теме
Мне понадобилась копия базы на сервере, поскольку имя базы содержится в метаданных, пришлось создать другой кластер (указал ему порт 1600) и в нем создал базу, восстановил ее конфигуратором из dt за определенную дату.
Но как теперь подключиться к этой вновь созданной базе? Подключение с указанием порта (сервер:порт) не помогает, все равно подключается к первой базе из локального кластера.
Подскажите?
11. Fox-trot 99 07.01.18 22:29 Сейчас в теме
(10) придется обождать... у чела день рождения :)
12. Chai 08.01.18 13:09 Сейчас в теме
Поздравляю именинника, пусть и с опозданием! )
Тема создания нового кластера мне так и непонятна. Сервер 1С кластер создаст и создаст в нем базу (с таким же именем, в данном случае), но для СУБД известия о новом кластере так и не дойдут. При обращении клиента к базе с указанием порта кластера приведет к обращению все к той же базе.

Если автор создавал кластер для тестовых целей, не указано, с каким именем создана в нем новая база.
13. Fox-trot 99 08.01.18 13:57 Сейчас в теме
база создана со старым именем ессесно
после всех манипуляций имеем две службы 1це и все таже одна база
14. igel9780 155 09.01.18 19:45 Сейчас в теме
Кластер 1С обслуживает базы-1С. Хранение баз данных обслуживает SQL-сервер. Соответственно, SQL-База данных должна либо иначе называться, либо работать в другом Instance SQL-сервера. В противном случае, при работе из двух несвязанных кластеров мы получим кашу в БД-SQL.
Оставьте свое сообщение