Перенос ролей RDS Connection Broker и RD Web Access на другой сервер

Перенос ролей RDS Connection Broker и RD Web Access на другой сервер

В этой статье мы рассмотрим процесс переноса (миграции) ролей Remote Desktop Connection Broker и RDS Web Access на другой сервер. Это сценарий можно использовать, если вы хотите мигрировать роли RDS на новую версию Windows Server или, когда нужно перенести ключевые RDS роли на другие сервера. В этом примере мы будем мигрировать роль RD Connection Broker с Windows Server 2012 R2 на Windows Server 2019. Также рассмотрим особенности переноса роли RD Web Access.

Некоторые ограничения по совместимости версий Windows Server в ферме RDS:

  • При обновлении версии Windows Server нужно начинать с хоста с ролью RD Connection Broker;
    Если у вас используется высоко-доступная роль RD Connection Broker, то для переноса достаточно оставить в кластере один хост с ролью Connection Broker, выполнить in-place upgrade версии Windows Server, затем обновить другие сервера и добавить их в кластер.
  • В одной терминальной ферме могут находиться хосты RDSH с разными версиями Windows Server (2019/2016/2012R2). Но в одной коллекции RDS рекомендуется использовать хосты с одной версией Windows Server. Это значит, что вы можете сделать две RDS коллекции, например, одна с Windows Server 2019 хостами, а другая с Windows Server 2012 R2;
  • Сервера с предыдущими версиями Windows сервер могут использовать Connection Broker с более новой версией (т.е. RDSH хосты с WS2012R2 и WS2016 могут использовать RD Connection Broker на WS2019, но не наоборот);
  • При обновлении версии Windows Server на RDSH хостах не забудьте установить сервер лицензирования RDS на более новой версии и активировать новые RDS CAL;

В нашем случае у нас есть два сервера RDS на Windows Server 2012 R2:

  • Rds2 – с ролями RD Connection Broker, Web Access и RDSH
  • Rds1– с ролью RDSH
Можно использовать данный гайд для миграции отдельно стоящего RDSH сервера.

Текущее распределение ролей в RDS можно вывести через Server Manager или с помощью PowerShell:

Get-RDServer

текущая конфигурация RDS на двух серверах

Задача: перенести все Connection Broker с настроенными RemoteApp и RDS коллекциями на новый Windows Server 2019 (in-place upgrade не применим).

Подготовь новый хост с Windows Server 2019 и установите на него роли RD Connection Broker и RD Licensing (если нужно).

В Windows Server нет встроенных инструментов для простого переноса настроенных ролей RDS между серверами.

Для экспорта/импорта текущих настроек RDCB можно воспользоваться модулем ExportImportRdsDeployment из PowerShell Gallery.

По умолчанию RDCB для хранения настроек использует локальную базу SQL (Windows Internal Database), хранящаяся на локальном диске сервера RD Connection Broker в каталоге C:WindowsrdcbDb.

Установите модуль ExportImportRdsDeployment из галереи скриптов PowerShell (также можно установить PowerShell модуль в офлайн режиме):

Install-Module ExportImportRdsDeployment -Force
Import-Module ExportImportRdsDeployment

Если в Windows Server 2012 R2 не установлен Windows Management Framework 5.1 (включает в себя версию Windows PowerShell 5.1), то при выполнении команды появится ошибка:
Install-Module : The term 'Install-Module' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.

