Если у вас есть опыт создания дополнительного кластера 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 задаст вопрос, что мы имеем в виду под «назначением», каталог или файл. Мы должны указать, что это каталог. Как на рисунке.
Далее, мы создаем еще один сервис 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 очень важно отсутствие пробела перед знаком равно («=») в параметрах. Также важен пробел после знака равно («=») в параметрах. Очень внимательно. Ну, а экранирование кавычек в командной строке, это просто «песня».
Далее, необходимо донастроить службу. Укажите пользователя, под которым будет запускаться служба:
+
Настройте параметры восстановления службы.
Запустите службу. Иногда бывает, что при копировании командной строки с сайта, часть символов заменяются. Возможно, вам придется откорректировать параметр запуска в реестре по пути “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» в командной строке запуска сервиса. На самом деле, режим отладки на сервере замедляет работу предприятия. Если вы не собираетесь отлаживать на сервере, то лучше отказаться от данного ключа запуска.
На самое главное не увидел ответа, зачем нужно использовать 2 кластера на одном сервере?
В моем примере, один из двух кластеров используется для отладки. А чаще всего, необходимость возникает когда нужно держать несколько версий платформы одновременно.
Совсем недавно добавлял еще одну версию платформы на сервер2012, просто скопировал ветку и все заработало без каких то либо утилит.
У меня похожая задача, для 8.1 я решал ее такhttp://kb.mista.ru/article.php?id=639
Однако, сейчас в цепочке появился веб-сервер Apache2.2 (стоит на отдельном linux-сервере), который публикует базы и веб-сервисы в вебе.
Как бы Вы решили вопрос с одновременной установкой двух разных версий 1С на одном физическом сервере и запустили 2 apacha на разных портах?
Я как-то не запускал два апача на линкусе. Но, насколько мне известно, люди вполне себе поднимают и два и больше апача. Только вот зачем?
(5) Затем, что на сервере 1С у меня 2 сервера приложений — 8.3.5 и 8.3.6
С каталогом SrvInfo, допустим, согласен. Но считаю, что ошибки не будет, если использовать один каталог SrvInfo.
А зачем копировать коталог BIN?
Если не копировать SrvInfo, ошибка будет. Если настраивать второй кластер в каталоге SrvInfo, то он начинает пересекаться по основной рабочей машине. Более того, стандартная утилита администрирования умеет работать только с одним каталогом SrvInfo. Я лично запускал утилиту администрирования с разных машин к разным менеджерам кластера.
А вот по каталогу BIN, думаю, вы правы. Хотя я не проверял.
Не понял, зачем такой головняк автору…
Ставим первый нужный релиз, при установке выбираем ставить как сервис и т.п.
Запускаем первый релиз, работаем.
Ставим второй релиз, при установке не выбираем ставить как сервис.
Делаем экспорт ветки реестра “HKLMSYSTEMCurrentControlSet1C:Enterprise 8.3 Server Agent (x86-64)” в reg файл.
Правим reg-файл (имя сервиса, путь до exe, порты)
вливаем изменения в реестр
запускаем второй сервис
PS: ну да, если платформа одинаковая в рамках 8.x, то надо путь еще создатьпрописать другой для папки сервера.
Мне понадобилась копия базы на сервере, поскольку имя базы содержится в метаданных, пришлось создать другой кластер (указал ему порт 1600) и в нем создал базу, восстановил ее конфигуратором из dt за определенную дату.
Но как теперь подключиться к этой вновь созданной базе? Подключение с указанием порта (сервер:порт) не помогает, все равно подключается к первой базе из локального кластера.
Подскажите?
(10) придется обождать… у чела день рождения 🙂
Поздравляю именинника, пусть и с опозданием! )
Тема создания нового кластера мне так и непонятна. Сервер 1С кластер создаст и создаст в нем базу (с таким же именем, в данном случае), но для СУБД известия о новом кластере так и не дойдут. При обращении клиента к базе с указанием порта кластера приведет к обращению все к той же базе.
Если автор создавал кластер для тестовых целей, не указано, с каким именем создана в нем новая база.
база создана со старым именем ессесно
после всех манипуляций имеем две службы 1це и все таже одна база
Кластер 1С обслуживает базы-1С. Хранение баз данных обслуживает SQL-сервер. Соответственно, SQL-База данных должна либо иначе называться, либо работать в другом Instance SQL-сервера. В противном случае, при работе из двух несвязанных кластеров мы получим кашу в БД-SQL.
(1) Господин Гилёв для настройки своих сервисов рекомендует устанавливать их в отдельный кластер. Лично мне понадобилось именно для этого.