Ошибка лицензирования RDSH хоста на RDS ферме

Обновлено 20.09.2020

rds logo

Добрый день! Уважаемые читатели и гости одного из крупнейших IT блогов России Pyatilistnik.org. В прошлый раз мы с вами научились отключать software reporter tool в Chrome Браузере, так как этот компонент уж очень сильно мог загружать центральный процессор вашего компьютера или ноутбука. В сегодняшней публикации я хочу поговорить про ошибки лицензирования терминальных столов и RDSH узлов в RDS ферме с которыми может встретиться любой системный администратор в своей практике. Мы рассмотрим ошибку "Этому серверу узла сеансов удаленных рабочих столов недоступны лицензии".

Проблемы при лицензировании терминальных серверов

Ситуация такая, ранее я развернул новую терминальную ферму Remote Desktop Services High Availability на базе Windows Server 2019 с определенным количеством RDSH хостов. Решил через месяц добавить еще несколько сервер подключений и после ввода их в состав RDS фермы и подключившись на каждый из них я увидел ошибку получения лицензий в виде формулировки:

Не указан сервер лицензирования удаленных рабочих столов. Службы удаленных рабочих столов прекратят работать через 91 день, если не будет указан сервер лицензирования. На сервере посредника подключений

Не указан сервер лицензирования удаленных рабочих столов

Самое интересное, что у меня при разворачивании RDS фермы был добавлен сервер лицензирования, который мы специально устанавливали под Windows Server 2019. Давайте разбираться в чем дело.

Диагностика и устранение проблем с лицензированием служб удаленных рабочих столов

Если у вас проблема с лицензированием RDSH хостов, то первым делом вы должны проверить ваши настройки RDS фермы через оснастку управления. В списке "Deployment Server" убедитесь, что у вас добавлены нужные сервера лицензирования RDS и нет лишних. В моем примере было добавлено три сервера лицензирования Remote Desktop Services. Один из них был точно с нужными лицензиями, а вот остальные были под вопросом.

Диагностика и устранение проблем с лицензированием служб удаленных рабочих столов

Зайдите на каждый из серверов, который предоставляет лицензии и проверьте, что для нужной операционной системы у вас есть лицензии. Делается это через оснастку "Средство диагностики и лицензирования удаленных рабочих столов (RD License Manager)". Как оказалось на одном из серверов вообще не было лицензий на Windows Server 2019, а на втором их было 0. Исходя из этого, данные сервера нужно удалить из RDS развертывания.

Средство диагностики и лицензирования удаленных рабочих столов (RD License Manager)

Для удаления выбираем "Задачи (Tasks) - Remove RD Licensing Servers".

Удаление лишних серверов лицензирования из RDS

Выделяем нужные сервера и переносим их в правую область, я специально не стал удалять саму роль лицензирования (Uninstall the RD Licensing role service from the selected server), так как они раздавали лицензии для других версий Windows.

Удаление лишних серверов лицензирования из Remote Desktop Services

Если тут все привели в порядок, то следующим шагом вам необходимо подключиться к нужному участнику 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, где задавались два неправильных сервера лицензирования.

Напоминаю, что если вы не помните или не знаете, где у вас установлены лицензии и кто из серверов является сервером лицензирования RDS ферм, то вы можете посмотреть как это находится по ссылке слева

Напоминаю, что это делается при редактировании GPO политики в ветке

Конфигурация компьютера\Административные шаблоны\Компоненты Windows\Службы удаленных рабочих столов\Узел сеансов удаленных рабочих столов\Лицензирование - Использовать указанные серверы лицензирования удаленных рабочих столов (добавляем имя нашего сервера) (Computer Configuration\Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Session Host\Licensing - Use the specified Remote Desktop license servers )

Та же ветка будет участвовать в настройке локальных политик, если это необходимо, вызвать их можно через окно выполнить, введя там gpedit.msc.

Перечисление серверов лицензирования RDS в локальной политике

Так же задайте тут сразу режим лицензирования для всей RDS фермы, через настройку:

Конфигурация компьютера\Административные шаблоны\Компоненты Windows\Службы удаленных рабочих столов\Узел сеансов удаленных рабочих столов\Лицензирование - Задать режим лицензирования удаленных рабочих столов (выбираем тип лицензий)(Computer Configuration\Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Session Host\Licensing - Set the Remote licensing mode)

Задание режима лицензирования RDS

Далее вам нужно произвести обновление групповой политики, в случае с локальной она должна применится сразу. Проверяем появление ваших лицензий. Как видите нужные мне лицензии были добавлены и режим лицензирования настроен.

Проверяем появление лицензий для RDSH

Удаление старых серверов лицензирования через реестр

Может получиться ситуация, что у вас сервера лицензирования были добавлены не через политику, как того требует инфраструктура Active Directory, а через реестр, либо может быть ситуация, что в реестре остались мусорные записи, которые политикой не получается перезаписать. В таких ситуациях вам необходимо самостоятельно проверить вот эту ветку реестра. Запустите окно выполнить и введите в нем regedit, чтобы открыть редактор реестра.

HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services

тут нужно найти ключ LicenseServers, именно он и отвечает за список серверов лицензирования, которые назначаются для службы удаленных рабочих столов. Убедитесь, что у вас тут стоит правильное значение. При необходимости его можно поменять, и значения будут применены без необходимости перезагружать сервер.

Проверка сервера лицензирования RDS через реестр Windows

Еще можете проверить вот такую ветку реестра:

HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Policies\Microsoft\Windows NT\Terminal Services

Тут то же может быть ключ LicenseServers.

Проверка сервера лицензирования RDS через реестр Windows

Если необходимо задать режим лицензирования на устройства или пользователя с помощью реестра, то вы это легко сможете сделать в ветке:

HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\RCM\Licensing Core

Тут будет ключ реестра LicensingMode, который может содержать три значения:

  • 2 - Задает режим лицензирования на устройство
  • 4 - Задает режим лицензирования на пользователя
  • 5 - Режим лицензирования не настроен

Подробнее на https://docs.microsoft.com/en-us/windows-hardware/customize/desktop/unattend/microsoft-windows-terminalservices-remoteconnectionmanager-licensingmode

Выбор режима лицензирования через реестр

Как настроить сервер лицензирования удаленных рабочих столов на узле сеанса удаленных рабочих столов через PowerShell

Так же вы можете управлять и просматривать значения настроек сервера лицензирования RDS через оболочку PowerShell, для этого вы можете воспользоваться вот такими командлетами.

  • Проверка настроен ли сервер лицензирования

$obj = gwmi -namespace "Root/CIMV2/TerminalServices" Win32_TerminalServiceSetting
$obj.GetSpecifiedLicenseServerList()

Проверка сервера лицензирования через PowerShell

  • Задать нужный сервер лицензий через PowerShell

$obj = gwmi -namespace "Root/CIMV2/TerminalServices" Win32_TerminalServiceSetting
$obj.SetSpecifiedLicenseServerList("FQDN вашего сервера лицензий")

В процессе выполнения вы можете получить ошибку:

Исключение при вызове "SetSpecifiedLicenseServerList" : "Недопустимая операция " (“Exception … Invalid operation” или $obj.setspecifiedlicenseserverlist invalid operation)

С большой вероятностью у вас уже задана настройка через групповую политику, поэтому идет такой конфликт. Тут либо отключать политику через gpedit.msc или менять значение в самой политике. Речь идет о данной ветке "Конфигурация компьютера\Административные шаблоны\Компоненты Windows\Службы удаленных рабочих столов\Узел сеансов удаленных рабочих столов\Лицензирование - Использовать указанные серверы лицензирования удаленных рабочих столов (Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Session Host\Licensing)"

Так же убедитесь, что вы выполняете команду в режиме администратора и имея административные права на данном сервере.

$obj.setspecifiedlicenseserverlist invalid operation

  • Проверка режима лицензирования через PowerShell

$obj = gwmi -namespace "Root/CIMV2/TerminalServices" Win32_TerminalServiceSetting
$obj.LicensingType
$obj.LicensingName

Смена режима лицензирования через PowerShell

  • Смена режима лицензирования через PowerShell

$obj = gwmi -namespace "Root/CIMV2/TerminalServices" Win32_TerminalServiceSetting
$obj.ChangeMode(value)
PS: Value = 2(Per Device)/4(Per User)

На этом я думаю у меня все, вы теперь точно научились диагностировать и решать проблемы с получением и назначением лицензий на сервера RDSH. Вы сами в праве выбирать тот метод, что вам подходит более всего, но старайтесь все же использовать по возможности централизацию в виде групповых политик, это уберет проблему с массовыми настройками и даст инструмент быстрого обновления настроек. С вами был Иван Семин, автор и создатель IT портала Pyatilistnik.org. Жду ваших вопросов и комментариев.

Автор - Сёмин Иван

One Response to Ошибка лицензирования RDSH хоста на RDS ферме

  1. 1:

    Большое спасибо. Через ГП не работало, помогло через реестр.

Добавить комментарий

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