Настройка фермы RDP на Windows Server: RDS Deployment под 50+ пользователей
Я Семёнов Евгений, директор АйТи Фреш. Терминальный доступ я настраиваю с 2008-го сервера, а первая полноценная ферма у меня была в 2012 году — три Session Host, Connection Broker в HA и Gateway для удалённых сотрудников. За 15+ лет паттерн собрался в стандартный шаблон, который я разворачиваю за 3–5 рабочих дней под задачу «пустите людей работать с домашних ноутбуков в корпоративной среде».
Из чего состоит ферма RDS
RDS — это не одна роль, а комплект из пяти:
- RD Session Host — сами терминальные серверы, на которых работают пользователи.
- RD Connection Broker — балансировщик сессий, хранит их состояние.
- RD Licensing — выдача RDS CAL, иначе ферма работает 120 дней.
- RD Gateway — публикация RDP через HTTPS для внешних клиентов.
- RD Web Access — портал для выдачи .rdp-файлов и опубликованных приложений.
Минимальная жизнеспособная конфигурация — два сервера: на одном Session Host + Web Access + Broker, на втором — второй Session Host + Licensing + Gateway. Но я всегда рекомендую три машины, если не хочется терять людей при падении одной.
Аппаратные требования
| Роль | CPU | RAM | Диск |
|---|---|---|---|
| Session Host (офисные) | 8 vCPU | 32 ГБ | 200 ГБ SSD |
| Session Host (1С, САПР) | 12 vCPU | 64 ГБ | 300 ГБ NVMe |
| Connection Broker | 4 vCPU | 8 ГБ | 80 ГБ |
| Gateway + Web Access | 4 vCPU | 8 ГБ | 100 ГБ |
| Licensing | 2 vCPU | 4 ГБ | 60 ГБ |
У нас на практике лучше всего себя показывает железо Dell на Xeon Platinum 8280 с 40G Mellanox-межблочной сетью — латентность RDP падает до человеческих значений даже при большом количестве одновременных сессий.
Базовое развёртывание через Deployment Wizard
Все серверы должны быть в домене и иметь одинаковые часовые пояса. В Server Manager на будущем Broker-е: Add Roles → Remote Desktop Services Installation → Standard Deployment → Session-based Desktop Deployment. Указываем серверы для Broker, Web Access и Session Host. Мастер сам всё раскидает по ролям.
# То же самое через PowerShell
New-RDSessionDeployment `
-ConnectionBroker rdb01.corp.example.ru `
-WebAccessServer rdb01.corp.example.ru `
-SessionHost rdsh01.corp.example.ru, rdsh02.corp.example.ru
# Добавление Licensing
Add-RDServer -Role RDS-Licensing -Server rdlic01.corp.example.ru `
-ConnectionBroker rdb01.corp.example.ru
# Добавление Gateway
Add-RDServer -Role RDS-Gateway -Server rdgw01.corp.example.ru `
-ConnectionBroker rdb01.corp.example.ru `
-GatewayExternalFqdn rds.example.ru
Коллекции сеансов и распределение нагрузки
Коллекция (Session Collection) — это группа Session Host с общими настройками и списком разрешённых пользователей. Создаём через PowerShell:
New-RDSessionCollection `
-CollectionName "OfficeDesktops" `
-SessionHost rdsh01.corp.example.ru, rdsh02.corp.example.ru `
-CollectionDescription "Основная офисная коллекция" `
-ConnectionBroker rdb01.corp.example.ru
Set-RDSessionCollectionConfiguration `
-CollectionName "OfficeDesktops" `
-UserGroup "CORP\RDS-Users" `
-ConnectionBroker rdb01.corp.example.ru
Для опубликованных приложений (RemoteApp) создаём отдельную коллекцию и через New-RDRemoteApp добавляем ярлыки на 1С, SAP GUI, CRM. Пользователь получает их как обычные иконки на рабочем столе через Web Access или .rdp-файлы.
Профили пользователей: UPD, а не roaming
Никогда, никогда не используйте roaming profiles для RDS. Вместо этого — User Profile Disks (UPD) или FSLogix Profile Containers. Я в 90% проектов использую FSLogix: он хранит профиль и папку Outlook OST в VHDX-файле на файл-шаре, монтирует при логине, отмонтирует при выходе.
# Ключи реестра FSLogix через GPO
[HKEY_LOCAL_MACHINE\SOFTWARE\FSLogix\Profiles]
"Enabled"=dword:00000001
"VHDLocations"="\\\\fs01\\fslogix\\profiles"
"SizeInMBs"=dword:00007800 ; 30 ГБ
"VolumeType"="VHDX"
"FlipFlopProfileDirectoryName"=dword:00000001
Минимум IOPS на хранилище профилей — 200 на одного активного пользователя, иначе логины будут идти по минуте.
RD Gateway и MFA
Gateway настраивается двумя политиками: CAP (кому можно коннектиться) и RAP (на какие ресурсы). Я всегда ставлю CAP на группу CORP\RDS-External-Users и требую членство в ней отдельно — не все RDS-Users должны подключаться из интернета.
Для MFA — интеграция с Azure MFA Extension или сторонние плагины (ESET Secure Authentication, Rohos). Без второго фактора публиковать RDS наружу в 2026 году — неприемлемо.
Лицензирование RDS CAL
RDS CAL бывают двух типов: User и Device. User — лицензия на каждого пользователя независимо от устройств; Device — на физический ПК с любым количеством юзеров. Для офиса с ноутбуками+домашним доступом всегда выгоднее User CAL.
- Активируем сервер лицензирования через Internet → Automatic.
- Устанавливаем пакет лицензий, полученный от Microsoft-партнёра.
- В свойствах deployment прописываем Licensing Server и Mode = Per User.
Мини-кейс: переход бухгалтерии на RDS
Февраль 2026, сеть из трёх торговых офисов, 42 пользователя 1С:ЗУП, у всех разные версии платформы. Проблема — долгие обновления на 42 ПК, боль поддержки и медленная работа 1С по WAN. Задача — загнать всех на терминальник в центральном офисе.
Собрали двухсерверную ферму в дата-центре МТС: Dell PowerEdge R750, Xeon Platinum 8280, 256 ГБ RAM на двоих, 40G Mellanox между узлами и системой хранения. На каждом Session Host — 1С:Предприятие и Office 365, 22 сессии штатно, 30 в пике. Профили на FSLogix, внешний доступ через RD Gateway с TLS 1.3 и ESET MFA. Проект под ключ занял 6 рабочих дней, стоил 310 000 руб. Окупился за 4 месяца за счёт экономии на обновлениях и лицензиях платформы 1С (вместо 42 клиентских — 2 серверных).
Типовые ошибки
- Один сервер Session Host без резерва — при ребуте все вылетают.
- Профили на локальных дисках Session Host — пользователь получает разный рабочий стол на разных серверах.
- Не настроен Loopback Processing Mode в GPO — настройки пользователя съедают доменные политики, запрещающие, например, панель управления.
- RDP наружу без Gateway — потом перебор паролей и брут.
- Нет мониторинга счётчиков Processor Queue Length, Terminal Services Session — и админ узнаёт о перегрузке по звонкам.
High Availability Broker
Один Broker — единая точка отказа. Для HA-фермы добавляем второй Broker и общую SQL-базу (Express Edition подходит):
Set-RDConnectionBrokerHighAvailability `
-DatabaseConnectionString "DRIVER=SQL Server Native Client 11.0;SERVER=sql01;Trusted_Connection=Yes;APP=Remote Desktop Services Connection Broker;DATABASE=RDCB" `
-ClientAccessName "rds.corp.example.ru" `
-DatabaseFilePath "D:\SQLData\RDCB.mdf"
Add-RDServer -Role RDS-CONNECTION-BROKER -Server rdb02.corp.example.ru `
-ConnectionBroker rdb01.corp.example.ru
Разворачиваем RDS-ферму под ключ
Подниму ферму на 20–200 пользователей: Session Host, Broker, Gateway, FSLogix-профили, MFA, лицензирование. Срок — 3–7 рабочих дней в зависимости от масштабов. Работаю лично, хостинг — дата-центр МТС с 40G сетью.
Телефон: +7 903 729-62-41
Telegram: @ITfresh_Boss
Семёнов Евгений Сергеевич, директор АйТи Фреш
FAQ — частые вопросы по ферме RDP
- Чем RDS отличается от обычного RDP?
- RDP — протокол. RDS — набор ролей Windows Server для фермы: Session Host, Broker, Gateway, Licensing, Web Access.
- Сколько RD Session Host нужно на 50 пользователей?
- Для офиса — один сервер 8 vCPU / 32 ГБ на 50 юзеров, но лучше два для HA.
- Нужны ли лицензии RDS CAL?
- Да, иначе ферма работает 120 дней в льготном режиме.
- Что делает RD Connection Broker?
- Балансирует новые сессии и возвращает пользователя на сервер, где у него отключённая сессия.
- Зачем нужен RD Gateway?
- Публикация RDP через HTTPS 443 без проброса TCP/3389, MFA, единая точка входа.