среда, 17 апреля 2019 г.

Создание выделенного сервера лицензирования 1С

Документ без названия

Постановка задачи

В качестве примера рассмотрим следующую исходную ситуацию: у нас есть кластер «1С» , состоящий из одного рабочего сервера SRV1, на версии платформы 8.3.8.2088 (-regport 2041 -port 2040 -range 2060:2091). Все сервисы исполняются на нём, на нем же активирована серверная и многопользовательская программная лицензия.
А также есть еще один кластер, состоящий из одного рабочего сервера SRV2, на версии платформы 8.3.9.1850 (-regport 3041 -port 3040 -range 3060:3091). На нём также исполняются все сервисы, и также активирована серверная и многопользовательская программная лицензия.
Описание параметров портов (report, port, range) приведено здесь.
Требуется вынести сервисы лицензирования с обоих серверов на отдельный сервер лицензирования SrvLic, то есть активировать две серверные и две многопользовательские лицензии на этом сервере и обеспечить их выдачу в оба кластера «1С».

Порядок действий

Все действия для настройки выделенного сервера лицензирования лучше разбить на два этапа:
  • подготовительный — подготовка сервера лицензирования: разворачивание служб «1С» , добавление его в список рабочих серверов в каждом кластере «1С» , проверка активности (доступности для использования);
  • заключительный — активация лицензий на выделенном сервере лицензирования и применение настроек по переносу на него сервиса лицензирования каждого из кластеров «1С».
Такой подход позволит минимизировать общее время простоя системы и устранить возможные проблемы вне этого периода.

Подготовительный этап

Для подготовительного этапа последовательность действий для настройки сервиса лицензирования на выделенном сервере SRVLic будет следующей:
  1. На сервере SRVLic устанавливаем компоненты сервера «1С:Предприятия» 8.3.8.2088 и 8.3.9.1850 (более подробная информация по установке сервера доступна в документации здесь).
Мы рекомендуем при установке «1С:Предприятие» снять опцию «Установить сервер „1С:Предприятие 8“ как сервис Windows». Это позволит выполнять установку и удаление версий платформы без необходимости остановки служб на сервере.
  1. Развертывание служб «1С» на сервере SrvLic осуществляем с помощью скриптов. Подробное рассмотрение вопросов развертывания разных служб на одном сервере рассматривается в статье «Как правильно обновить платформу „1С“ и запустить несколько служб „1С“ на одном сервере?» по ссылке.
Здесь мы ограничимся готовыми скриптами для нашего примера.
Служба «1C» для сервера Srv1:
sc create "1C:Enterprise SrvLic1" binpath= "\"C:\Program Files\1cv8\8.3.8.2088\bin\ragent.exe\" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d \"C:\Program Files\1cv8\srvinfo_srvlic1\"" displayname= "Агент сервера 1C:Предприятие SrvLic1" obj= "domain\USR1CV8" password= "password" start= disabled depend= Dnscache/Tcpip/lanmanworkstation/lanmanserver
, где
  • domain\USR1CV8 — пользователь от имени которого осуществляется запуск службы (в качестве пользователя желательно использовать доменную учетную запись, обладающую правом запуска служб и полными правами к каталогу указанному в параметре «-d»).
  • password — пароль пользователя, указанного в параметре «obj».
Служба «1C» для сервера Srv2:
sc create "1C:Enterprise SrvLic2" binpath= "\"C:\Program Files\1cv8\8.3.9.1850\bin\ragent.exe\" -srvc -agent -regport 1641 -port 1640 -range 1660:1691 -d \"C:\Program Files\1cv8\srvinfo_srvlic2\"" displayname= "Агент сервера 1C:Предприятие SrvLic2" obj= "domain\USR1CV8" password= "password" start= disabled depend= Dnscache/Tcpip/lanmanworkstation/lanmanserver
Необходимо обратить внимание, что для каждой вновь создаваемой службы должны быть заданы различные каталоги в параметре «–d».
Обратите внимание, что при выборе портов для запуска службы следует учитывать их доступность (это порты не должны быть заняты другими службами или приложениями). Для первой службы мы выбрали диапазон 1560:1591, для второй — 1660:1691. Кроме того, данные порты нужно добавить в разрешенные порты межсетевых экранов.
  1. На сервере SRVLic создаем каталоги служб «1С» и даем на них полные права пользователю «domain\USR1CV8»:
C:\Program Files\1cv8\srvinfo_srvlic1
C:\Program Files\1cv8\srvinfo_srvlic2
  1. Включаем и запускаем службы.
 


После запуска служб убеждаемся, что они работают, через команду консоли служб «Действия → Обновить»
  1. Удаляем автоматически созданные локальные кластеры «1С» через консоль администрирования серверов «1С» :Предприятие. Для этого регистрируем и запускаем консоль версии 8.3.8.2088:

"C:\Program Files (x86)\1cv8\8.3.8.2088\bin\RegMSC.cmd"
(запуск от имени Администратора)


"C:\Program Files (x86)\1cv8\common\1CV8 Servers.msc"  

Регистрируем и запускаем консоль для версии 8.3.9.1850:
"C:\Program Files (x86)\1cv8\8.3.9.1850\bin\RegMSC.cmd"
(от имени Администратора)
"C:\Program Files (x86)\1cv8\common\1CV8 Servers.msc"

НО. Есть еще нюанс. Если у вас второй экземпляр сервера другого релиза (например первый 8.3.8.2088, а второй 8.3.9.1850), то у вас возникнут определенные трудности связанные с запуском консоли сервера (см. описание в конце статьи).
И также удаляем «Локальный кластер»:

  1. Для функционирования системы программного лицензирования необходимо, чтобы на компьютере SrvLic была запущена служба WMI (Windows Management Instrumentation, http://msdn.microsoft.com/en-us/library/aa394582.aspx). Нужно проверить, что данная служба запущена, если нет — запустить ее (в документации данное требование описано здесь).
  2. Возвращаемся на сервер SRV1, в консоли администрирования серверов «1С:Предприятие» которого создаем (добавляем) новый рабочий сервер:

  1. Указываем для него имя, например, «Сервер лицензирования», сетевое имя сервера — SRVLic, порт, на котором работает служба «1С» версии 8.3.8.2088, у нас был задан порт 1540, и диапазон портов, который будет использоваться для процессов этой службы, для этой версии был задан — 1560:1591. Остальные параметры оставляем без изменений (большинство из них использоваться не будут).

Здесь нужно обратить внимание, что при добавлении нового рабочего сервера поле «Порт главного менеджера кластера» не доступен для редактирования.
Так как кластер сервера Srv1 развернут на 2041 порту…

… то в настройках добавленного рабочего сервера SrvLic нужно изменить порт главного менеджера кластера с 1541 на 2041 (если кластер был расположен на стандарном порту ничего изменять не надо, оба сервера в кластере смогу работать на одинаковом порту 1541). Для этого нужно повторно открыть свойства рабочего сервера SrvLic

  1. Теперь наш кластер должен содержать новый рабочий сервер:

Для того, чтобы сервисы не начали перераспределяться на только что добавленный сервер SrvLic, нужно сразу создать правило требований назначения функциональности, запрещающее абсолютно всё:



И применить требование назначения функциональности:

  1. Выполняем действия с 7 по 9 пункт для сервера Srv2. Напомним, что порт агента «1С» для добавленного сервера лицензирования SrvLic, на котором работает служба «1С» версии 8.3.9.1850 у нас был задан 1640, а диапазон портов — 1660:1691, порт главного менеджера кластера нужно установить в соответствии с принципами, изложенными в 7 пункте.
  2. Выполним настройку требований назначения функциональности для переноса сервиса лицензирования в добавленный сервер SrvLic. Откроем консоль администрирования серверов для сервера Srv1. В ветке «Рабочие серверы» переходим (раскрываем) добавленный сервер SRVLic, далее у него переходим (раскрываем) ветку «Требования назначения функциональности». Настраиваем требования назначения функциональности на добавленном рабочем сервере SRVLic следующим образом:
    • Требование 1:
      • Объект требования: Сервис лицензирования.
      • Тип требования: Назначать.
      • Имя ИБ: не указывается (оставить поле пустым)
      • Значение дополнительного параметра: не указывается (оставить поле пустым).
    • Требование 2:
      • Объект требования: Любой объект требования.
      • Тип требования: Не назначать.
      • Имя ИБ: не указывается (оставить поле пустым).
      • Значение дополнительного параметра: не указывается (оставить поле пустым).
Теперь требования назначения функциональности в консоли администрирования серверов «1С:Предприятие» должны выглядеть так, как на следующем рисунке и именно в таком порядке:
Поясним немного выполненные действия. Требование 1 обеспечит функционирование сервиса лицензирования на сервере SRVLic, а Требование 2 обеспечит функционирование на сервере SRVLic только сервиса лицензирования. То есть на сервере SRVLic не будут функционировать другие сервисы кластера и на него не будут назначаться клиентские соединения.
Необходимо обратить внимание на порядок расположения требований. Сначала должно располагаться более узкое по объектам требование. Для того, чтобы не настраивать для каждого из остальных сервисов правила требований назначения функциональности «Не назначать» — делается одно общее правило «Не назначать»/«Для всех». В область «Для всех» входят и клиентские соединения, и все прочие сервисы кластера, так же, как и «Сервис лицензирования», но так как для этого объекта требования у нас уже есть расположенное выше правило, то все последующие правила кластер применять к нему уже не будет. Более подробная информация об особенностях функционирования требований назначения функциональности приведена в документации здесь.
12. В блоке рабочего сервера кластера SRV1 также добавляем две функциональности в требования назначения функциональности.

Функциональности должны быть именно в указанной последовательности.
Добавляем сначала:
Сервис лицензирования - Не назначать


Затем:
Клиентское соединение с ИБ - Назначать


Этим мы говорим, что этот сервер готов отвечать на клиентские вызовы, но лицензии он не содержит.
И применить требование назначения функциональности:

13. Перезагружаем службу 1С.
14. Выполняем эти же действия по настройке требований назначения функциональности для сервера Srv2.
15. Как активировать лицензию в случае сервера лицензирования?
Для этого на клиенте в любой базе (хоть локальной) зайти в конфигуратор, перейти на интерфейс ввода лицензии, нажать Дополнительно и ввести адрес сервера лицензирования.
16. Активация ключа на сервере:



В этом случае активация произойдет на сервере лицензирования.
После можно проверить, появился ли файл лицензии в папке на сервере (рекомендуется записать, что за файл - эта информация может понадобиться при восстановлении лицензии - см. статью Восстановление по пин-коду).

Несколько версий сервера 1С на одном компьютере


По умолчанию, вы всегда запускаете консоль C:\Program Files\1cv8\common\1CV8 Servers (x86-64).msc, которая в свою очередь работает с определенной версией файла radmin.dll. Т.е. консоль для работы с платформой 8.3.8.2088 должна работать с файлом C:\Program Files\1cv8\ 8.3.8.2088\bin\radmin.dll, а для работы с 8.3.9.1850 - C:\Program Files\1cv8\8.3.9.1850\bin\radmin.dll. Есть рекомендации, что перед запуском консоли для работы с определенной версией сервера – необходимо каждый раз регистрировать нужную версию radmin.dll при помощи regsvr32. Однако мне этот вариант не помог (и судя по вопросам на форумах не мне одному). И я нашел один рабочий способ.
В папке C:\Program Files\1cv8\common создаете два файла 8.3.8.2088.reg и 8.3.9.1850.reg с соответствующим содержим:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{A42674D4-2D97-4988-A81D-2C113CC42A95}\InprocServer32]
@="C:\\Program Files\\1cv8\\8.3.8.2088\\bin\\radmin.dll"
"ThreadingModel"="Both"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{803144C8-17E6-4926-86C5-C195B6D226D4}\InprocServer32]
@="C:\\Program Files\\1cv8\\8.3.8.2088\\bin\\radmin.dll"
"ThreadingModel"="Both"
И
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{A42674D4-2D97-4988-A81D-2C113CC42A95}\InprocServer32]
@="C:\\Program Files\\1cv8\\8.3.9.1850\\bin\\radmin.dll"
"ThreadingModel"="Both"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{803144C8-17E6-4926-86C5-C195B6D226D4}\InprocServer32]
@="C:\\Program Files\\1cv8\\8.3.9.1850\\bin\\radmin.dll"
"ThreadingModel"="Both"

Также вы создаете два bat файла Console8382088.bat и Console8391850.bat с соответствующим содержимым:
regedit /s "C:\Program Files\1cv8\common\8.3.8.2088.reg"
mmc /s "C:\Program Files\1cv8\common\1CV8 Servers (x86-64).msc"
и
regedit /s "C:\Program Files\1cv8\common\8.3.9.1850.reg"
mmc /s "C:\Program Files\1cv8\common\1CV8 Servers (x86-64).msc"
И теперь для запуска консоли используете нужный вам bat файл Console83******.bat.