В этом руководстве показано, как установить, настроить и обслуживать ферму терминальных серверов на основе Службы удаленных рабочих столов (RDS) роль на Windows Server. Статья поможет вам развернуть службы удаленных рабочих столов на Windows Server 2022, 2019 или 2016 в домене Active Directory.

Архитектура компонентов служб удаленных рабочих столов (RDS)

Роль RDS в Windows Server включает следующие компоненты:

  • Хост сеанса удаленного рабочего стола (RDSH) — хосты сеансов RDS. Это основные рабочие лошадки фермы RDS, на которых запускаются пользовательские приложения;
  • Брокер подключений к удаленным рабочим столам (RDCB) — брокер соединений RDS. Он используется для управления фермой RDS, распределения рабочей нагрузки, повторного подключения пользователей к их сеансам, хранения настроек коллекции RDS и опубликованных RemoteApps;
  • Шлюз удаленных рабочих столов (RDGW) — обеспечивает безопасный доступ к ферме RDS из Интернета;
  • RD Web Access (RDWA) — веб-интерфейс для доступа к удаленным рабочим столам и RemoteApps;
  • Лицензирование удаленных рабочих столов (RD Licensing) — служба лицензирования для управления лицензиями RDS (CALs).

В нашем небольшом развертывании RDS есть только три узла Windows Server со следующими ролями:

  • mun-rds1.unixs.ru — RDSH
  • mun-rds2.unixs.ru — РДШ
  • mun-rdsman.unixs.ru — Лицензирование RDSH, RDWA, RDCB и RD
В самом простом случае можно развернуть отдельный сервер с ролью Remote Desktop Session Host (RDSH) без брокера подключений и RDS Web Access.

Необходимые условия для создания фермы RDS:

  1. Установите одну и ту же версию Windows Server на все узлы RDS, настройте их и подключите к домену AD;
  2. Откройте консоль ADUC (dsa.msc) и переместите все хосты с ролью RDSH в одну и ту же организационную единицу Active Directory OU (Organizational Unit). Таким образом, будет проще применять настройки RDS с помощью GPO;
  3. Создайте группу безопасности домена Active Directory для серверов RDSH (например, mun-rdsh) и добавьте в него все хосты;
  4. Если вы хотите использовать User Profile Disks (UPD) для хранения профилей пользователей RDS (или перемещаемых профилей), вам необходимо создать общую сетевую папку на файловом сервере (рекомендуется разместить общую папку на File Server Failover Cluster под управлением Windows Serveer). Предоставить Полный контроль разрешения на общую папку для mun-rdsh группа.

Создание нового развертывания RDS на Windows Server

Давайте посмотрим, как создать и настроить конфигурацию RDS с помощью графического интерфейса Server Manager.

Откройте Менеджер сервера и добавьте в консоль все нужные вам серверы RDS. Нажмите Все серверы -> Добавить серверы.

Добавление узла Windows Server в развертывание RDS

Щелкните меню Server Manager и выберите Добавить роли и функции -> Установка служб удаленных рабочих столов -> Стандартное развертывание -> Развертывание на основе сеансов. Стандартное развертывание RD

Быстрый старт режим используется для развертывания всех ролей RDS на одном сервере. В ферме RDS может быть только один сервер, на котором работают все роли RDS (RD Session Host, RD Web Access и RD Connection broker). Однако такая конфигурация не обеспечивает отказоустойчивость и балансировку рабочей нагрузки в службах удаленных рабочих столов Windows Server.

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

  • RD Connection Broker mun-rdsman
  • RD Web Accessmun-rdsman
  • Узлы сеанса RDmun-rdsman, mun-rds1, mun-rds2

Выберите сервер брокера подключений RD

Роли RDS можно распределить между серверами в любой другой конфигурации.

Проверьте Автоматический перезапуск целевого сервера, если требуется и нажмите Развернуть. Подождите, пока роли RDS будут установлены на всех серверах. Развертывание ролей службы удаленных рабочих столов на узлах WIndows Server

Итак, ваша ферма RDS создана.

Следующим шагом будет установка и настройка сервера лицензирования RDS. Вы можете установить RD Licensing роль на одном из серверов вашей фермы или используйте существующий сервер лицензирования RDS в вашем домене. Ознакомьтесь с подробным руководством по установке, настройке и активации роли RD Licensing.

Чтобы управлять развертыванием RDS, откройте Server Manager -> Службы удаленных рабочих столов. Текущая конфигурация фермы RDS отображается на вкладке Обзор.

Чтобы изменить настройки фермы RDS, выберите Задачи -> Редактирование свойств развертывания в разделе Обзор развертывания.

Редактирование свойств развертывания RDS через диспетчер сервера на Windows Server 2019

Здесь вы можете изменить:

  • Настройки шлюза RD;
  • Адрес сервера лицензирования и тип RDS CAL (на пользователя/на устройство);
  • URL-адрес веб-доступа View RD;
  • Добавьте SSL-сертификаты для RDS (мы пропустим этот шаг в данном руководстве).

Настройка параметров лицензирования RD

Управлять фермой можно через узел RDCB. Конфигурация фермы RDS хранится в базе данных SQL Server. При желании можно вручную перенести роль и конфигурацию RDS Connection Broker на другой сервер.

Чтобы создать отказоустойчивую ферму служб удаленных рабочих столов, необходимо обеспечить высокую доступность для роли RD Connection Broker. Это достигается путем запуска нескольких экземпляров RDCB (Active/Active) на разных серверах с общей базой данных SQL Server, в которой хранится конфигурация брокера подключений. Вы можете использовать группу высокой доступности SQL Server Always On, чтобы сделать базу данных SQL RDCB высокодоступной. Ранее мы опубликовали подробное руководство по настройке высокодоступного брокера подключений RDS.

Создание коллекций служб удаленных рабочих столов на Windows Server

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

Перейдите к Коллекции и выберите Редактировать -> Создание коллекции сеансов.

Создание коллекции сеансов RDS

Здесь вам необходимо:

  1. Указать имя коллекции RDS: rds-Mun-Managers;
  2. Выберите, какие хосты RDS будут обслуживать пользователей коллекции (один сервер RDSH может принадлежать одной коллекции, не рекомендуется располагать в одной коллекции хосты с разными версиями Windows Server); Добавить хосты сеансов RD в коллекцию
  3. В Группы пользователей На вкладке укажите группы пользователей, которым разрешено подключаться к коллекции. Удалите Пользователи домена из групп и добавьте свою группу (mun-Managers);
  4. На Диск с профилем пользователя вкладка, установите флажок Включить диски пользовательского профиля если вы хотите использовать формат файлов UPD vhdx для хранения профилей пользователей. В Расположение дисков с профилями пользователей поле, укажите UNC-путь к общей папке (например, \\mun-fs01\munrds_upd ), в которой будут храниться файлы пользовательских профилей в формате UPD, и максимальный размер диска (по умолчанию 20 ГБ). При использовании UPD при входе пользователя на любой узел коллекции RDS всегда будет загружаться его общий профиль;Включение дисков с пользовательскими профилями
    Подробнее о дисках пользовательского профиля в Windows Server RDS в этой статье.
  5. Нажмите Создать для создания новой коллекции RDS;
  6. Убедитесь, что файл UPD (UVHD-template.vhdx) с шаблоном профиля пользователя создается в указанном каталоге.

Чтобы настроить параметры коллекции RDS, выберите коллекцию и нажмите кнопку Задачи -> Редактировать свойства.

редактировать параметры коллекции rds

Здесь вы можете изменить основные параметры коллекции (название, описание, группы доступа) и некоторые другие настройки.

На Сессия На вкладке можно настроить параметры повторного подключения/автоматического отключения для неактивных (простаивающих) сеансов RDP (см. раздел Как настроить тайм-аут для сеансов RDP).

Настройка тайм-аута и параметров повторного подключения сеансов RDS

В разделе Безопасность На вкладке можно выбрать параметры безопасности (Negotiate, RDP Security level или SSL/TLS) и шифрования (Low, High, Client compatible или FIPS compliant) для сеансов RDP. Здесь можно включить/выключить аутентификацию сетевого уровня (NLA) для RDP.

Здесь описана настройка сертификатов SSL/TLS для защиты RDP-соединений.

Настройки безопасности и шифрования на RDS

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

настройка относительного веса на windows server rds

Вкладка Client Settings позволяет указать, какие локальные устройства пользователям разрешено перенаправлять в сеансы RDP. Например, вы можете включить или отключить перенаправление принтеров, дисков, аудиоустройств или буфера обмена с локального компьютера пользователя на сеанс RDS.

RDS: разрешить перенаправление локальных устройств

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

Настраивать и использовать UPD проще, чем перемещаемые профили или перенаправление папок. Нельзя использовать один и тот же профиль UPD в нескольких коллекциях RDS.

настройка пользовательских профилей на дисках rds

Чтобы уменьшить размер диска пользовательского UPD, можно воспользоваться встроенной командой PowerShell Resize-VHD, которая используется для изменения размера виртуальных VHDX-дисков Hyper-V.

Любой сервер RDSH можно перевести в режим обслуживания (RDS Drain Mode) с помощью команды ХОСТ-СЕРВЕРЫ раздел коллекции RDS. Для этого щелкните сервер и выберите Не разрешать новое подключение. Тогда брокер подключений не будет отправлять новые сеансы пользователей на хост RD. В этом режиме можно устанавливать обновления Windows или приложения для обновления на сервере, не затрагивая пользователей.

