Сервер узла сеансов удаленных рабочих столов

При настройке нового узла RDS фермы на базе Windows Server 2012 R2 столкнулся с тем, что в трее стало появляться предупреждение:

Remote Desktop Service will stop working in xxx days.

Т.е. очевидно, что служба RDS Host запущена в режиме льготного периода лицензирования (похожую проблему я уже описывал, но тут оказалось немного другое).

Для более точной диагностики проблемы нужно запустить RD Licensing Diagnoser (Средство диагностики лицензирования удаленных рабочих столов). В окне утилиты будет отображаться такая ошибка:

В английской версии Windows Server ошибка выглядит так:

Как вы видите, на самом деле доступных клиентам лицензий нет, т.к. режим лицензирования не задан.

Все это говорит о том, что администратором не выбран сервер лицензирования RDS и / или режим лицензирования. Это несмотря на то, что при развертывании RDS уже был указан тип лицензирования.

Проверить, задан ли сервер лицензирования можно с помощью следующих команд:

$obj = gwmi -namespace "Root/CIMV2/TerminalServices" Win32_TerminalServiceSetting
$obj.GetSpecifiedLicenseServerList()

Если сервер лицензирования не задан, его можно указать командой:
$obj. SetSpecifiedLicenseServerList("rdslic1.winitpro.ru")

Принудительно выставить режим лицензирования можно несколькими способами.

Через реестр:

В ветке HKLMSYSTEMCurrentControlSetControlTerminal ServerRCMLicensing Core нужно изменить значение DWORD параметра с именем LicensingMode с 5 на

  • 2 — если используется лицензирование по устройствам (Per Device)
  • 4 — при использовании RDS лицензирования по пользователям (Per User)

После внесения изменений нужно перезагрузить сервер.

Параметры сервера лицензирования RDS также можно задать через GPO (локальную или доменную политику).

Допустим, сервер не в домене. Воспользуемся локальным редактором gpedit.msc. Перейдите в раздел Конфигурация компьютера -> Компоненты Windows ->Службы удаленных рабочих столов ->Узел сеансов удаленных рабочих столов ->Лицензирование (Computer Configuration -> Administrative Templates -> Windows Components -> Remote Desktop Services -> Remote Desktop Session Host Licensing).

Нас интересуют две политики

  • Использовать указанные серверы лицензирования удаленных рабочих столов (Use the specified Remote Desktop license servers) — включите политику и укажите адрес сервера лицензирования RDS, если сервер лицензий запушен на этом же сервере, укажите 127.0.0.1
  • Задать режим лицензирования удаленных рабочих столов (Set the Remote Desktop licensing mode) – выберите нужный режим лицензирования. В нашем примере Per User.

После перезагрузки сервера открываем средство диагностики лицензирования RDS и видим количество доступных лицензий и выбранный режим лицензирования

Для настройки терминального сервера к нему распространяются ниже представленные требования исходя из ПО, которое будет запускаться пользователями и количества пользователей:

  • Процессор: от 4 ядер
  • Оперативная память : 1 ГБ на каждого пользователя + 4 ГБ для работы ОС + 4 ГБ запас
  • Дисковая система: для большей отказоустойчивости нужно настроить RAID-массив
    Для установки выделить два диска: первый логический диск от 50 ГБ. До 100 ГБ выделить для установки ОС, второй логический диск выделить под пользовательские профили с расчетом минимум 1 ГБ на пользователя
  • Ширина канала для терминального сервера: 250 Кбит/с на пользователя

Первоначальные настройки Windows Server 2016:

  1. Настроить статический IP-адрес сервера
  2. Проверить правильность настройки времени и часового пояса
  3. Установить все обновления системы
  4. Задать понятное имя для сервера и, при необходимости, ввести его в домен
  5. Включить доступ до сервера по удаленному рабочему столу для удаленного администрирования
  6. Настроить запись данных профилей пользователей на второй логический диск
  7. Активировать лицензию Windows Server 2016

Настройка терминального сервера

Начиная с Windows 2012 терминальный сервер должен работать в среде Active Directory.

Если в вашей локальной сети есть контроллер домена, просто присоединяйте к нему сервер терминалов, иначе установите на сервер роль контроллера домена.

