В этой статье мы рассмотрим процесс переноса (миграции) ролей 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 можно у нас в магазине от 1190 ₽
Скачать дистрибутивы Windows Server можно у нас в каталоге.
— При обновлении версии Windows Server нужно начинать с хоста с ролью RD Connection Broker.
— Если у вас используется высоко-доступная роль RD Connection Broker, то для переноса достаточно оставить в кластере один хост с этой ролью, выполнить обновление Windows Server, затем обновить другие серверы и добавить их в кластер.
— В одной терминальной ферме могут находиться хосты RDSH с разными версиями Windows Server (2019/2016/2012R2), но в одной коллекции RDS рекомендуется использовать хосты с одной версией Windows Server.
— Сервера с предыдущими версиями Windows могут использовать Connection Broker с более новой версией (например, RDSH хосты с WS2012R2 и WS2016 могут использовать RD Connection Broker на WS2019, но не наоборот).
— Не забудьте установить сервер лицензирования RDS на более новой версии и активировать новые RDS CAL при обновлении версий Windows Server на RDSH хостах.
В нашем случае у нас есть два сервера RDS на Windows Server 2012 R2:
— Rds2 – с ролями RD Connection Broker, Web Access и RDSH.
— Rds1 – с ролью RDSH.
Для миграции настроек мы будем использовать PowerShell. Текущее распределение ролей в RDS можно вывести через Server Manager или с помощью PowerShell:
Get-RDServer
Подготовьте новый хост с Windows Server 2019 и установите на него роли RD Connection Broker и RD Licensing (если требуется).
Для экспорта/импорта настроек RDCB используется модуль ExportImportRdsDeployment из PowerShell Gallery.
По умолчанию RDCB для хранения настроек использует локальную базу SQL (Windows Internal Database), хранящаяся на локальном диске сервера RD Connection Broker в каталоге C:\Windows\rdcbDb\.
Установите модуль из галереи скриптов 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 чтобы обновить версию 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:\ps\rdsoldcol.xml –Verbose
Теперь экспортируем конфигурацию RDS, включая список серверов в развертывании:
Export-RDDeploymentFromConnectionBroker -ConnectionBroker localhost -XMLFile c:\ps\rdsdeployment.xml -Verbose
Если используются wildcard сертификаты, экспортируйте их в формате .pfx с паролем.
Скопируйте XML файлы на новый сервер с Windows Server 2019. Установите модуль ExportImportRdsDeployment на новом сервере:
Install-Module ExportImportRdsDeployment -Force
В этом примере мы переносим RDS конфигурацию без сертификатов, поэтому указали несуществующие файлы. Если у вас используются сертификаты в RDS развертывании, укажите пути и пароли.
Теперь выполните следующие команды:
$RDGatewayCertPath = "C:\\Temp\\noсert.pfx"
$RDWebAccessCertPath = "C:\\Temp\\noсert.pfx"
$RDRedirectorCertPath = "C:\\Temp\\noсert.pfx"
$RDPublishingCertPath = "C:\\Temp\\noс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:\ps\rdsdeployment.xml -RDGatewayCertPath $RDGatewayCertPath -RDGatewayCertPassword $RDGatewayCertPassword -RDWebAccessCertPath $RDWebAccessCertPath -RDWebAccessCertPassword $RDWebAccessCertPassword -RDRedirectorCertPath $RDRedirectorCertPath -RDRedirectorCertPassword $RDRedirectorCertPassword -RDPublishingCertPath $RDPublishingCertPath -RDPublishingCertPassword $RDPublishingCertPassword -Verbose
Если у вас не используются сертификаты для RDS, то в скрипте появится предупреждение о том, что файлы не найдены. Проигнорируйте эту ошибку.
Выполните команду Get-RDServer и убедитесь, что роль RD Connection Broker теперь на новом сервере.
Импортируйте RDS коллекции:
Import-RDCollectionsToConnectionBroker -ConnectionBroker localhost -XmlFile "C:\PS\rdsoldcol.xml" -Verbose
Удалите роль RDCB на предыдущем сервере (Windows Server 2012 R2) с помощью Server Manager или команды:
Remove-WindowsFeature RDS-Connection-Broker
1. Установите роль RDS-Web-Access на новом сервере:
Install-WindowsFeature RDS-Web-Access
2. Используйте Microsoft Web Deploy для переноса настроек сайта RDWeb. Скачайте и установите пакет WebDeploy_amd64_en-US на оба сервера (старый и новый). Затем выполните команды:
Для офлайн переноса настроек сайта можно использовать такие команды:
cd "C:\Program Files (x86)\IIS\Microsoft Web Deploy V3"
На исходном сервере:
msdeploy -verb:sync -source:apphostconfig="Default Web Site" -dest:archivedir=c:\ps\rdweb
На целевом сервере:
msdeploy -verb:sync -source:archivedir=c:\ps\rdweb -dest:appHostConfig="Default Web Site"
3. Проверьте, что все кастомные настройки IIS, включая форму смены пароля на RD Web Access, успешно перенесены.
Заключение
В этой статье мы рассмотрели, как выполнить миграцию ролей RD Connection Broker и RD Web Access с одного сервера на другой, используя PowerShell и Web Deploy. Этот процесс полезен при обновлении серверов или перемещении ключевых RDS ролей на новые серверы.