RDS - не разрешать новые подключения

Здесь также можно добавить/удалить хост RDS из коллекции.

Если сервер RD Session Host вышел из строя, его можно правильно удалить из развертывания служб удаленных рабочих столов, следуя этому руководству.

Как опубликовать RemoteApps в Remote Desktop Services?

RemoteApps это программы, опубликованные для пользователей на серверах RDS. Благодаря RemoteApps вы можете использовать приложения, установленные на терминальном RDSH-сервере, так, как будто они запущены на локальном компьютере пользователя. Пользователь не видит весь рабочий стол Windows Server RDS и работает только с теми приложениями, которые опубликовал для него администратор. На компьютере пользователя будет отображаться только окно программы, запущенной на RDS.

Если вы не создадите RemoteApps, пользователи будут работать непосредственно на рабочем столе Windows Server. Поэтому не забудьте скопировать ярлыки приложений, которые могут понадобиться пользователю для C:\Users\Public\Desktop. Файлы из этой папки будут отображаться на рабочих столах всех пользователей. Если вы хотите установить MS Office 365 на RDSH, обратите внимание, что Office должен быть развернут в режиме SharedComputerLicensing.

RemoteApps создаются в настройках коллекции RDS. Выберите Задачи -> Публикация программ RemoteApp в разделе REMOTEAPP PROGRAMS.

Публикация программ RemoteApp на сервере RDS Windows Server

Windows выведет список всех приложений, установленных на текущем хосте RD. Вы можете выбрать одно из них. Если в списке нет нужного вам приложения, но оно установлено на других хостах RDS, щелкните Добавить и укажите полный путь к исполняемому файлу приложения (exe, bat, cmd и т. д.).

выберите программу remoteapp

Опубликуйте RemoteApp.

Затем вы можете указать дополнительные параметры приложения в настройках RemoteApp.

  • Нужно ли показывать опубликованное RemoteApp в веб-интерфейсе RD Web Access;
  • Установка параметров запуска (аргументов) для приложения (Параметры командной строки -> Всегда используйте следующие параметры командной строки);
  • На Назначение пользователя На вкладке «Назначение пользователей» можно также установить ограничения на запуск приложения пользователем или группой.

настройка свойств удаленного приложения в настройках коллекции rds

Если вы хотите изменить значок опубликованного RemoteApp, откройте следующую папку на сервере с ролью RDS Connection Broker:

C:\Windows\RemotePackages\CPubFarms\rds-Mun-Managers\CPubRemoteApps

изменить значок rds remoteapp

Замените значок приложения другим ICO-файлом.