Установка роли и компонентов

В панели быстрого запуска открываем Диспетчер серверов:

Нажимаем Управление – Добавить роли и компоненты:

Нажимаем Далее до «Выбор типа установки». Оставляем Установка ролей и компонентов и нажимаем Далее дважды:

В окне «Выбор ролей сервера» выбираем Службы удаленных рабочих столов:

Кликаем Далее, пока не появится окно «Выбор служб ролей» и выбираем следующие:

  • Лицензирование удаленных рабочих столов
  • Узел сеансов удаленных рабочих столов

Нажимаем Далее, при появлении запроса на установку дополнительных компонентов соглашаемся.

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

  • Веб-доступ к удаленным рабочим столам — возможность выбора терминальных приложений в браузере.
  • Посредник подключений к удаленному рабочему столу — для кластера терминальных серверов посредник контролирует нагрузку каждой ноды и распределяет ее.
  • Узел виртуализации удаленных рабочих столов — для виртуализации приложений и запуска их через терминал.
  • Шлюз удаленных рабочих столов — центральный сервер для проверки подлинности подключения и шифрования трафика. Позволяет настроить RDP внутри HTTPS.

Нажимаем Далее и в следующем окне Установить. Дожидаемся окончания процесса установки и перезагружаем сервер.

Установка служб удаленных рабочих столов

После перезагрузки открываем Диспетчер серверов и нажимаем Управление – Добавить роли и компоненты:

В окне «Выбор типа установки» выбираем Установка служб удаленных рабочих столов и нажимаем Далее:

В окне «Выбор типа развертывания» выбираем Быстрый запуск и нажимаем Далее:

В «Выбор сценария развертывания» — Развертывание рабочих столов на основе сеансов — Далее:

Еще раз Далее — при необходимости, ставим галочку «Автоматически перезапускать конечный сервер, если это потребуется» и кликаем по Развернуть.

Настройка лицензирования удаленных рабочих столов

Для корректной работы сервера, необходимо настроить службу лицензирования. Для этого открываем диспетчер серверов и кликаем по Средства – Remote Desktop Services – Диспетчер лицензирования удаленных рабочих столов:

Читайте также:  Bx shellext gettempfilename failed

В открывшемся окне кликаем правой кнопкой мыши по нашему серверу и выбираем Активировать сервер:

В открывшемся окне дважды кликаем Далее – заполняем форму – Далее – Далее – Снимаем галочку «Запустить мастер установки лицензий» – Готово.

Снова открываем диспетчер серверов и переходим в «Службы удаленных рабочих столов»:

В «Обзоре развертывания» кликаем по Задачи – Изменить свойства развертывания:

В открывшемся окне переходим в Лицензирование – Выбираем тип лицензий – прописываем имя сервера лицензирования (в данном случае локальный сервер) и нажимаем Добавить:

Применяем настройки, нажав OK.

Добавление лицензий

Открываем диспетчер серверов и кликаем по Средства – Remote Desktop Services – Диспетчер лицензирования удаленных рабочих столов:

В открывшемся окне кликаем правой кнопкой мыши по нашему серверу и выбираем Установить лицензии:

В открывшемся окне нажимаем Далее:

Выбираем программу, по которой куплены лицензии, например, Enterprise Agreement:

Нажимаем Далее – вводим номер соглашения и данные лицензии – выбираем версию продукта, тип лицензии и их количество:

Нажимаем Далее – Готово.

Проверить статус лицензирования можно в диспетчере серверов: Средства – Remote Desktop Services – Средство диагностики лицензирования удаленных рабочих столов.

Мы также готовы оказать помощь в установке и настройке терминального сервера.

Нашим клиентам мы предлагаем реализацию данного проекта и его последующее обслуживание в рамках ИТ-аутсорсинга.

Продолжаем выжимать все соки из Windows-сервера. В этот раз я расскажу про настройку сервера удаленных рабочих столов, более известного как терминальный сервер. В качестве «вишенки на торте» остановимся еще на тюнинге системы дедупликации томов Windows.

