В этом руководстве показано, как установить, настроить и обслуживать ферму терминальных серверов на основе Службы удаленных рабочих столов (RDS) роль на Windows Server. Статья поможет вам развернуть службы удаленных рабочих столов на Windows Server 2022, 2019 или 2016 в домене Active Directory.
- Архитектура компонентов служб удаленных рабочих столов (RDS)
- Создание нового развертывания RDS на Windows Server
- Создание коллекций служб удаленных рабочих столов на Windows Server
- Как опубликовать RemoteApps в службах удаленных рабочих столов?
- Как развернуть ферму служб удаленных рабочих столов с помощью PowerShell?
Архитектура компонентов служб удаленных рабочих столов (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
— RDSHmun-rds2.unixs.ru
— РДШmun-rdsman.unixs.ru
— Лицензирование RDSH, RDWA, RDCB и RD
Необходимые условия для создания фермы RDS:
- Установите одну и ту же версию Windows Server на все узлы RDS, настройте их и подключите к домену AD;
- Откройте консоль ADUC (dsa.msc) и переместите все хосты с ролью RDSH в одну и ту же организационную единицу Active Directory OU (Organizational Unit). Таким образом, будет проще применять настройки RDS с помощью GPO;
- Создайте группу безопасности домена Active Directory для серверов RDSH (например, mun-rdsh) и добавьте в него все хосты;
- Если вы хотите использовать User Profile Disks (UPD) для хранения профилей пользователей RDS (или перемещаемых профилей), вам необходимо создать общую сетевую папку на файловом сервере (рекомендуется разместить общую папку на File Server Failover Cluster под управлением Windows Serveer). Предоставить Полный контроль разрешения на общую папку для mun-rdsh группа.
Создание нового развертывания RDS на Windows Server
Давайте посмотрим, как создать и настроить конфигурацию RDS с помощью графического интерфейса Server Manager.
Откройте Менеджер сервера и добавьте в консоль все нужные вам серверы RDS. Нажмите Все серверы -> Добавить серверы.
Щелкните меню Server Manager и выберите Добавить роли и функции -> Установка служб удаленных рабочих столов -> Стандартное развертывание -> Развертывание на основе сеансов.
Затем укажите, какие роли RDS вы хотите назначить своим хостам. Выберите серверы для соответствующих ролей в мастере создания фермы RDS. В моем случае я хочу создать следующую конфигурацию RDS:
- RD Connection Broker —
mun-rdsman
- RD Web Access —
mun-rdsman
- Узлы сеанса RD —
mun-rdsman
,mun-rds1
,mun-rds2
Проверьте Автоматический перезапуск целевого сервера, если требуется и нажмите Развернуть. Подождите, пока роли RDS будут установлены на всех серверах.
Итак, ваша ферма RDS создана.
Следующим шагом будет установка и настройка сервера лицензирования RDS. Вы можете установить RD Licensing роль на одном из серверов вашей фермы или используйте существующий сервер лицензирования RDS в вашем домене. Ознакомьтесь с подробным руководством по установке, настройке и активации роли RD Licensing.
Чтобы управлять развертыванием RDS, откройте Server Manager -> Службы удаленных рабочих столов. Текущая конфигурация фермы RDS отображается на вкладке Обзор.
Чтобы изменить настройки фермы RDS, выберите Задачи -> Редактирование свойств развертывания в разделе Обзор развертывания.
Здесь вы можете изменить:
- Настройки шлюза RD;
- Адрес сервера лицензирования и тип RDS CAL (на пользователя/на устройство);
- URL-адрес веб-доступа View RD;
- Добавьте SSL-сертификаты для RDS (мы пропустим этот шаг в данном руководстве).
Чтобы создать отказоустойчивую ферму служб удаленных рабочих столов, необходимо обеспечить высокую доступность для роли RD Connection Broker. Это достигается путем запуска нескольких экземпляров RDCB (Active/Active) на разных серверах с общей базой данных SQL Server, в которой хранится конфигурация брокера подключений. Вы можете использовать группу высокой доступности SQL Server Always On, чтобы сделать базу данных SQL RDCB высокодоступной. Ранее мы опубликовали подробное руководство по настройке высокодоступного брокера подключений RDS.
Создание коллекций служб удаленных рабочих столов на Windows Server
Следующий шаг — создание коллекций сеансов RDS. Коллекции удаленных рабочих столов позволяют разделить хосты в ферме RDS на отдельные группы или создать разные наборы настроек и доступных приложений Remote Apps для разных групп пользователей.
Перейдите к Коллекции и выберите Редактировать -> Создание коллекции сеансов.
Здесь вам необходимо:
- Указать имя коллекции RDS:
rds-Mun-Managers
; - Выберите, какие хосты RDS будут обслуживать пользователей коллекции (один сервер RDSH может принадлежать одной коллекции, не рекомендуется располагать в одной коллекции хосты с разными версиями Windows Server);
- В Группы пользователей На вкладке укажите группы пользователей, которым разрешено подключаться к коллекции. Удалите Пользователи домена из групп и добавьте свою группу (
mun-Managers
); - На Диск с профилем пользователя вкладка, установите флажок Включить диски пользовательского профиля если вы хотите использовать формат файлов UPD vhdx для хранения профилей пользователей. В Расположение дисков с профилями пользователей поле, укажите UNC-путь к общей папке (например,
\\mun-fs01\munrds_upd
), в которой будут храниться файлы пользовательских профилей в формате UPD, и максимальный размер диска (по умолчанию 20 ГБ). При использовании UPD при входе пользователя на любой узел коллекции RDS всегда будет загружаться его общий профиль;Подробнее о дисках пользовательского профиля в Windows Server RDS в этой статье. - Нажмите Создать для создания новой коллекции RDS;
- Убедитесь, что файл UPD (UVHD-template.vhdx) с шаблоном профиля пользователя создается в указанном каталоге.
Чтобы настроить параметры коллекции RDS, выберите коллекцию и нажмите кнопку Задачи -> Редактировать свойства.
Здесь вы можете изменить основные параметры коллекции (название, описание, группы доступа) и некоторые другие настройки.
На Сессия На вкладке можно настроить параметры повторного подключения/автоматического отключения для неактивных (простаивающих) сеансов RDP (см. раздел Как настроить тайм-аут для сеансов RDP).
В разделе Безопасность На вкладке можно выбрать параметры безопасности (Negotiate, RDP Security level или SSL/TLS) и шифрования (Low, High, Client compatible или FIPS compliant) для сеансов RDP. Здесь можно включить/выключить аутентификацию сетевого уровня (NLA) для RDP.
В разделе Балансировка нагрузки вкладка, вы можете изменить хост RDS Относительный вес в вашей ферме. Если характеристики серверов (RAM, CPU) в коллекции сильно отличаются, необходимо установить меньший вес для хостов с меньшей производительностью. После этого RDCB будет распределять пользовательские сессии между хостами RDS в зависимости от их веса.
Вкладка Client Settings позволяет указать, какие локальные устройства пользователям разрешено перенаправлять в сеансы RDP. Например, вы можете включить или отключить перенаправление принтеров, дисков, аудиоустройств или буфера обмена с локального компьютера пользователя на сеанс RDS.
В Диски с профилем пользователя На вкладке UPD можно выполнить тонкую настройку параметров. Вы можете исключить из синхронизации определенные папки или файлы. Это позволяет уменьшить размер профиля UPD в общей сетевой папке и ускорить загрузку профиля (помните, что он загружается по сети из общей папки при входе пользователя в систему).
Resize-VHD
, которая используется для изменения размера виртуальных VHDX-дисков Hyper-V.Любой сервер RDSH можно перевести в режим обслуживания (RDS Drain Mode) с помощью команды ХОСТ-СЕРВЕРЫ раздел коллекции RDS. Для этого щелкните сервер и выберите Не разрешать новое подключение. Тогда брокер подключений не будет отправлять новые сеансы пользователей на хост RD. В этом режиме можно устанавливать обновления Windows или приложения для обновления на сервере, не затрагивая пользователей.
Здесь также можно добавить/удалить хост RDS из коллекции.
Как опубликовать RemoteApps в Remote Desktop Services?
RemoteApps это программы, опубликованные для пользователей на серверах RDS. Благодаря RemoteApps вы можете использовать приложения, установленные на терминальном RDSH-сервере, так, как будто они запущены на локальном компьютере пользователя. Пользователь не видит весь рабочий стол Windows Server RDS и работает только с теми приложениями, которые опубликовал для него администратор. На компьютере пользователя будет отображаться только окно программы, запущенной на RDS.
RemoteApps создаются в настройках коллекции RDS. Выберите Задачи -> Публикация программ RemoteApp в разделе REMOTEAPP PROGRAMS.
Windows выведет список всех приложений, установленных на текущем хосте RD. Вы можете выбрать одно из них. Если в списке нет нужного вам приложения, но оно установлено на других хостах RDS, щелкните Добавить и укажите полный путь к исполняемому файлу приложения (exe, bat, cmd и т. д.).
Опубликуйте RemoteApp.
Затем вы можете указать дополнительные параметры приложения в настройках RemoteApp.
- Нужно ли показывать опубликованное RemoteApp в веб-интерфейсе RD Web Access;
- Установка параметров запуска (аргументов) для приложения (Параметры командной строки -> Всегда используйте следующие параметры командной строки);
- На Назначение пользователя На вкладке «Назначение пользователей» можно также установить ограничения на запуск приложения пользователем или группой.
Если вы хотите изменить значок опубликованного RemoteApp, откройте следующую папку на сервере с ролью RDS Connection Broker:
C:\Windows\RemotePackages\CPubFarms\rds-Mun-Managers\CPubRemoteApps
Замените значок приложения другим ICO-файлом.
После этого пользователь может запустить программу RemoteApp из RD Web Access (https://mun-rdsman.woshub.com/RDWeb
) или используя специальный файл *.RDP.
Чтобы запустить опубликованную программу 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. В этом примере я установлю роли лицензирования 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 здесь не описываются. Мы покажем, как настраивать эти роли в следующих статьях.