Если у вас есть опыт создания дополнительного кластера 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 задаст вопрос, что мы имеем в виду под «назначением», каталог или файл. Мы должны указать, что это каталог. Как на рисунке.
Далее, мы создаем еще один сервис 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 очень важно отсутствие пробела перед знаком равно ("=") в параметрах. Также важен пробел после знака равно ("=") в параметрах. Очень внимательно. Ну, а экранирование кавычек в командной строке, это просто "песня".
Далее, необходимо донастроить службу. Укажите пользователя, под которым будет запускаться служба:
+
Настройте параметры восстановления службы.
Запустите службу. Иногда бывает, что при копировании командной строки с сайта, часть символов заменяются. Возможно, вам придется откорректировать параметр запуска в реестре по пути “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" в командной строке запуска сервиса. На самом деле, режим отладки на сервере замедляет работу предприятия. Если вы не собираетесь отлаживать на сервере, то лучше отказаться от данного ключа запуска.