RDS в Windows Server 2016
Автор статьи – Роман Левченко (www.rlevchenko.com), MVP – Cloud and Datacenter Management
Как вы помните, долгожданный релиз Windows Server 2016 состоялся, и мы продолжаем рассматривать самые главные нововведения этого продукта. Речь сегодня пойдет об одной из наиболее востребованных ролей – службе удаленных рабочих столов, или RDS (Remote Desktop Services).
Прежде чем погружаться в мир нового, рекомендуем ознакомиться со списком тех возможностей, которые появились в прошлой версии RDS – в Windows Server 2012 R2. Следом стоит посмотреть на список нововведений RDS в Windows Server 2016. Давайте рассмотрим, как новые возможности RDS в Windows Server 2016 расширяют возможности по построению терминальных ферм, VDI сред и сервисов доставки приложений на различные типы устройств.
Улучшения RemoteFX
В Windows Server 2012 R2 RemoteFX-адаптер имел ряд ограничений: 256 MB максимальный объем выделенной VRAM, поддержка только DirectX 11.1 и программного OpenGL 1.1, отсутствие поддержки OpenCL. Всё это сказывается на поддерживаемом количестве мониторов, разрешении и адекватной работе новых графических приложений (к примеру, Autocad Re-Cap требует OpenGL 3.3 и 1 GB VRAM, Photoshop CC — OpenGL 2.0 и 512 MB VRAM как минимум).
Windows Server 2016 призван решить данные проблемы и вносит ряд изменений в RemoteFX:
Возможность выделения до 1 GB VRAM. Виртуальные машины Hyper-V могут использовать до 1 GB выделенной VRAM + увеличивать количество VRAM за счет системной памяти ВМ, получая до 2 GB VRAM, в зависимости от величины имеющейся у виртуальной машины памяти.
Кроме того, динамическое определение объема VRAM на основе количества мониторов и разрешения заменяется возможностью задания конкретного значения VRAM для каждой ВМ вне зависимости от максимального количества мониторов и разрешения.
Поддержка OpenGL 4.4 и OpenCL 1.1. Как итог имеем «карт-бланш» на использование современных графических приложений.
Поддержка RemoteFX внутри виртуальных машин с Windows Server 2016. Ранее RemoteFX работал только с клиентскими версиями ОС (Windows 7/8). Это небольшое изменение (наряду с Personal session desktops, о которых мы поговорим чуть позже) значительно упрощает жизнь сервис-провайдерам, которые хотят предоставлять решения VDI с графическим ускорением своим заказчиком.
Параметры RemoteFX определяются как через GUI, так и через PowerShell.
Set-VMRemoteFx3dVideoAdapter
Set-VMRemoteFx3dVideoAdapter [-VM] []> [[-MonitorCount] ] [[-MaximumResolution] ]
[[-VRAMSizeBytes] ] [-Passthru] [-WhatIf] [-Confirm] []
Новые клиенты RDS
Еще недавно у Microsoft не было ни одного мобильного клиента для доступа к удаленным рабочим столам, и приходилось использовать платные решения сторонних производителей с поддержкой RD Gateway. Однако по мере продвижения и использования RDS-решений были выпущены и добавлены следующие клиенты:
Клиент RDP (MSTSC.EXE) был обновлен до 10-й версии, которая имеет улучшенную поддержку кодека AVC/H.264 и режима AVC 444, призванного улучшить fps, понизить потерю цветности за счет использования функций аппаратного декодера H.264 в высоких разрешениях вплоть до 4K (GPU должен иметь поддержку DirectX 11.0, H.264 декодер Level 4.1/BT.709). Пока только в рамках полноценного клиента, но планируется добавить поддержку и для мобильных клиентов, обозначенных выше.
Режим AVC444 используется по умолчанию в RemoteFX, но есть возможность использования AVC444 и в других сценариях с помощью настройки групповой политики:
Сomputer Configuration/Administrative Templates/Windows Components/Remote Desktop Session Host/Remote Session Environment:
Prioritize H.264/AVC 444 Graphics mode for Remote Desktop connections
и
Configure H.264/AVC hardware encoding for Remote Desktop connections.
Оптимизированный Connection Broker
Посредник подключений был узким местом при одновременных попытках подключений (logon storm) в Windows Server 2012/2012R2. Поэтому в Windows Server 2016 была значительно улучшена производительность Connection Broker для требуемой нагрузки во время logon storms и при добавлении или перезагрузке узлов сессий в рамках большой rds-фермы (кстати, есть отдельный KB и для Windows Server 2012 R2, улучшающий производительность Connection Broker в подобных сценариях). Эти улучшения позволяют поддерживать до 10K+ одновременных запросов на подключение.
Для HA-конфигурации требуется выделенный внешний SQL Server. В Windows Server 2016 включена поддержка использования Azure SQL Database в качестве конечной точки размещения конфигурации Connection Broker в высокодоступном режиме.
Поддержка виртуальных машин второго поколения
Виртуальные машины Hyper-V второго поколения (Generation 2) стали доступны еще в Windows Server 2012 R2, но их использование в рамках RDS/VDI (и не только) откладывалось. Например, возможность создания шаблонов сервисов VMM на базе Gen2 была добавлена только в рамках UR6.
В Windows Server 2016 мы можем задействовать оба поколения для использования в различных типах коллекций (personal/pooled или personal session). Дополнительная конфигурация не требуется.
Поддержка пера и браузера Microsoft Edge
Если ваше устройство, например планшет Microsoft Surface, поддерживает работу с пером, а локальная система не ниже Windows 10, то вы можете использовать перо в рамках RDP-сессии.
В Windows Server 2012/2012 R2 подобные устройства также работали, но по сути просто эмулировали обычную мышь – нажатия пера передвигали курсор на экране. В рамках Windows Server 2016 и Windows 10 стилусом можно рисовать или писать, открыв, например, граффити-приложение в браузере Microsoft Edge, который так же обзавелся поддержкой при работе в удаленной сессии.
Personal Session Desktops
Если Вы сервис-провайдер и хотите предоставить полноценный «десктоп» своим клиентам, то при реализации классического сценария VDI в рамках SPLA вы можете столкнуться с проблемой – в рамках SPLA недоступна клиентская версия Windows (7, 8, 10).
Для обхода подобных ограничений, как правило, строится система на базе классических терминальных решений c Windows Server (Session-based архитектура, конечно, с Desktop Experience на борту) и отдается на «растерзание» клиентам или пользователям.
В Windows Server 2016 решили это дело упростить и добавить метод привязки пользователей к конкретным терминальным узлам (в рамках RDS это узлы Remote Desktop Session Host, RDSH). В итоге получаем новый вид RDS-коллекции — Personal Session Desktops (PSD), или частные рабочие столы на базе терминальных сессий. Очевидно, что можно провести аналогию с Personal Virtual Desktops в VDI, предназначенными так же для выделения «изолированной» среды пользователям.
Давайте посмотрим на пару сценариев, которые успешно решаются благодаря PSD.
- Если пользователю для работы требуется, чтобы ОС имела все возможности и внешний вид «как у клиентской» (к примеру, Windows 10), то полноценной заменой его рабочего стола будут PSD на базе Windows Server 2016 with Desktop Experience, которые позволяют добиться внешнего вида интерфейса Windows Server близкого к обычной клиентской ОС.
- Если пользователь имеет административные полномочия на своем привычном ПК и вы хотите перевести его на PSD, то это возможно сделать путем добавления пользователя в группу локальных администраторов (определяется на этапе развертывания PSD, «ручной труд» не требуется)
- Если пользователь не видит свою дальнейшую жизнь без графических приложений, требующих дополнительных аппаратных ресурсов, то можно предоставить PSD с обновленными возможностями RemoteFX (об этом уже упоминалось выше).
На текущий момент единственный способ развернуть PSD – PowerShell. Опцию GUI планируют добавить позже.
Для целей демонстраций и тестирования можно использовать тип развертывания Quick Start на базе сессий. При этом будут установлены RD Connection Broker, RD Web Access и RD Session Host на одном физическом сервере. Для реального использования рекомендуется сформировать распределенную архитектуру. Не забываем, что каждый компонент RDS поддерживает виртуализацию (к примеру, 1 VM RDSH <-> 1 PSD User) и высокую доступность (например, RD Connection Broker имеет высокодоступную конфигурацию).
На всякий случай привожу шаги по конфигурации «фундамента».
Переходим к созданию коллекции PSD. New-RDSessionCollection был дополнен свитчем -PersonalUnmanaged, который используется для создания коллекции типа Personal Session Desktop.
#Переменная для имени RDSH
$rdshost="tp4-root.democorp.ru"
#Создание PSD-коллекции с административными привилегиями для пользователя
New-RDSessionCollection -CollectionName Personal -ConnectionBroker $rdshost -SessionHost $rdshost -GrantAdministrativePrivilege -PersonalUnmanaged
#Привязка пользователя rdsuser к коллекции PSD с именем Personal
Set-RDPersonalSessionDesktopAssignment -CollectionName Personal -User democorp\rdsuser -Name $rdshost
#Проверяем
Get-RDPersonalSessionDesktopAssignment -CollectionName Personal
CollectionName DesktopName User
-------------- ----------- ----
Personal TP4-ROOT.DEMOCORP.RU DEMOCORP\rdsuser
Если RDSH уже находится в одной из PSD-коллекций, то на его основе нельзя создать новую коллекцию. Только после удаления данного RDSH из текущей коллекции появится возможность определить его в новую.
New-RDSessionCollection -CollectionName Personal -ConnectionBroker $rdshost -SessionHost $rdshost -GrantAdministrativePrivilege -PersonalUnmanaged
WARNING: The RD Session Host server tp4-root.democorp.ru already exists in another collection.
New-RDSessionCollection : Unable to create the session collection.
#Выводим список коллекций
Get-RDSessionCollection
CollectionName Size ResourceType CollectionType CollectionDescription
-------------- ---- ------------ -------------- ---------------------
QuickSessionCollection 1 RemoteApp programs PooledUnmanaged
#Удаляем коллекцию
Get-RDSessionCollection|Remove-RDSessionCollection
После создания коллекции PSD и привязки к ней пользователя перейдем в узел RD Web Access (https://hostfqdn/rdweb) для дополнительной проверки, используя учетные данные нашего пользователя. Должен появиться список коллекций, доступных пользователю.
Отмечу, что в привычном для администратора списке коллекций (Server Manager –> RDS –> Collection List) данный вид коллекций не отображается, поскольку он создается и управляется только с помощью PowerShell.
Вот такой вид имеет панель «Пуск» в сессии PSD:
Наша коллекция была создана с ключом -GrantAdministrativePrivilege, поэтому пользователь автоматически был добавлен в группу администраторов на выделенном сервере RDSH.
Но на этом важные нововведения RDS в Windows Server 2016 не заканчиваются. Двигаемся дальше.
Интегрированные Windows MultiPoint Services
MultiPoint-сервер (MPS) является технологией и решением на базе Windows Server и служб RDS для предоставления базовой функциональности удаленных рабочих столов. Позиционируется для использования в учебных классах или учреждениях, где нет больших требований к нагрузке и масштабируемости. Особенность заключается в том, что пользовательские станции могут состоять только из монитора, клавиатуры и мыши («нулевые» клиенты) и подключаться непосредственно к серверу MPS через USB-хабы, видеокабели или LAN (RDP-over-LAN, если клиентом является, к примеру, ноутбук или тонкий клиент). В итоге конечный потребитель получает решение low-cost для предоставления функциональности рабочих столов с абсолютно минимальными затратами на пользовательские конечные станции.
Первая версия MPS, выпущенная в феврале 2010-го, имела возможность подключать станции только через специализированные USB-хабы и видеопорты.
Привычная нам всем возможность подключения через RDP была добавлена только в следующей версии MPS 2011, релиз которой состоялся в марте 2011. Помимо RDP-over-LAN, MPS 2011 обновился следующим образом:
Поддержка RemoteFX.
Поддержка виртуализации.
Проецирование рабочего стола от одной станции другой (к примеру, рабочий стол тренера или преподавателя дублируется на пользовательские станции).
Возможность ограничения интернет-доступа на базе фильтров.
Удаленный запуск приложений, блокировка периферии (клавиатуры, мышь) на подключенных станциях.
В следующей и на данный момент последней версии MPS 2012 были добавлены:
Новая консоль для централизованного управления столами.
Защита системного раздела от нежелательных изменений.
Клиент MPS Connector для мониторинга и управления станций, включая планшеты.
Как уже было сказано выше, MPS поддерживает не только классический RDP, но и дает возможность подключать «нулевые» клиенты (примером может служить Wyse 1000) следующими способами.
Прямое подключение к видеокарте головной станции
На рисунке к главной станции подключаются напрямую четыре клиентские станции через USB и, к примеру, VGA-порты. Очевидно, что подобный тип подключения подразумевает соответствующие требования к аппаратной конфигурации головной станции и в некоторых сценариях неприменим (масштабы, расстояние, мобильность).
Подключение через USB
На рисунке ниже показано взаимодействие первичной станции (станция, которая подключена напрямую к MPS и используется для первичной конфигурации вне зависимости от сценария) и двух «нулевых» клиентов, подключенных через USB-хабы (пример: Wise 1000). В отличии от первого способа, нам не нужно дополнительно рассчитывать конфигурацию видеоподсистемы сервера MPS для формирования требуемого количества видеовыходов. Но из-за ограничения по расстоянию между станциями и MPS (для Dell Wise 1000 ~ 5 метров) рекомендуется использовать в малых комнатах при небольшом количестве конечных пользователей.
Использование USB-Over-Ethernet
Более масштабируемый тип подключения. Вместо USB-to-USB используется проброс USB через LAN, тем самым предоставляется возможность построения системы MPS в больших по размеру помещениях (пример клиента: Wise 1003)
Описанная выше функциональность полностью перенесена в Windows Server 2016. MultiPoint Services теперь являются новым типом развертывания служб RDS.
Опытным инженерам или администраторам, которые уже знакомы с процедурой конфигурации RDS в рамках решений VDI или Session-Based, процесс настройки и использования MPS покажется более простым и быстрым. Это тоже является плюсом, если учитывать целевую аудиторию MPS.
Существует три способа установить MultiPoint Services: через Server Manager (role-based), Powershell и через RDS Installation.
Бегло пройдемся по первым двум и потом перейдем к процессу базовой настройки MPS.
- Используя Server Manager и установку ролей, выберите MultiPoint Services, согласитесь с установкой дополнительных компонентов и перейдите к следующему шагу.
- Можно почитать еще раз, что такое MPS. Стоит отметить, что RD Licensing нужно будет активировать после конфигурации MPS.
- Вместе с основной службой MPS дополнительно разворачиваются службы Print and Document Services, предназначение которых всем, я надеюсь, известно. Ничего интересного, идем далее.
- Оставляем все по умолчанию.
- Print Server – необходим для управления «множеством» принтеров.
- Distributed Scan Server – управление и предоставление доступа к сканерам, поддерживающим Distributed Scan Management.
- Internet Printing – веб-доступ к printer jobs с возможностью отправки документов на печать через Internet Printing Protocol.
- LPD Service — служба Line Printer Daemon предоставляет возможность UNIX-клиентам, используя службу Line Printer Remote, отправлять задачи на печать доступным принтерам.
- Полноценный RDS нам не нужен, поэтому оставляем предлагаемые по умолчанию значения.
- После подтверждения сервер отправится на перезагрузку и, используя первичную станцию, необходимо будет произвести требуемую конфигурацию при первом старте MPS. В момент запуска будет предложено произвести идентификацию первичной станции (путем нажатия клавиши “B”), после чего сервер перейдет в режим конфигурации служб RDS/MPS.
MPS добавит учетную запись WmsShell для поддержки работы в режиме multi-station и создаст группу WmsOperators для формирования доступа к консоли управления (Dashboard).
Все шесть пунктов можно “сжать” до одной команды в PowerShell:
Перейдем в диспетчер управления MPS (MPS Manager):
Со своей удаленной станции я хочу настроить доступ к MPS через RDP-over-LAN. Для этого добавим новую учетную запись пользователя MPS:
С точки зрения MPS существует три вида пользователей: стандартный пользователь для доступа к MPS, пользователь для управления пользовательскими сессиями и администратор. По сути, это имитация полноценного RBAC (Role Based Access Control).
Итак, пользователь добавлен. Проверим подключение. Используя MSTSC и возможности RDP, я подключаюсь к серверу MPS с помощью вышеобозначенной учетной записи. При первом подключении каждого пользователя к MPS будет выведено сообщение: «To assist you with your usage of this computer, your activities may be monitored by your system administrator/Для помощи в использовании данного компьютера ваши действия будут отслеживаться системным администратором».
После подтверждения будет создана новая терминальная сессия для пользователя, при этом администратор сможет управлять пользовательской сессией в интерактивном режиме, используя консоль MultiPoint Dashboard.
Перейдем к MultiPoint Dashboard (отдельная консоль). Основную часть консоли будут занимать динамически меняющиеся мини-экраны пользовательских сессий. Мне это чем-то напоминает экран службы безопасности для мониторинга видеосигналов с камер, но MultiPoint Dashboard позволяет нам не только наблюдать за тем, что происходит в пользовательских сессиях, но и реально управлять и изменять их (забирать управление, блокировать станции или инициировать log off, отправлять IM выбранным пользователям, блокировать USB-устройства или удаленно запускать/закрывать приложения).
К примеру, с каждой пользовательской станцией и ее сессией мы можем сделать следующее:
- разблокировать/заблокировать станцию и вывести на экран конкретной станции сообщение;
- ограничить веб-доступ путем определения списка разрешенных или запрещенных URLs;
- проецировать свой рабочий стол на клиентские станции;
Если вернуться обратно в MPS Manager, то можно увидеть, что подключенная станция отображается во вкладе Stations, где можно дополнительно управлять выбранными станциями.
Настройки самого MPS располагаются на стартовой вкладке Home. Мы можем, к примеру, отключить оповещения о том, что сессия не является приватной, чтобы у пользователей не возникало дополнительных вопросов :)
Режим Multi-Session несет некоторые риски, связанные с безопасностью, поэтому предоставляется возможность защитить системный диск от нежелательных изменений. Для включения функции Disk Protection достаточно одно клика и подтверждения.
Если имеется приложение, которое требует клиентскую среду, в некоторых случаях изолированную, то в MPS это достигается за счет включения Virtual Desktops. Принцип работы схож с pooled-коллекцией в полноценном VDI. Каждая «виртуализованная станция» будет создаваться из шаблона и делать откат изменений после каждого выхода пользователя из системы. Как видим, полноценной функциональности VDI не достигается, но все же само наличие подобной возможности расширяет область применения MPS.
Выводы
Обновленные RemoteFX и RDP с поддержкой разрешения 4K увеличивают отдачу от ВМ с «тяжелыми» приложениями в рамках VDI и повышают их быстродействие по сравнению с Windows Server 2012/2012 R2 (конечно, необходимо провести тестирование и взглянуть на реальные цифры).
MultiPoint Server, переехавший «под крыло» RDS, расширяет область применения удаленных рабочих столов и делает более привлекательным их использование (интерактивность в dashboard, простота настройки играют в этом не последнюю роль). Помимо стандартных учебных классов, MPS может применяться так же и партнерами для обеспечения демостендов или шоу-румов независимыми тренерами и другими профессионалами, целью которых является грамотно донести информацию до слушателей или заказчиков.
Personal Session Desktop (PSD) упрощает для сервис-провайдеров предоставление рабочих столов в рамках DaaS-услуги и расширяет возможности RDS в Azure.
Надеюсь, что было интересно. Всем хорошей виртуализации и RDS-имплементации.
P.S. Если вы планируете переход на новый RDS или настраиваете новую ферму, то полезным будет данный постер, показывающий основные зависимости между сервисами.