gifts2017

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

Опубликовал Павел Кручинин (igel9780) в раздел Администрирование - Системное

Чем отличается копирование сервиса 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" в командной строке запуска сервиса. На самом деле, режим отладки на сервере замедляет работу предприятия. Если вы не собираетесь отлаживать на сервере, то лучше отказаться от данного ключа запуска.

См. также

PowerTools от 1 000
Подписаться Добавить вознаграждение

Комментарии

1. Андрей Карпов (karpik666) 09.07.15 13:39
На самое главное не увидел ответа, зачем нужно использовать 2 кластера на одном сервере?
2. Павел Кручинин (igel9780) 09.07.15 14:41
В моем примере, один из двух кластеров используется для отладки. А чаще всего, необходимость возникает когда нужно держать несколько версий платформы одновременно.
Andrefan; +1 Ответить
3. Роман Ложкин (webester) 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) 10.07.15 14:25
Я как-то не запускал два апача на линкусе. Но, насколько мне известно, люди вполне себе поднимают и два и больше апача. Только вот зачем?
6. Алексей Шачнев (efin) 10.07.15 14:46
(5) igel9780, Затем, что на сервере 1С у меня 2 сервера приложений - 8.3.5 и 8.3.6
7. Danil (Danila-Master) 14.07.15 08:51
Для начала мы сделаем полную копию каталогов BIN и SrvInfo. 1C не рекомендует разным копиям кластера использовать один и тот же каталог SrvInfo.

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

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

PS: ну да, если платформа одинаковая в рамках 8.x, то надо путь еще создать\прописать другой для папки сервера.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа