Ошибка лицензирования RDSH хоста на RDS ферме
Добрый день! Уважаемые читатели и гости одного из крупнейших IT блогов России Pyatilistnik.org. В прошлый раз мы с вами научились отключать software reporter tool в Chrome Браузере, так как этот компонент уж очень сильно мог загружать центральный процессор вашего компьютера или ноутбука. В сегодняшней публикации я хочу поговорить про ошибки лицензирования терминальных столов и RDSH узлов в RDS ферме с которыми может встретиться любой системный администратор в своей практике. Мы рассмотрим ошибку "Этому серверу узла сеансов удаленных рабочих столов недоступны лицензии".
Проблемы при лицензировании терминальных серверов
Ситуация такая, ранее я развернул новую терминальную ферму Remote Desktop Services High Availability на базе Windows Server 2019 с определенным количеством RDSH хостов. Решил через месяц добавить еще несколько сервер подключений и после ввода их в состав RDS фермы и подключившись на каждый из них я увидел ошибку получения лицензий в виде формулировки:
Самое интересное, что у меня при разворачивании RDS фермы был добавлен сервер лицензирования, который мы специально устанавливали под Windows Server 2019. Давайте разбираться в чем дело.
Диагностика и устранение проблем с лицензированием служб удаленных рабочих столов
Если у вас проблема с лицензированием RDSH хостов, то первым делом вы должны проверить ваши настройки RDS фермы через оснастку управления. В списке "Deployment Server" убедитесь, что у вас добавлены нужные сервера лицензирования RDS и нет лишних. В моем примере было добавлено три сервера лицензирования Remote Desktop Services. Один из них был точно с нужными лицензиями, а вот остальные были под вопросом.
Зайдите на каждый из серверов, который предоставляет лицензии и проверьте, что для нужной операционной системы у вас есть лицензии. Делается это через оснастку "Средство диагностики и лицензирования удаленных рабочих столов (RD License Manager)". Как оказалось на одном из серверов вообще не было лицензий на Windows Server 2019, а на втором их было 0. Исходя из этого, данные сервера нужно удалить из RDS развертывания.
Для удаления выбираем "Задачи (Tasks) - Remove RD Licensing Servers".
Выделяем нужные сервера и переносим их в правую область, я специально не стал удалять саму роль лицензирования (Uninstall the RD Licensing role service from the selected server), так как они раздавали лицензии для других версий Windows.
Если тут все привели в порядок, то следующим шагом вам необходимо подключиться к нужному участнику RDS фермы, где есть проблемы с получением лицензий и так же проверить, что выдает вам оснастка "Средство диагностики и лицензирования удаленных рабочих столов (RD License Manager)". Тут вы можете встретить несколько разновидностей ошибок:
Льготный период использования сервера узла сеансов удаленных рабочих столов еще не истек, но этот сервер не настроен на использование хотя бы одного сервера лицензирования. В английской редакции будет вот такая формулировка "Licensing mode for the Remote Desktop Session Host is not configured. Remote Desktop Service will stop working in 100 days. Remote Desktop Services will stop working because this computer is past grace period and has not contacted at least a valid Windows Server 2019 license server. Click this message to open RD Session Host Server Configuration to use Licensing Diagnosis."
В данном примере не видно ни одного сервера раздающего лицензии.
Сервер узла сеансов удаленных рабочих столов находится в режиме лицензирования для пользователя и режиме перенаправителя Нет, но на сервере лицензирования не установлено лицензий со следующими атрибутами "Версия продукта Windows Server 1016 - 2019"
В данном примере на добавленных серверах лицензирования RDS просто нет лицензий для нужной редакции. Данные сервера нужно удалить и добавить актуальные.
Удалить текущие, неправильные сервера лицензирования вы можете через реестр, но нужно понять как они прилетают на сервер и как были добавлены, если в ручную, то это одно дело, если через групповые политики, то другое. Для начала я вам советую выяснить какие политики применяются к данному серверу, посмотрите как это делается. В моем случае и в правду была общая политика на данной OU, где задавались два неправильных сервера лицензирования.
Напоминаю, что это делается при редактировании GPO политики в ветке
Та же ветка будет участвовать в настройке локальных политик, если это необходимо, вызвать их можно через окно выполнить, введя там gpedit.msc.
Так же задайте тут сразу режим лицензирования для всей RDS фермы, через настройку:
Далее вам нужно произвести обновление групповой политики, в случае с локальной она должна применится сразу. Проверяем появление ваших лицензий. Как видите нужные мне лицензии были добавлены и режим лицензирования настроен.
Удаление старых серверов лицензирования через реестр
Может получиться ситуация, что у вас сервера лицензирования были добавлены не через политику, как того требует инфраструктура Active Directory, а через реестр, либо может быть ситуация, что в реестре остались мусорные записи, которые политикой не получается перезаписать. В таких ситуациях вам необходимо самостоятельно проверить вот эту ветку реестра. Запустите окно выполнить и введите в нем regedit, чтобы открыть редактор реестра.
тут нужно найти ключ LicenseServers, именно он и отвечает за список серверов лицензирования, которые назначаются для службы удаленных рабочих столов. Убедитесь, что у вас тут стоит правильное значение. При необходимости его можно поменять, и значения будут применены без необходимости перезагружать сервер.
Еще можете проверить вот такую ветку реестра:
Тут то же может быть ключ LicenseServers.
Если необходимо задать режим лицензирования на устройства или пользователя с помощью реестра, то вы это легко сможете сделать в ветке:
Тут будет ключ реестра LicensingMode, который может содержать три значения:
- 2 - Задает режим лицензирования на устройство
- 4 - Задает режим лицензирования на пользователя
- 5 - Режим лицензирования не настроен
Как настроить сервер лицензирования удаленных рабочих столов на узле сеанса удаленных рабочих столов через PowerShell
Так же вы можете управлять и просматривать значения настроек сервера лицензирования RDS через оболочку PowerShell, для этого вы можете воспользоваться вот такими командлетами.
- Проверка настроен ли сервер лицензирования
$obj.GetSpecifiedLicenseServerList()
- Задать нужный сервер лицензий через PowerShell
$obj.SetSpecifiedLicenseServerList("FQDN вашего сервера лицензий")
В процессе выполнения вы можете получить ошибку:
С большой вероятностью у вас уже задана настройка через групповую политику, поэтому идет такой конфликт. Тут либо отключать политику через gpedit.msc или менять значение в самой политике. Речь идет о данной ветке "Конфигурация компьютера\Административные шаблоны\Компоненты Windows\Службы удаленных рабочих столов\Узел сеансов удаленных рабочих столов\Лицензирование - Использовать указанные серверы лицензирования удаленных рабочих столов (Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Session Host\Licensing)"
Так же убедитесь, что вы выполняете команду в режиме администратора и имея административные права на данном сервере.
- Проверка режима лицензирования через PowerShell
$obj.LicensingType
$obj.LicensingName
- Смена режима лицензирования через PowerShell
$obj.ChangeMode(value)
PS: Value = 2(Per Device)/4(Per User)
На этом я думаю у меня все, вы теперь точно научились диагностировать и решать проблемы с получением и назначением лицензий на сервера RDSH. Вы сами в праве выбирать тот метод, что вам подходит более всего, но старайтесь все же использовать по возможности централизацию в виде групповых политик, это уберет проблему с массовыми настройками и даст инструмент быстрого обновления настроек. С вами был Иван Семин, автор и создатель IT портала Pyatilistnik.org. Жду ваших вопросов и комментариев.
Большое спасибо. Через ГП не работало, помогло через реестр.