Настройка фермы RDP в Windows Server 2022: установка и балансировка

Архитектура фермы Remote Desktop Services

Ферма RDP (Remote Desktop Services) — это кластер терминальных серверов, работающих как единое целое. Пользователь подключается к одному адресу, а система автоматически направляет его на наименее загруженный сервер. В Windows Server 2022 архитектура RDS включает несколько ключевых ролей.

Основные компоненты фермы:

  • RD Connection Broker — распределяет подключения между серверами, отслеживает сессии и обеспечивает переподключение к существующим сессиям
  • RD Session Host — серверы, на которых непосредственно работают пользователи
  • RD Web Access — веб-портал для запуска приложений и рабочих столов через браузер
  • RD Gateway — обеспечивает безопасный доступ извне через HTTPS (порт 443)
  • RD Licensing — управляет клиентскими лицензиями (CAL)

Для продуктивной среды рекомендуется минимум 3 сервера: один для Connection Broker + Web Access, два для Session Host. При высокой нагрузке Connection Broker разворачивается в режиме High Availability с базой данных SQL Server.

Требования к инфраструктуре

Перед развёртыванием убедитесь, что выполнены следующие требования:

  • Все серверы введены в домен Active Directory
  • DNS-записи настроены для всех узлов фермы
  • Сервера имеют статические IP-адреса
  • Минимум 8 ГБ RAM и 4 vCPU на каждый Session Host (для 25-30 пользователей)
  • Учётная запись для развёртывания состоит в группе Domain Admins и локальных администраторов на всех узлах

Сетевая задержка между узлами фермы не должна превышать 1 мс. Размещайте все серверы в одном сегменте сети или VLAN.

Установка ролей RDS через Server Manager

Развёртывание фермы выполняется централизованно через Server Manager с любого сервера, входящего в домен. Откройте Server Manager, выберите Manage → Add Roles and Features, затем выберите тип установки Remote Desktop Services installation.

Выберите режим Standard deployment — он позволяет распределить роли по разным серверам. Quick Start размещает все роли на одном сервере и не подходит для фермы.

На каждом шаге мастера укажите серверы для соответствующих ролей:

# Пример распределения ролей:
RD-BROKER.domain.local  → Connection Broker, Web Access
RD-HOST01.domain.local  → Session Host
RD-HOST02.domain.local  → Session Host

После завершения мастера серверы будут автоматически перезагружены. Установка занимает 10-15 минут. Проверить статус можно в Server Manager → Remote Desktop Services → Overview.

Установка через PowerShell

Для автоматизации используйте модуль RemoteDesktop:

# Создание сессии развёртывания
New-RDSessionDeployment `
  -ConnectionBroker "RD-BROKER.domain.local" `
  -WebAccessServer "RD-BROKER.domain.local" `
  -SessionHost @("RD-HOST01.domain.local", "RD-HOST02.domain.local")

# Проверка статуса развёртывания
Get-RDServer -ConnectionBroker "RD-BROKER.domain.local"

PowerShell-развёртывание удобно при наличии большого количества серверов или при необходимости повторяемости через скрипты.

Настройка коллекций сессий

Коллекция сессий — это логическая группа серверов Session Host, обслуживающих пользователей с одинаковыми настройками. В ферме может быть несколько коллекций, например: «Бухгалтерия» с 1С и «Менеджеры» с офисными приложениями.

# Создание коллекции
New-RDSessionCollection `
  -CollectionName "Accounting" `
  -SessionHost @("RD-HOST01.domain.local", "RD-HOST02.domain.local") `
  -ConnectionBroker "RD-BROKER.domain.local" `
  -CollectionDescription "Коллекция для бухгалтерии"

# Ограничение доступа группой AD
Set-RDSessionCollectionConfiguration `
  -CollectionName "Accounting" `
  -UserGroup "DOMAIN\RDP-Accounting" `
  -ConnectionBroker "RD-BROKER.domain.local"

Для каждой коллекции настраиваются параметры сессий: таймауты, перенаправление устройств, ограничения по ресурсам.

Параметры таймаутов и отключения

Правильные таймауты критически важны для освобождения ресурсов:

Set-RDSessionCollectionConfiguration `
  -CollectionName "Accounting" `
  -IdleSessionLimitMin 60 `
  -DisconnectedSessionLimitMin 120 `
  -ActiveSessionLimitMin 0 `
  -AutomaticReconnectionEnabled $true `
  -BrokenConnectionAction Disconnect `
  -ConnectionBroker "RD-BROKER.domain.local"

IdleSessionLimitMin — отключение неактивной сессии через 60 минут. DisconnectedSessionLimitMin — завершение отключённой сессии через 2 часа. Значение 0 у ActiveSessionLimitMin означает отсутствие ограничения на время активной работы.

Балансировка нагрузки между серверами

Connection Broker поддерживает два режима балансировки: Round Robin и по весам (Relative Weight). Round Robin распределяет подключения поровну, что не учитывает разницу в мощности серверов.

Режим весов позволяет направлять больше пользователей на более мощные серверы:

# Назначение весов серверам
Set-RDSessionHost `
  -SessionHost "RD-HOST01.domain.local" `
  -NewConnectionAllowed Yes `
  -ConnectionBroker "RD-BROKER.domain.local"

# Через реестр задаём вес (значение 100-999, по умолчанию 100)
# На RD-HOST01 (мощный сервер, 64 ГБ RAM):
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server" `
  -Name "LBWeight" -Value 200

# На RD-HOST02 (стандартный сервер, 32 ГБ RAM):
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server" `
  -Name "LBWeight" -Value 100

После изменения весов перезапустите службу Remote Desktop Services на каждом хосте. Broker будет направлять на RD-HOST01 вдвое больше новых подключений.

Мониторинг распределения нагрузки

Для контроля используйте PowerShell:

# Количество сессий на каждом хосте
Get-RDUserSession -ConnectionBroker "RD-BROKER.domain.local" |
  Group-Object HostServer |
  Select-Object Name, Count |
  Sort-Object Count -Descending

# Детальная информация о сессиях
Get-RDUserSession -ConnectionBroker "RD-BROKER.domain.local" |
  Select-Object UserName, HostServer, SessionState, CreateTime |
  Format-Table -AutoSize

Настройте оповещения при превышении порога в 80% загрузки CPU или RAM на любом хосте — это сигнал о необходимости добавления нового Session Host в коллекцию.

Настройка SSL-сертификатов

Сертификаты необходимы для шифрования подключений и предотвращения предупреждений безопасности у клиентов. В ферме RDS настраиваются четыре типа сертификатов:

  • RD Connection Broker — Enable Single Sign On
  • RD Connection Broker — Publishing
  • RD Web Access
  • RD Gateway (при наличии)

Рекомендуется использовать SAN-сертификат (Subject Alternative Name) с именами всех серверов и DNS-именем фермы:

# Создание запроса на сертификат
$params = @{
  Subject = "CN=rdp.domain.com"
  DnsName = "rdp.domain.com", "RD-BROKER.domain.local", "RD-HOST01.domain.local", "RD-HOST02.domain.local"
  CertStoreLocation = "Cert:\LocalMachine\My"
  KeyLength = 2048
  KeyExportPolicy = "Exportable"
  NotAfter = (Get-Date).AddYears(3)
}
$cert = New-SelfSignedCertificate @params

# Экспорт в PFX для установки на других серверах
$password = ConvertTo-SecureString -String "P@ssw0rd!" -Force -AsPlainText
Export-PfxCertificate -Cert $cert -FilePath "C:\Certs\rdp-farm.pfx" -Password $password

В продуктивной среде используйте сертификат от внутреннего CA (Active Directory Certificate Services) или публичного центра сертификации.

Применение сертификата к ролям

Установите сертификат через Server Manager → Remote Desktop Services → Overview → Tasks → Edit Deployment Properties → Certificates. Или через PowerShell:

# Применение сертификата ко всем ролям
$roles = @("RDRedirector", "RDPublishing", "RDWebAccess", "RDGateway")
foreach ($role in $roles) {
  Set-RDCertificate `
    -Role $role `
    -ImportPath "C:\Certs\rdp-farm.pfx" `
    -Password (ConvertTo-SecureString "P@ssw0rd!" -Force -AsPlainText) `
    -ConnectionBroker "RD-BROKER.domain.local" `
    -Force
}

Лицензирование RDS

Без лицензий Remote Desktop Services работает только 120 дней в grace-period. Для фермы необходимы лицензии RDS CAL (Client Access License) — Per User или Per Device.

Per User — лицензия привязана к учётной записи AD. Пользователь может подключаться с любого количества устройств. Подходит для сотрудников с несколькими устройствами (ПК + ноутбук + планшет).

Per Device — лицензия привязана к устройству. Подходит для сменной работы, когда один компьютер используют несколько сотрудников.

# Установка роли лицензирования
Add-RDServer `
  -Server "RD-BROKER.domain.local" `
  -Role "RDS-LICENSING" `
  -ConnectionBroker "RD-BROKER.domain.local"

# Указание сервера лицензий для развёртывания
Set-RDLicenseConfiguration `
  -LicenseServer "RD-BROKER.domain.local" `
  -Mode PerUser `
  -ConnectionBroker "RD-BROKER.domain.local" `
  -Force

Активируйте сервер лицензий через Remote Desktop Licensing Manager (licmgr.exe) и установите пакеты CAL, полученные через Volume Licensing.

Оптимизация производительности фермы

При большом количестве пользователей необходима тонкая настройка серверов Session Host. Ключевые параметры оптимизации:

# Групповая политика: Computer Configuration → Admin Templates → 
# Windows Components → Remote Desktop Services → 
# Remote Desktop Session Host → Remote Session Environment

# Ограничение глубины цвета для снижения нагрузки на сеть
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" `
  -Name "ColorDepth" -Value 3  # 16 бит

# Отключение визуальных эффектов
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" `
  -Name "fDisableWallpaper" -Value 1
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" `
  -Name "fDisableCam" -Value 1

# Ограничение перенаправления принтеров (частая причина зависаний)
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" `
  -Name "fDisableCpm" -Value 1

Отключайте индексацию Windows Search, службу Superfetch и анимации на серверах Session Host. Используйте UPD (User Profile Disks) вместо роуминг-профилей для ускорения входа.

User Profile Disks

UPD хранят профили пользователей в VHDX-файлах на общем ресурсе. При входе диск подключается автоматически:

# Включение UPD для коллекции
Set-RDSessionCollectionConfiguration `
  -CollectionName "Accounting" `
  -EnableUserProfileDisk `
  -MaxUserProfileDiskSizeGB 10 `
  -DiskPath "\\FileServer\RDS-UPD$" `
  -ConnectionBroker "RD-BROKER.domain.local"

# Проверка NTFS-разрешений на папке
# Группа "RD-HOST01$" и "RD-HOST02$" должны иметь Full Control

Преимущество UPD — пользователь всегда получает свой профиль вне зависимости от того, на какой сервер попадёт при балансировке.

Troubleshooting типичных проблем

При эксплуатации фермы RDS регулярно возникают типовые проблемы. Рассмотрим их диагностику и решение.

Пользователь не переподключается к существующей сессии:

# Проверка, видит ли Broker сессию
Get-RDUserSession -ConnectionBroker "RD-BROKER.domain.local" |
  Where-Object { $_.UserName -eq "ivanov" }

# Если сессия «зависла» — принудительное завершение
Invoke-RDUserLogoff -HostServer "RD-HOST01.domain.local" `
  -UnifiedSessionID 3 -Force

Ошибка «No Remote Desktop License Servers available»:

  • Проверьте, активирован ли сервер лицензий: Get-WmiObject Win32_TSLicenseServer
  • Убедитесь, что порт 135 (RPC) открыт между хостами и сервером лицензий
  • Проверьте принадлежность компьютеров к группе Terminal Server License Servers в AD

Медленный вход: основные причины — тяжёлые GPO, перенаправление принтеров, антивирус сканирующий профиль. Используйте логирование: eventvwr.msc → Applications and Services Logs → Microsoft → Windows → TerminalServices-LocalSessionManager.

Часто задаваемые вопросы

Зависит от характера нагрузки. Для офисной работы (Word, Excel, 1С тонкий клиент) — примерно 25-30 пользователей на сервер с 32 ГБ RAM и 8 vCPU. Для задач с интенсивным потреблением ресурсов (CAD, графика) — 8-12 пользователей. Всегда проводите нагрузочное тестирование перед запуском в продуктив.

Да, добавление нового сервера в коллекцию выполняется «на лету» командой Add-RDSessionHost -SessionHost "RD-HOST03.domain.local" -CollectionName "Accounting" -ConnectionBroker "RD-BROKER.domain.local". Существующие сессии не затрагиваются, новые подключения начнут распределяться на новый сервер автоматически.

В ферме RDS (Session-based) несколько пользователей работают на общем сервере, деля его ресурсы. В VDI (Virtual Desktop Infrastructure) каждый пользователь получает отдельную виртуальную машину. RDS дешевле в лицензировании и проще в управлении, но менее изолирован. VDI подходит, когда нужна полная изоляция или установка несовместимого ПО.

Connection Broker в режиме High Availability требует SQL Server (Express не поддерживается) и общее DNS-имя. Настройка: Set-RDConnectionBrokerHighAvailability -ConnectionBroker "RD-BROKER01.domain.local" -DatabaseConnectionString "DRIVER=SQL Server Native Client 11.0;SERVER=SQL01;..." -ClientAccessName "rdp.domain.com". Второй брокер добавляется через Add-RDServer.

Нужна помощь с настройкой?

Специалисты АйТи Фреш помогут с внедрением и настройкой — 15+ лет опыта, обслуживание от 15 000 ₽/мес

📞 Связаться с нами
#ферма RDP#Windows Server 2022#Remote Desktop Services#Connection Broker#балансировка RDP#RDS ферма#терминальный сервер#лицензирование RDS
Комментарии 0

Оставить комментарий

загрузка...