Высокая доступность и восстановление сервера лицензий служб терминалов (часть 1)

Опубликовано: 24 Апреля, 2023

Одним из наиболее важных компонентов любого развертывания сервера терминалов является сервер лицензий. Если сервер лицензий недоступен, пользователям может быть отказано в доступе к ресурсам. В этой статье мы обсудим несколько различных способов обеспечения отказоустойчивости вашей инфраструктуры лицензирования служб терминалов, а в этой части основное внимание будет уделено высокой доступности.

Проблемы со службами лицензирования

Доступность сервера лицензий имеет решающее значение для успешной работы среды терминального сервера. Однако у Microsoft нет встроенных механизмов для обеспечения избыточности серверов лицензий; служба лицензирования служб терминалов не поддерживает кластер, поэтому вы не можете использовать Microsoft Cluster Services (MSCS) для обеспечения высокой доступности. Еще больше усложняет ситуацию то, что информации о высокой доступности серверов лицензий не так много, а собственная документация Microsoft по этому вопросу противоречива.

Например, в официальном документе Microsoft Terminal Services Licensing Microsoft рекомендует развернуть два сервера лицензий, но размещать лицензионные токены только на одном из серверов, позволяя другому выдавать только временные клиентские лицензии. Однако в часто задаваемых вопросах по лицензированию серверов терминалов на своем веб-сайте они рекомендуют разделять токены лицензий между развернутыми серверами лицензий. Так какой из них правильный? Ну, они оба, в зависимости от ваших целей в отношении высокой доступности.

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

Понимание, где находится уязвимость

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

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

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

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

Из перечисленных выше экземпляров только два фактически препятствуют подключению клиента: либо клиенту никогда не выдавались клиентские лицензии для среды, либо срок действия выданных клиентских лицензий истек. Из этих двух оставшихся условий только одно требует доступа к серверу лицензий с доступными маркерами лицензии; временные клиентские лицензии могут быть выделены любым сервером лицензий. Таким образом, существует только один сценарий, от которого вы пытаетесь защититься, — просроченные клиентские лицензии.

Режимы сервера лицензий — новый взгляд

Дополнительная информация о режимах сервера лицензий доступна в моих статьях « Обнаружение службы лицензий сервера терминалов, часть 1 и часть 2 », но в обзоре есть два режима, в которых может находиться сервер лицензий, определяемые во время установки службы.

  • Режим домена/рабочей группы
  • Режим предприятия

Режим сервера лицензий определяет способ его обнаружения терминальными серверами. Корпоративные серверы лицензий всегда можно обнаружить, поскольку местоположение сервера лицензий хранится в Active Directory. Обнаружение сервера лицензий домена/рабочей группы надежно только в том случае, если сервер лицензий установлен на контроллере домена; в противном случае серверы терминалов должны полагаться на широковещательную рассылку NetBIOS для обнаружения сервера лицензий.

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

Наконец, серверы лицензий режима предприятия и режима домена Windows Server 2003 в одном и том же домене будут уведомлять друг друга о добавлении клиентских лицензий в соответствующие базы данных. Это позволяет серверам лицензий перенаправлять запросы клиентских лицензий на другие серверы лицензий, когда у них нет доступных клиентских лицензий для выдачи.

Обеспечение резервирования

Ваши варианты развертывания резервной инфраструктуры лицензирования служб терминалов будут зависеть от режима лицензирования ваших серверов терминалов.

Развертывание сервера терминалов в пользовательском режиме

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

Изображение 28609
Рисунок 1: Режим для каждого пользователя

Как показано на рис. 1. Режим «на пользователя», в сети развернуты два сервера лицензий. В случае сбоя одного из них доступен другой, поэтому клиенты могут продолжать непрерывное подключение. Если развертывание терминального сервера включает несколько сайтов, лучше всего разместить корпоративный сервер лицензий на каждом сайте, содержащем терминальные серверы, чтобы свести к минимуму трафик глобальной сети, связанный с лицензированием.

Развертывание сервера терминалов в режиме «на устройство»

Для сред, содержащих терминальные серверы в режиме «на устройство», необходимо обеспечить постоянную доступность лицензионных токенов, чтобы предотвратить отказ клиентов в подключении из-за просроченных клиентских лицензий. Если вы помните, в начале этой статьи у Microsoft есть ссылки на различные методы обеспечения избыточности в своей документации. Все лицензии можно либо разместить исключительно на одном сервере лицензий, при этом другие серверы лицензий будут распространять только временные клиентские лицензии, либо лицензии можно разделить между доступными серверами лицензий. Выбор зависит от нескольких факторов.

Если развертывание терминального сервера вашей организации изолировано на одном сайте, один из вариантов — разместить все токены лицензий на одном сервере и позволить второму серверу лицензий выдавать только временные клиентские лицензии (рис. 2). Это упрощает процесс резервного копирования и восстановления, поскольку вам нужно создать резервную копию только одного сервера лицензий, чтобы получить полный архив всех токенов лицензий, но это делает вашу среду уязвимой для сбоя сервера лицензий.

Изображение 28610
фигура 2

Чтобы устранить потенциальную проблему, вы можете разделить токены лицензий между серверами лицензий, как показано на рис. 3.

Изображение 28611
Рисунок 3

Такой дизайн снижает вероятность сбоя одного сервера лицензий, препятствующего подключению пользователей; однако это не гарантирует этого, поскольку нет уверенности в том, что на оставшемся сервере лицензий все еще будут доступны клиентские лицензии. Например, предположим, что вы разделили клиентские лицензии 50/50 между двумя серверами лицензий, при этом оба сервера содержат по 50 клиентских лицензий каждый. Первый сервер выдал все свои лицензии, в то время как у второго сервера осталось 10 лицензий. Если второй сервер выйдет из строя, вы окажетесь в той же ситуации, что и на рис. 2, потому что первый сервер может выдавать временные лицензии только тем клиентам, которые еще не подключились.

Самый простой способ обойти эту проблему — оставить определенное количество лицензионных токенов на полке на случай сбоя. Если в вашей среде произошел сбой сервера лицензий и вы оказались в ситуации, когда на оставшемся узле нет доступных лицензий, у вас есть возможность загрузить свои «запасные» пакеты лицензий на оставшийся сервер. Однако это должно быть последним средством, так как после загрузки клиентских лицензий на сервер лицензий их нельзя будет удалить.

Несколько сайтов

Если развертывание сервера терминалов включает несколько сайтов, рекомендуется разместить корпоративный сервер лицензий в каждом месте, содержащем серверы терминалов, как показано на рис. 4, причем каждый сервер лицензий содержит часть всех клиентских лицензий вашей организации. Это не позволит терминальным серверам использовать каналы WAN для получения лицензий, но позволит терминальным серверам использовать корпоративный сервер лицензий удаленного сайта в случае сбоя локального сервера лицензий.

Изображение 28612
Рисунок 4

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

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

Изображение 28613
Рисунок 5

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

Рекомендации и лучшие практики

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

  • Разверните несколько серверов лицензий в своей среде, чтобы избежать единой точки отказа. Даже если они оба не содержат невыпущенных токенов лицензий, уцелевший сервер лицензий сможет выдавать временные клиентские лицензии новым клиентам.
  • Обнаруживаемость имеет решающее значение. По возможности используйте корпоративные серверы лицензий или размещайте серверы лицензий домена на контроллерах домена. При необходимости используйте ключи реестра LicenseServers, чтобы переопределить обнаружение.
  • Для многосайтовых развертываний разместите сервер лицензий с постоянными лицензионными маркерами, установленными на каждом сайте, содержащем терминальные серверы. В случае сбоя одного сервера лицензии могут быть выделены с удаленного сервера лицензий.
  • В качестве запасного варианта держите несколько запасных пакетов лицензий на полке на случай критического сбоя. Если все постоянные лицензии были выданы, а срок действия значительной части истекает, прежде чем вы сможете восстановить отказавший сервер, это может стать вашей подстраховкой.
  • Ведите точный подсчет требований к лицензиям и проактивно добавляйте дополнительные клиентские лицензии по мере необходимости. Вы не хотите оказаться в ситуации, когда пользователям отказывают в доступе, потому что кто-то не отслеживает потребности в лицензировании.
  • Резервное копирование серверов лицензий последовательно. В случае сбоя сервера лицензий это единственный способ восстановить сервер лицензий без участия Центра обмена информацией Microsoft.
  • Наконец, по возможности используйте серверы терминалов в режиме «на пользователя», чтобы избежать проблем с лицензированием на уровне устройств.

Часть первая посвящена обеспечению отказоустойчивости в лицензионной инфраструктуре. Во второй части основное внимание будет уделено возможности восстановления сервера лицензий, чтобы обеспечить быстрое восстановление в случае сбоя сервера лицензий.