Скачайте и установите KB3191564 (https://www.microsoft.com/en-us/download/details.aspx?id=54616) чтобы обновить версию PowerShell до 5.1.

Если при запуске команды появляется ошибка Install-Module: Unable to download from URI, нужно включить использование TLS 1.2 для подключения:

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

Экспортируйте RDS коллекции в XML файл:

Export-RDCollectionsFromConnectionBroker -ConnectionBroker localhost –XMLFile c:psrdsoldcol.xml –verbose

Export-RDCollectionsFromConnectionBroker экспорт коллекций RDConnectin Broker

Теперь нужно экспортировать вашу конфигурацию RDS (включая список серверов в deployment):

Export-RDDeploymentFromConnectionBroker -ConnectionBroker localhost –XMLFile c:psrdsdeployment.xml -Verbose

Если на старом RDS сервере используются wildacard сертфикаты, нужно экспорировать их в формате pfx (с паролем).

Скопируйте оба файла на новый RDS сервер с Windows Server 2019. Также установите модуль:

Install-Module ExportImportRdsDeployment -Force

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

Теперь выполните следующие команды:

$RDGatewayCertPath = "C:Tempnoсert.pfx"
$RDWebAccessCertPath = "C:Tempnoсert.pfx"
$RDRedirectorCertPath = "C:Tempnoсert.pfx"
$RDPublishingCertPath = "C:Tempnoсert.pfx "
$RDGatewayCertPassword = ConvertTo-SecureString -String "nopass" -AsPlainText -Force
$RDWebAccessCertPassword = ConvertTo-SecureString -String "nopass" -AsPlainText -Force
$RDRedirectorCertPassword = ConvertTo-SecureString -String "nopass" -AsPlainText -Force
$RDPublishingCertPassword = ConvertTo-SecureString -String "nopass" -AsPlainText -Force
Import-RDDeploymentToConnectionBroker -ConnectionBroker localhost -XmlFile c:psrdsdeployment.xml -RDGatewayCertPath $RDGatewayCertPath -RDGatewayCertPassword $RDGatewayCertPassword -RDWebAccessCertPath $RDWebAccessCertPath -RDWebAccessCertPassword $RDWebAccessCertPassword -RDRedirectorCertPath $RDRedirectorCertPath -RDRedirectorCertPassword $RDRedirectorCertPassword -RDPublishingCertPath $RDPublishingCertPath -RDPublishingCertPassword $RDPublishingCertPassword -Verbose

перенос конфигурации RDS на новый сервер с помощью PowerShell

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

Выполните команду
Get-RDServer
и убедитесь, что роль RD Connection Broker теперь на новом сервере.

Get-RDServer роль RDS-CONNECTION-BROKER перенесена на новый сервер

Импортируйте RDS коллекции:

Import-RDCollectionsToConnectionBroker -ConnectionBroker localhost -XmlFile "C:PSrdsoldcol.xml" -Verbose

Проверьте, что в консоли управления RDS появились все коллекции с настроенными правами и RemoteApps.

перенос RDS коллекций

Удалите роль RDCB на предыдущем хосте WS2012R2 с помощью Server Manager или команды Remove-WindowsFeature:

Remove-WindowsFeature RDS-Connection-Broker

удалить роль RDS-Connection-Broker

Есть нюансы при перенос настроенной роли RD Web Access Server. Если вы мигрируете роль RDWebAccess между разными версиями Windows Server (с разными версиями IIS), нужно переносить настройки вручную.

Установите роль RDS-Web-Access и добавьте новый сервер в вашу RDS ферму:

Install-WindowsFeature RDS-Web-Access

d0bfd0b5d180d0b5d0bdd0bed181 d180d0bed0bbd0b5d0b9 rds connection broker d0b8 rd web access d0bdd0b0 d0b4d180d183d0b3d0bed0b9 d181d0b5d180d0b2d0b5 65d21a1609685

Импортируйте сертификаты (если нужно).

Для миграции настроек сайта RDWeb между серверами с одной версией Windows Server можно использовать Microsoft Web Deploy v3.6.

Скачайте и установите пакет WebDeploy_amd64_en-US (https://www.microsoft.com/en-us/download/details.aspx?id=43717) на обоих хостах.

Для офлайн переноса настроек сайта можно использовать такие команды:

cd "C:Program Files (x86)IISMicrosoft Web Deploy V3"

На исходном хосте:

msdeploy -verb:sync -source:apphostconfig="Default Web Site" -dest:archivedir=c:psrdweb

На целевом хосте:

msdeploy -verb:sync -source:archivedir=c:psrdweb -dest:appHostConfig="Default Web Site"

Убедитесь, что ваши кастомные настройки IIS применились (в том числе форма смены истекшего пароля на RDS Web access). Аналогичным образом можно перенести роль Remote Desktop Gateway.

Если у вас изменился адрес URL адрес сервера Web Access, не забудьте изменить его в политиках прозрачной авторизации RDS SSO.

Windows Server 2012 R2
Перенос ролей RDS Connection Broker и RD Web Access на другой сервер