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

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

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

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

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

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

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

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

xcopy "%PROGRAMFILES%1cv88.3.5.1383in" "%PROGRAMFILES%1cv88.3.5.1383in2"
xcopy "%PROGRAMFILES%1cv8SrvInfo" "%PROGRAMFILES%1cv8SrvInfo2"

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

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

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

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

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

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


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

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

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

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

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

15 Comments

  1. karpik666

    На самое главное не увидел ответа, зачем нужно использовать 2 кластера на одном сервере?

    Reply
  2. igel9780

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

    Reply
  3. webester

    Совсем недавно добавлял еще одну версию платформы на сервер2012, просто скопировал ветку и все заработало без каких то либо утилит.

    Reply
  4. efin

    У меня похожая задача, для 8.1 я решал ее так http://kb.mista.ru/article.php?id=639

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

    Как бы Вы решили вопрос с одновременной установкой двух разных версий 1С на одном физическом сервере и запустили 2 apacha на разных портах?

    Reply
  5. igel9780

    Я как-то не запускал два апача на линкусе. Но, насколько мне известно, люди вполне себе поднимают и два и больше апача. Только вот зачем?

    Reply
  6. efin

    (5) Затем, что на сервере 1С у меня 2 сервера приложений — 8.3.5 и 8.3.6

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

    С каталогом SrvInfo, допустим, согласен. Но считаю, что ошибки не будет, если использовать один каталог SrvInfo.

    А зачем копировать коталог BIN?

    Reply
  8. igel9780

    Если не копировать SrvInfo, ошибка будет. Если настраивать второй кластер в каталоге SrvInfo, то он начинает пересекаться по основной рабочей машине. Более того, стандартная утилита администрирования умеет работать только с одним каталогом SrvInfo. Я лично запускал утилиту администрирования с разных машин к разным менеджерам кластера.

    А вот по каталогу BIN, думаю, вы правы. Хотя я не проверял.

    Reply
  9. osipov_dv

    Не понял, зачем такой головняк автору…

    Ставим первый нужный релиз, при установке выбираем ставить как сервис и т.п.

    Запускаем первый релиз, работаем.

    Ставим второй релиз, при установке не выбираем ставить как сервис.

    Делаем экспорт ветки реестра “HKLMSYSTEMCurrentControlSet1C:Enterprise 8.3 Server Agent (x86-64)” в reg файл.

    Правим reg-файл (имя сервиса, путь до exe, порты)

    вливаем изменения в реестр

    запускаем второй сервис

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

    Reply
  10. Chai

    Мне понадобилась копия базы на сервере, поскольку имя базы содержится в метаданных, пришлось создать другой кластер (указал ему порт 1600) и в нем создал базу, восстановил ее конфигуратором из dt за определенную дату.

    Но как теперь подключиться к этой вновь созданной базе? Подключение с указанием порта (сервер:порт) не помогает, все равно подключается к первой базе из локального кластера.

    Подскажите?

    Reply
  11. Fox-trot

    (10) придется обождать… у чела день рождения 🙂

    Reply
  12. Chai

    Поздравляю именинника, пусть и с опозданием! )

    Тема создания нового кластера мне так и непонятна. Сервер 1С кластер создаст и создаст в нем базу (с таким же именем, в данном случае), но для СУБД известия о новом кластере так и не дойдут. При обращении клиента к базе с указанием порта кластера приведет к обращению все к той же базе.

    Если автор создавал кластер для тестовых целей, не указано, с каким именем создана в нем новая база.

    Reply
  13. Fox-trot

    база создана со старым именем ессесно

    после всех манипуляций имеем две службы 1це и все таже одна база

    Reply
  14. igel9780

    Кластер 1С обслуживает базы-1С. Хранение баз данных обслуживает SQL-сервер. Соответственно, SQL-База данных должна либо иначе называться, либо работать в другом Instance SQL-сервера. В противном случае, при работе из двух несвязанных кластеров мы получим кашу в БД-SQL.

    Reply
  15. elian

    (1) Господин Гилёв для настройки своих сервисов рекомендует устанавливать их в отдельный кластер. Лично мне понадобилось именно для этого.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *