Настройка RDS Connection Broker с высокой доступностью на Windows Server 2019/2022

Remote Desktop Connection Broker (RDCB) – это один из компонентов роли терминального сервера (Remote Desktop Services, RDS) в Windows Server. RD Connection Broker позволяет равномерно распределить нагрузку между хостами в ферме RDS (при подключении к RDS ферме пользователя перенаправляет на наименее загруженный сервер), обеспечить доступ пользователям к VDI и RemoteApp, управляет конфигурацией RDS хостов в ферме. Также RDCB позволяет пользователям переподключаться к своим сессиям: при подключении к RDS, RDCB проверяет наличие незавершенной сессии на других серверах фермы, и перенаправляет его в старую сессию.

В этой статье мы рассмотрим процесс настройки отказоустойчивого высоко-доступного экземпляра RD Connection Broker , обеспечивающего свой функционал при выходе из строя одного из серверов с ролью RDCB. Для хранения данных RDCB используется БД на MS SQL Server 2019. В целях ухода от одной точки отказа, SQL базу данных RDCB также нужно развернуть в отказоустойчивой конфигурации. В этом примере мы будем использовать два SQL сервера с настроенной группой высокой доступности SQL Always On.

Требования для внедрения отказоустойчивого RDCB:

  • Как минимум 2 сервера с ролью RDCB с Windows Server 2019/2022;
  • Если вы хотите использовать высокую доступность для SQL базы RDCB, вам понадобится минимум 2 сервера с установленным SQL Server 2014 или выше (с редакцией Standard или Enterprise). В нашем примере на каждый из серверов мы установили standalone экземпляр MS SQL Server 2019 Enterprise. Если вы не планируете создать HA для SQL базы, достаточно одного сервера с SQL Express;
  • На серверах с ролями RD Connection Broker нужно установить SQL Server Native Client;
  • Предоставить полные права для серверов RD Connection Broker на БД SQL и каталог установки SQL;
  • Минимум один сервер с ролью Remote Desktop Session Host в ферме;

Мы создадим отказоустойчивую конфигурацию RDCB их двух серверов. На каждом из них будет установлена роль RD Connection и SQL Server. Высокая доступность базы SQL Server будет достигаться за счет создания группы высокой доступности Always On.

схема отказоустойчивого кластера RDS Conenction broker с базой данных SQL в Always on группе доступности

Начиная с Windows Server 2012, RDS Connection Broker обеспечивает высокую доступность в режиме Active/Active. В этом режиме все сервера RDCB являются активным и могут обрабатывает входящие запросы. Это позволяет обеспечить высокую доступность и масштабируемость RDCB в больших фермах Remote Desktop.

Подготовка инфраструктуры для Remote Desktop Connection Broker

Всем серверам, на которых будут установлены роли RD Connection Broker необходимо назначить статические ip-адреса и добавить в домен Active Directory .

  • Srv-rds1.remontka.loc — 192.168.13.20
  • Srv-rds2.remontka.loc — 192.168.13.21

Создайте в Active Directory новую группу безопасности HQ RDS Connection Brokers , и добавьте в нее все сервера RDCB. Можно создать группу из оснастки ADUC (dsa.msc) или с помощью PowerShell :

New-ADGroup " HQ RDS Connection Brokers " -path 'OU=Groups,OU=SPB,OU=RU,DC=remontka,DC=loc' -GroupScope Global -PassThru –Verbose

Добавьте в группу два сервера:

Add-AdGroupMember -Identity " HQ RDS Connection Brokers " -Members srv-rds1$,srv-rds2$

создать группу в домене для RDS Connection Broker

Создайте в DNS A записи для вашей кластерного имени RDS фермы (в нашем примере это HQRDCB). Все записи должны указывать на IP адреса всех серверов RDCB. Это необходимо для балансировки нагрузки (Round Robin) между серверами RD Connection Broker. Я создал такие записи:

  • A — HQRDCB.remontka.loc 192.168.13.20 (ip адрес первого сервера RDCB — Srv-rds1.domain.ru)
  • A — HQRDCB. remontka.loc 192.168.13.21 (ip адрес второго сервера RDCB — Srv-rds2.domain.ru)

Можно создать A записи в DNS с помощью PowerShell :

Add-DnsServerResourceRecordA -Name HQRDCB -IPv4Address 192.168.13.20 -ZoneName remontka.loc
Add-DnsServerResourceRecordA -Name HQRDCB -IPv4Address 192.168.13.21 -ZoneName remontka.loc

A записи для RDS фермы

Установите SQL Server Native Client на всех серверах, на которых будет работать роль RDCB. SQL Server Native Client для вашей версии SQL Server можно скачать с сайта Microsoft или скопировать из установочного образа SQL Server ( D:1033_ENU_LPx64Setupx64sqlncli.msi )

установка SQL Server Native Client

Теперь запустите SQL Server Management Studio и подключитесь к вашему первому SQL серверу, на котором будет создана общая база данных Connection Broker (позже мы перенесем ее в группу высокой доступности Always On).

Перейдите в раздел Security -> Logins и добавьте новый login. Нажмите на кнопку Search, в Locations выберите свой домен, установите Object Types = Groups и найдите доменную группу HQ RDS Connection Brokers.

права для RDCB хостов в SQL Server

Назначьте этой группе роли dbcreator и sysadmin .

права dbcreator и sysadmin

Откройте необходимые порты в Windows Firewall (по умолчанию для подключения к SQL Server используется TCP 1433 ).

Установка ролей Remote Desktop Services

Теперь нам нужно установить RDS роли на ваших серверах. Запустите консоль Server Manager, выберите Manage -> Add roles and Features -> Remote Desktop Services Installation .

установка Remote Desktop Services Installation

Установка роли RDS на standalone хоста описана в отдельной статье .

Выберите Standard deployment -> Session-based desktop deployment .

RDS Session-based desktop deployment

Выберите один сервер, на который вы хотите установить роль RD Connection Broker. Сейчас не нужно ставить роль RDCB на второй сервер.

установить роль RD Connection Broker

Установите роль RD Web Access на тот же сервер, что и RDCB (если эта роль не нужна, ее потом можно удалить). Установите роль RD Session Host на оба сервера.

установить роль RD Session Host

Дождитесь окончания установки ролей RDS.

установка ролей RDS

После окончания установки ролей, добавьте в локальную группу RDS Management Servers на обоих серверах учетные записи хостов RDCB и ‘NT AUTHORITYNETWORK SERVICE’.

Группа RDS Management Servers

При установке роли RD Connection Broker на первый сервер в ферме он создаст локальную база SQL, хранящаяся на локальном диске сервера RD Connection Broker в каталоге C:WindowsrdcbDb .

локальная база rdcbDb

В этой базе хранится информация о ферме и терминальный сессиях пользователей. Так как она расположена на локальной машине, другие сервера RDCB не смогут ее использовать. Для создания HA для RDCB нужно перенести ее на выделенный SQL сервер, на котором она будет доступна другим серверам.

Настройка высокой доступности для RDS Connection Broker

Прежде чем добавить в ферму второй хост с ролью RD Connection Broker, нужно перенести локальную базу RDCB на внешний SQL сервер.

Для переноса БД Connection Broker из локальной базы на выделенный SQL Server нужно перейти в Server Manager -> Remote Desktop Services -> Overview . Чтобы запустить мастер создания отказоустойчивой конфигурации RD Connection Broker, щёлкните по изображению роли RD Connection Broker и выберите пункт Configure High Availability .

настройка высокой доступности для RDS Connection Broker

Выберите Dedicated Database Server . Затем нужно указать параметры подключения к SQL Server, на который будет перенесена локальная база RDCB.

Нужно заполнить три поля:

  • DNS name for the RD Connection Broker Cluster : FQDN имя фермы RDCB, для которой мы создавали записи в DNS для Round Robin (в нашем примере это HQRDCB.remontka.loc ). Именно по этому адресу будут обращаться RDP клиенты при подключении к серверам RD Connection Broker;
  • Database Connection String – здесь нужно указать строку подключения с базе на SQL сервере. Формат строки такой: DRIVER=SQL Server Native Client 11.0;SERVER=<SQL Server Name>;Trusted_Connection=Yes;APP=Remote Desktop Services Connection Broker;DATABASE=<DB Name>

    В данном примере SQL Server Name – имя SQL сервера, где нужно создать базу, а DB Name – имя новой базы данных: DRIVER=SQL Server Native Client 11.0;SERVER=srv-rds2.resource.loc;Trusted_Connection=Yes;APP=Remote Desktop Services Connection Broker;DATABASE=RDCB_DB

Строка подключения к базе данных RDCB на SQL Server в высокой доступности

После этого нельзя переключить кластер RD Connection Broker на внутренюю базу Windows Internal Database без полного пересоздания фермы.

На следующем этапе нажмите Configure .

Затем подключитесь к SQL Server с помощью SQL Management Studio и проверьте, что была создана новая база данных RDCB_DB .

создана база RDCB_DB

Вам нужно предоставить обоим серверам RD Connection Broker права на запись в эту базу. Перейдите в Database -> RDCB_DB -> Security -> Users -> New user.

Создайте двух новых пользователей BUILTINRDS Management Servers и remontkaHQ RDS Connection Brokers . Предоставьте этим группам права db_owner и public.

права на базу Connection Broker для RDS

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

Щелкните по иконке RD Connection Broker, и выберите пункт Add RD Connection Broker Server .

добавить второй сервер в RD Connection Broker HA

Укажите имя второго сервера, на котором нужно установить роль Connection Broker и нажмите Next. Теперь в списке хостов фермы RDS появится два сервера с ролью RDCB. Также появится надпись RD Connection Broker (High Available Mode).

На этом настройка High Availability конфигурации Connection Broker завершена.

роли в RDS ферме

Настройка отказоустойчивой конфигурации SQL Server для RD Connection Broker HA

Теперь нужно обеспечить отказоустойчивую конфигурацию для базы данных SQL. Пока она запущена только на одном сервере. Базу данных RD Connection Broker нужно разместить в кластере SQL. Это может быть, как классический Failover Cluster, так и группа высокой доступности SQL Always On.

Базовая настройка Always On в SQL Server 2019 рассмотрена в отдельной статье. Здесь мы только вкратце опишем основные особенности:

  1. Установите роль Failover Clustering и соберите кластер SQL-RDS из двух хостов RDCB со свидетелем с кворумом на любом файловом сервере (описано в статье про Always On кластер чуть выше);
  2. Включите опцию Enable Always On Availability Groups в настройках SQL Server Configuration Manage на обоих серверах; включить Enable Always On Availability Groups в настройках SQL
  3. Запустите New Availability Group Wizard;
  4. Задайте имя Availability Group ( SQL-RDS );
  5. Выберите базу, которую вы хотите поместить в группу высокой доступности ( RDCB_DB ); перенести базу данных RDS Connection Broker в кластер SQL Always On
  6. Добавьте второй сервер SQL в группу высокой доступности, включите опцию Automatic Failover; настройки репликации для базы Connection Broker
  7. На вкладке Listener задайте имя и IP адрес, которое будет использоваться клиентами для подключения к базе данных в группе Always on ( SQL-RDSDB-liste ); создать SQL lictener
  8. Запустите консоль Failover Cluster Manager ( FailoverClusters.SnapInHelper.msc ) и проверьте, что в ролях появился новый ресурс. кластер SQL

Теперь нужно изменить строку подключения к SQL серверу с базой данных RDCB в настройках Connection Broker. Изменить строку подключения можно только из PowerShell.

Set-RDDatabaseConnectionString [-DatabaseConnectionString] <String> [[-ConnectionBroker] <String>] [ <CommonParameters>]

В нашем примере команда для переключения фермы RDCB на SQL базу данных в группе высокой доступности выглядит так:

Set-RDDatabaseConnectionString -ConnectionBroker srv-rds1.remontka.loc -DatabaseConnectionString "DRIVER=SQL Server Native Client 11.0;SERVER= SQL-RDSDB-liste ;Trusted_Connection=Yes;APP=Remote Desktop Services Connection Broker;DATABASE= RDCB_DB "

Set-RDDatabaseConnectionString: изменить строку подключения к базе данных в RDS Conneciton Broker

Если команда не вернула ошибки, значит все OK. И теперь ваш кластер RDS Connection Broker настроен на использование SQL в группе высокой доступности Always On.

Откройте настройки ферму RDS и убедитесь, что теперь для HA используется новая строка подключения (Tasks -> Edit Deployment Properties).

новые настройки базы данных RDCB HA

Итак, мы создали высоко доступный сервис RDS Connection Broker на Windows Server 2022/2019. Вы можете протестировать доступность RDCB, отключив один из серверов фермы RDS. После этого вы можете продолжить настройку фермы RDS, создать сервер лицензирования RDS , добавить RDSH сервера, настроить коллекции, опубликовать приложения, HTML5 веб клиент RDS и т.д.

EnglishRussianUkrainian