После этого пользователь может запустить программу RemoteApp из RD Web Access (https://mun-rdsman.woshub.com/RDWeb) или используя специальный файл *.RDP.

rd web access run remoteapp

Вы можете настроить прозрачную аутентификацию в RDS Web Access с помощью SSO (Single Sign-On).

Чтобы запустить опубликованную программу RemoteApp, необходимо добавить в файл RDP следующие строки:

remoteapplicationmode:i:1
remoteapplicationname:s:putty
remoteapplicationprogram:s:"C:\Tools\putty.exe"
disableremoteappcapscheck:i:1
alternate shell:s:rdpinit.exe

Несколько полезных советов по удобному использованию фермы RDS:

  • Вы можете настроить поддержку HTML5 для роли RDWeb Access. Это позволит пользователям подключаться к серверам RDS с помощью любого браузера или ОС даже без клиента RDP;
  • На сервере RD Web Access можно опубликовать ссылку для изменения пароля пользователя с истекшим сроком действия (по умолчанию, если включена NLA, вы не сможете аутентифицироваться на RDSH с истекшим паролем пользователя Active Directory);
  • Руководство пользователя по изменению пароля в сеансе RDP;
  • Администратор может использовать соединения RD Session Shadow для подключения/просмотра рабочего стола пользовательского сеанса на сервере RDS;
  • Чтобы быстро найти, на каких серверах RDS есть сеансы определенного пользователя, можно использовать PowerShell:
    Import-Module RemoteDesktop
    Get-RDUserSession -ConnectionBroker mun-rdsman.woshub.com | where {$_.UserName -eq "a.muller"} | Select HostServer
  • Для просмотра журналов RDP-соединений можно использовать сценарии PowerShell;
  • Для обеспечения дополнительной безопасности можно включить двухфакторную аутентификацию (2FA) для пользователей на хостах Windows RDS с помощью инструментов сторонних производителей.

Как развернуть ферму служб удаленных рабочих столов с помощью PowerShell?

Если вы четко видите структуру фермы RDS, вы можете быстро развернуть свою конфигурацию RDS с помощью PowerShell.

Для создания фермы RDS на другом сервере лучше выполнить следующие команды PowerShell, поскольку вам придется перезапускать управляемые узлы RDS.

Задайте имена серверов в ферме RDS. В этом примере я установлю роли лицензирования RDCB и RDS на отдельные серверы (позже рекомендуется включить высокодоступную конфигурацию RDCB).

$RDSH1 = "mun-rds1.unixs.ru"
$RDSH2 = "mun-rds2.unixs.ru"
$RDSCB = "mun-rdcb.unixs.ru"
$RDSGW = "mun-rdsgw.unixs.ru"
Import-Module RemoteDesktop

Установите роли RDS на серверы:

Add-WindowsFeature –ComputerName $RDSH1, $RDSH2 -Name RDS-RD-Server –IncludeManagementTools
Add-WindowsFeature –ComputerName $RDSCB -Name RDS-Connection-Broker -IncludeManagementTools
Add-WindowsFeature –ComputerName $RDSGW -Name RDS-Web-Access, RDS-Gateway –IncludeManagementTools

Перезапустите все узлы:

Restart-Computer -ComputerName $RDSH1,$RDSH2,$RDSCB,$RDSGW

Создайте новый экземпляр RDSessionDeployment:

New-RDSessionDeployment -ConnectionBroker $RDSCB -SessionHost $RDSH1,$RDSH2 –Verbose

Добавьте серверы RDWA и RDGW в свою ферму:

Add-RDServer -Server $RDSGW -Role RDS-WEB-ACCESS -ConnectionBroker $RDSCB
Add-RDServer -Server $RDSGW -Role RDS-GATEWAY -ConnectionBroker $RDSCB -GatewayExternalFqdn "rds.woshub.com"

Вы можете перечислить роли RDS и имена хостов в вашей ферме:

Get-RDServer -ConnectionBroker $RDSGW

Установите роль RDS Licensing с помощью команды Add-WindowsFeatures:

Add-WindowsFeature –ComputerName $RDSCB -Name RDS-Licensing, RDS-Licensing-UI

Установите режим лицензирования PerUser RDS:

Invoke-Command -ComputerName $RDSCB -ScriptBlock {Set-RDLicenseConfiguration -Mode PerUser -LicenseServer $RDSCB -ConnectionBroker $RDSCB}
Add-RDServer -Server $RDSCB -Role RDS-LICENSING -ConnectionBroker $RDSCB

Добавьте сервер лицензирования в группу безопасности домена:
Add-ADGroupMember "Terminal Server License Servers" -Members "mun-rdcb$"

Если у вас есть сертификат для RDS, вы можете добавить его в конфигурацию фермы (вы можете использовать бесплатный SSL-сертификат Let’s Encrypt для хоста RDS):

$Path = "C:\ps\RDSCert.pfx"
$Password = ConvertTo-SecureString -String "setCertificPAssw00rd11-" -AsPlainText -Force
Set-RDCertificate -Role RDGateway -ImportPath $Path -Password $Password -ConnectionBroker $RDSCB -Force
Set-RDCertificate -Role RDWebAccess -ImportPath $Path -Password $Password -ConnectionBroker $RDSCB -Force
Set-RDCertificate -Role RDPublishing -ImportPath $Path -Password $Password -ConnectionBroker $RDSCB -Force
Set-RDCertificate -Role RDRedirector -ImportPath $Path -Password $Password -ConnectionBroker $RDSCB -Force

Чтобы получить информацию об установленных SSL-сертификатах:

Get-RDCertificate

Затем можно создавать коллекции RDS:

$CollectionName = "ITdept"
New-RDSessionCollection –CollectionName $CollectionName –SessionHost $RDSH1,$RDSH2 –ConnectionBroker $RDSCB –CollectionDescription “IT department management collection”

Чтобы разрешить доступ к серверам RDS для групп:

$UserGroup =@("WOSHUB\mun-admins","WOSHUB\mun-devops")
Set-RDSessionCollectionConfiguration -CollectionName $CollectionName -UserGroup $UserGroup

Публикация программы RemoteApp:

New-RDRemoteapp -Alias GoogleChrome -DisplayName GoogleChrome -FilePath "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" -ShowInWebAccess 1 -CollectionName $CollectionName -ConnectionBroker $RDSCB

В этой статье мы рассмотрели, как установить и настроить ферму служб удаленных рабочих столов на Windows Server 2019/2022 с помощью графического интерфейса Server Manager и PowerShell. Роли RD Web Access и RD Gateway здесь не описываются. Мы покажем, как настраивать эти роли в следующих статьях.