В инфраструктуре удаленных рабочих столов основной ролью является узел сеансов Remote Desktop Session Host (далее – RDSH). Начну с подбора аппаратной части для этой роли.

С процессором и памятью все довольно просто: больше памяти, больше процессоров высокой частоты и с большим кэшем – лучше. Чуть больше внимания стоит уделить дисковой подсистеме, ведь именно она часто является узким местом. Основную нагрузку на диски можно условно разделить на три группы:

системные файлы и приложения;

  • пользовательские профили и данные.
  • В целях увеличения быстродействия имеет смысл разнести эти группы по разным физическим дискам. Про файл подкачки уже упоминалось в предыдущей статье, а вот пользовательские профили потребуют некоторых манипуляций с реестром.

    Для смены места хранения профилей нужно изменить следующий параметр реестра:

    путь: HKLMSoftwareMicrosoftWindows NTCurrentVersionProfileList;

    параметр: REG_EXPAND_SZ с именем ProfilesDirectory;

  • значение: путь к папке, например, D:Users.
  • Тогда профили всех пользователей будут создаваться уже в другом месте.

    Отдельно нужно отметить перемещаемые профили пользователей терминального сервера. Настроить их можно групповой политикой Конфигурация Windows – Административные шаблоны – Службы удаленных рабочих столов – Узел сеансов удаленных рабочих столов – Профили – Задать путь для перемещаемого профиля пользователя служб удаленных рабочих столов. В этой политике можно задать место для хранения профилей пользователей терминального сервера, но храниться будет лишь часть профиля. В частности AppDataLocal останется на старом месте.

    Помимо изменения места хранения профилей бывает полезно перенаправить ряд пользовательских папок в другое место. Как правило, это практикуется для быстродействия и настройки бэкапов – ведь «мои документы» и «рабочий стол» могут содержать важную информацию, но и не требуют повышенного быстродействия. Перенаправление удобно настраивается с помощью групповой политики.

    Сама групповая политика настраивается в Конфигурация пользователя – Конфигурация Windows – Перенаправление папки, и для большинства папок пользовательского профиля можно указать альтернативное расположение.

    Настройка политики перенаправления папок

    Чтобы не было проблем с созданием папок и доступом в них, я обычно делаю следующие разрешения на ресурс с перенаправленными папками:

    группа «Все» может создавать папки и читать. Разрешения применяются только для корневой папки;

    создатель-владелец (owner) имеет полный доступ, но только к подпапкам и файлам;

  • администраторы и система имеют полный доступ.
  • Разрешения на сетевой ресурс с перенаправленными папками пользователей.

    Одна из основных нагрузок на диск на сервере с ролью RDSH – синхронная запись. Причиной опять же являются пользователи: ведь при штатной работе идет регулярное обращение к профилю, а также загрузка-выгрузка пользовательских веток реестра (%userprofile%
    tuser.dat). Помимо создания разного рода производительных массивов оптимизировать производительность поможет кэш на запись.

    Если у вас нет батарейки для RAID-контроллера, стоит подумать о ее приобретении или же безгранично верить бесперебойникам. Надо сказать, что кэш можно настраивать и через Windows – на вкладке «Политика» в свойствах диска в оснастке «Управление дисками».

    Настройка кэша жесткого диска Windows.

    Вторым потенциально узким местом является сетевая подсистема. В целях оптимизации не лишним будет по возможности разделить сеть на условный frontend и backend. Через frontend пустить пользовательские подключения, а через backend – подключения к другим серверам, в том числе и к хранилищам для перенаправленных папок и перемещаемых профилей.

    Загрузка сети пользовательскими подключениями, как правило, минимальна, а для повышения производительности backend можно использовать объединение адаптеров (LACP) или установить в сервер десятигигабитные адаптеры.

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

    по возможности стоит отключить фоновые процессы: такие как проверка орфографии, автосохранения, индексирование для поиска. Или хотя бы уменьшить их частоту;

    также лучше уменьшить частоту проверок статуса приложений, обновлений и прочих синхронизаций;

    Читайте также:  Самые посещаемые сайты интернета

    меньше ненужных процессов и модулей – больше простора всему остальному. Проверить процессы и загружаемые модули можно с помощью встроенной утилиты msinfo32.exe и незабвенной Autoruns;

    антивирус на терминальном сервере – не самая лучшая идея, достаточно ограничиться защитой периметра, SRP и регулярными обновлениями. Если же Пети и Не-Пети тревожат паранойю, то стоит хотя бы исключить из проверки часть временных папок: например, с файлами, которые создают системные сервисы и доверенные приложения;

    если перенаправленные устройства, такие как воспроизведение звука, микрофон и прочие диски не используются – лучше их отключить.

    отдельного упоминания заслуживают перенаправленные принтеры. По возможности лучше не использовать перенаправление принтеров, подключать уже с локального принтсервера. Если подключить не удается – используйте проброс принтеров с помощью штатного средства EasyPrint, без установки драйвера принтера. Ставить драйвер принтера стоит при крайней необходимости, и аккуратно – многие драйвера, особенно для старых принтеров, тянут с собой свои приложения, которые запросто могут и «уронить» службу печати;

  • проверяйте «назначенные задания». Помимо системы, которая по умолчанию оставляет ряд назначенных заданий на вход пользователя и простой пользователя, приложения тоже любят добавить своих задач. Не все из них вам нужны.
  • 129 – именно столько назначенных заданий в свежеустановленной Windows 2016 + Office 2016.

    Нельзя не упомянуть возможность терминального сервера под названием RemoteFX, настройка его поведения также влияет на быстродействие.

    RemoteFX – это целый набор технологий, отвечающих за сжатие RDP, проброс устройств, работу с видеокартой и устройствами USB как в виртуальной машине, так и на терминальном сервере.

    Полезной настройкой является сжатие RemoteFX. Искать ее можно в групповых политиках по адресу Конфигурация компьютера – Административные шаблоны – Компоненты Windows – Службы удаленных рабочих столов – Узел сеансов удаленных рабочих столов – Среда удаленных сеансов – Настройка сжатия RemoteFX.

    Настройка сжатия RemoteFX через групповые политики.

    Настройка имеет следующие варианты:

    оптимизация использования памяти. Нагрузка на сервер небольшая, но повышаются требования к пропускной способности сети;

    оптимизация использования полосы пропускания сети. Сеть загружена слабо, но расход памяти составляет около 2 МБ на сессию;

    баланс памяти и полосы пропускания сети. Расход памяти составляет около 200 КБ на сессию;

  • не использовать алгоритм сжатия RDP. Сервер практически не сжимает RDP, поэтому нагрузка на сеть максимальна.
  • При небольшом количестве пользователей изнутри локальной сети настройка мало влияет на быстродействие. Но когда пользователей много или если они удаленные, стоит задуматься о ее применении.

    Рядом с этой настройкой находятся и другие опции, влияющие на быстродействие – тут и настройка кодировки, и настройка максимального разрешения экрана. Особенно интересной является настройка использования графического адаптера для отрисовки изображения – для всех сеансов службы удаленных рабочих столов используйте аппаратный графический адаптер по умолчанию. Начиная с Windows 2016, RemoteFX научился работать не только с виртуальными видеокартами в виртуальных машинах, но и с видеокартой напрямую. Да, теперь видеокарту для ускорения работы можно устанавливать даже в обычный сервер сеансов удаленных рабочих столов.

    Другие настройки отображения можно производить на клиентской стороне, в файлах .rdp. Большинство опций находится на вкладке «Взаимодействие».

    Настройки отображения, влияющие на быстродействие.

    Можно настроить вручную, можно использовать предустановки в зависимости от ориентировочной скорости соединения или же отдать управление автоматике. Самое главное – не стоит отключать «Постоянное кэширование точечных рисунков». При включенной опции клиент будет держать у себя кэш изображения и загружать только изменения рисунка.

    Перейду к быстродействию другой роли терминального сервера – шлюза удаленных рабочих столов.

    Шлюз удаленных рабочих столов (Remote Desktop Gateway, далее – RDG) удобно использовать для подключения внешних клиентов без VPN – в частности, он позволяет настроить проверку подлинности по сертификату. С примером настройки можно ознакомиться в соответствующей статье, я же ограничусь вопросами быстродействия.

    RDG может использовать транспорт TCP и UDP, но в большинстве случаев используется стандартный RPC поверх HTTP. Именно его и касаются следующие настройки в реестре:

    Параметр Путь Значение по умолчанию Комментарий
    Maxiothreads HKLMSoftwareMicrosoftTerminal Server Gateway Равняется количеству процессоров Отвечает за количество выходящих потоков, которые обрабатывает RDG
    MaxPoolThreads HKLMSystemCurrentControlSetServicesInetInfoParameter 4 Количество потоков, которые обрабатывает IIS
    ServerReceiveWindow HKLMSoftwareMicrosoftRpc 64 КБ Максимальный размер кадра, принимаемого сервером. Может варьироваться от 8 КБ до 1 ГБ.
    ClientReceiveWindow HKLMSoftwareMicrosoftRpc 64 КБ Максимальный размер кадра, принимаемого клиентом. Может варьироваться от 8 КБ до 1 ГБ.

    Понять, где есть проблемы, помогут счетчики производительности:

    шлюз служб терминалов;

    RPC/HTTP Proxy Per Server;

    сведения о процессоре;

    Скажу и пару слов про третью роль – узел виртуализации удаленных рабочих столов. Он необходим для развертывания инфраструктуры виртуальных рабочих столов (Virtual Desktop Infrastructure – VDI), чуть менее популярной, чем обычные терминальные сервера.

    Помимо общих рекомендаций для гипервизоров – быстрее, выше, сильнее – в инфраструктуре VDI в режиме пула виртуальных рабочих столов имеет смысл обратить внимание на ненужные службы и возможности в клиентских операционных системах:

    обновление WIndows. Все равно машина при подключении разворачивается из шаблона;

    автономные файлы. VDI не уходят в оффлайн;

    фоновая дефрагментация. Изменения файловой системы откатываются при отключении;

    сон или гибернация. Не поддерживается в VDI;

    аварийный дамп. При повторном включении машина будет развернута из шаблона;

    автоконфигурация WLAN. На VDI нет Wi-Fi;

    Читайте также:  Как подключить телефон к монитору через usb

    служба общих сетевых ресурсов проигрывателя Windows Media;

    поставщик домашней группы;

    общий доступ подключения к интернету;

    служба поддержки Bluetooth;

  • дополнительные службы Windows Center.
  • Помимо отключения служб в шаблонной виртуальной машине, для оптимизации хранения не лишним будет включить дедупликацию в любом варианте развертывания VDI. Сделать это можно при помощи команды PowerShell:

    Использование дедупликации изрядно поможет сберечь место не только при использовании виртуальных рабочих столов.

    Дедупликация – это метод сжатия массива, когда повторяющиеся данные не дублируются.

    Microsoft советует включать дедупликацию в следующих случаях:

    файловые серверы общего назначения – общие папки пользователей, перенаправленные папки профилей и т.п.;

    серверы инфраструктуры удаленных рабочих столов (VDI);

  • виртуализированные приложения резервного копирования вроде Microsoft DPM.
  • Во всех прочих случаях выгоды дедупликации стоит предварительно оценить. В этом поможет утилита DDPEval.exe, которая появится после установки роли дедупликации на сервер.

    На диске с большим количеством файловых баз 1С дедупликация поможет сэкономить до 70% места.

    Установка компоненты дедупликации производится через графический режим или командлетом PowerShell:

    Install-WindowsFeature -Name FS-Data-Deduplication

    Включить удобно командлетом Enable-DedupVolume с параметром – UsageType, который может принимать значения:

    HyperV – для дисков хранения виртуальных машин и VDI;

    Backup – для виртуализированных приложений резервного копирования;

  • Default – по умолчанию.
  • Подробнее прочитать про дедупликацию и чем отличаются ее виды, предлагаю в документации Microsoft.

    Для оптимизации баланса хранения и производительности следует уделить внимание назначенным заданиям дедупликации и тонким ее настройкам.

    Механизм дедупликации использует три вида назначенных заданий:

    Название Что делает Расписание по умолчанию
    Оптимизация Выполняет дедупликацию Каждый час
    Сбор мусора Освобождает место на диске Каждую субботу в 02:35
    Проверка целостности Ищет и восстанавливает повреждения Каждую субботу в 03:35

    Посмотреть назначенные задания можно командлетом Get-DedupSchedule.

    Запланированные задания дедупликации по умолчанию.

    Разумеется такое расписание может быть неприемлемо, особенно на серверах с высокой загрузкой. В таком случае удобно будет запускать задания только в часы простоя. Отключим задания командой PowerShell:

    Добавим новое задание оптимизации в нерабочее время:

    И задания сборка мусора и проверки по нерабочим дням:

    Подробнее про синтаксис командлета New-DedupSchedule можно почитать в документации.

    Большинство тонких настроек дедупликации – то есть большинство параметров для тома – настраивается с помощью командлета Set-DedupVolume.

    Параметр Описание Допустимые значения Комментарий
    ChunkRedundancyThreshold Количество ссылок на блок до его копирования в раздел активной зоны хранилища блоков Положительные целые числа Обычно нет необходимости изменять значение по умолчанию, но увеличение значения может увеличить быстродействие томов с высокой дупликацией
    ExcludeFileType Типы файлов, исключаемые из дедупликации Массив расширений файлов Такие файлы как мультимедиа плохо поддаются дедупликации, оптимизировать их нет смысла
    ExcludeFolder Папки, исключаемые из дедупликации Массив путей к папкам Для повышения производительности можно исключить часть папок
    InputOutputScale Уровень параллелизации операций ввода-вывода 1 – 36 На сервере с высокой нагрузкой можно уменьшить количество операций ввода-вывода дедупликации, что скажется на скорости выполнения оптимизации, но ускорит общую работу сервера
    MinimumFileAgeDays Число дней после создания файла, прежде чем он будет считаться доступным для оптимизации. Положительные целые числа, включая 0 Значение по умолчанию – 3, в ряде случаев можно изменить значение для повышения оптимизации
    MinimumFileSize Минимальный размер файла, чтобы он мог считаться доступным для оптимизации Положительные целые числа (байты), большие, чем 32 КБ Для небольших файлов дедупликация не имеет особого значения
    NoCompress Сжатие дедуплицированных блоков TrueFalse Для тома, содержащего большое количество сжатых данных, вроде архивов или мультимедиа, сжатие имеет смысл отключить
    NoCompressionFileType Файлы, которые не нужно сжимать Массив расширений файлов Уже сжатые файлы сжимать нет смысла
    OptimizeInUseFiles Использование дедупликации для активных файлов TrueFalse В случае если на томе большинство файлов – большие и постоянно используемые, в которых меняется регулярно только часть файлов – лучше включить этот параметр. В противном случае эти файлы не будут оптимизированы
    OptimizePartialFiles При включении этого параметра значение MinimumFileAge применяется к сегментам файла, а не ко всему файлу TrueFalse
    Verify Проверка блока данных не только по хэшу, но и по байтово TrueFalse Включение параметра замедляет быстродействие, но обеспечивает большую гарантию сохранности данных

    Помимо настроек для тома существуют и общие настройки службы дедупликации. В частности, нас интересует два параметра, находящихся в реестре по следующему адресу:

    Параметр Описание Допустимые значения Комментарий
    WlmMemoryOverPercentThreshold Возможность использовать больше памяти, чем автооценка Положительные целые числа, в процентах. например значение 300 означает «в три раза больше» Изменение значения параметра актуально при одновременном запуске заданий дедупликации и других ресурсоемких задач
    DeepGCInterval Интервал между полными сборками мусора Положительные целые числа, -1 = отключено Полная сборка мусора оптимизирует данные тщательнее, но она более ресурсоемкая. По факту разница в свободном месте после обычной и полной сборке мусора составляет около 5%.

    Теперь, когда дедупликация настроена, можно попробовать выговорить «дедуплицировали, дедуплицировали, да не выдедуплицировали», а потом потратить бюджет не на диски, а на новые серверы в ферму удаленных рабочих столов. И начать тюнить уже их.

    А вам приходилось заниматься подобным тюнингом быстродействия терминальных серверов или все «по дефолту»? Был какой-то ощутимый результат?