Виртуальный рабочий стол Azure Windows: избегайте нового ада устаревших пользовательских сеансов

Microsoft недавно анонсировала новую версию Azure Windows Virtual Desktop. WVD 2.0 использует модель Azure Resource Manager. В WVD 1.0 использовалась классическая модель Azure, которая требовала создания нового клиента WVD в облаке. WVD 2.0 следует модели ARM, которая поддерживает назначение компонентов WVD, таких как пул узлов, узлы сеансов и т. д., группам ресурсов Azure.
Важно: это важная информация для организаций, которые оценивают виртуальный рабочий стол Azure Windows для поддержки сценариев удаленной рабочей силы и хотели бы сократить количество ежедневных обращений в службу поддержки, связанных с WVD.
В то время как организации оценивают виртуальный рабочий стол Azure Windows для удаленной рабочей силы, отсутствие информации о WVD в Microsoft и на других сайтах заставляет ИТ-администраторов и архитекторов быть занятыми оценкой всех компонентов WVD, чтобы убедиться, что WVD соответствует как функциональным, так и нефункциональным требованиям.. Недавно я работал над большими средами WVD. В рамках нашего недавнего проекта WVD для клиента мы развернули WVD для более чем 3000 пользователей, и было развернуто более 450 хостов сеансов для размещения 3000 пользователей. На этапе поддержки и поддержки мы столкнулись с проблемами с сеансами пользователей WVD, что, в свою очередь, привело к ежедневным обращениям в службу поддержки. В этой статье содержится информация о том, где хранятся сведения о сеансе пользователя и как определить, действительно ли пользователь активен или отключен.

Сеансы пользователей WVD в базе данных Azure Windows Virtual Desktop
Важно понимать, что WVD хранит энергозависимую базу данных в центре обработки данных Microsoft для каждого клиента. Внутренняя база данных WVD отвечает за хранение информации о пользовательских сеансах. Информация о сеансе пользователя, такая как имя участника-пользователя, имя пользователя AD, время создания сеанса, идентификатор сеанса, имя пула хостов, к которому подключен пользователь, имя хоста сеанса, к которому подключен пользователь, состояние сеанса и другая информация хранится в базе данных WVD. Когда пользователь подключается к пулу хостов в среде WVD, происходит следующая цепочка событий:
- Агент RDP-SXS, работающий на хосте сеансов, отправляет данные сеансов пользователей в базу данных WVD.
- База данных WVD получает данные и обновляет сведения о сеансе пользователя.
- База данных WVD также сохраняет состояние сеанса для каждого пользователя, например, находится ли сеанс пользователя в «активном» или «отключенном» состоянии.
Зачем нужна центральная база данных WVD?
Есть две важные причины, по которым необходимо вести центральную базу данных WVD:
- Если нет центральной базы данных WVD, то администратору WVD придется запрашивать все хосты сеансов, чтобы увидеть статус каждого сеанса пользователя.
- Подключение к каждому хосту сеансов для сбора информации о сеансах пользователей — это трудоемкий процесс, который может увеличить время устранения неполадок.
- Все командлеты WVD PowerShell требуют подключения к центральной базе данных для сбора информации о пользователях и узлах сеансов.
Состояния сеанса пользователя WVD в базе данных Azure Windows Virtual Desktop
База данных WVD может содержать два типа состояний сеанса: пользователи в отключенном состоянии и пользователи в активном состоянии. «Пользователи в отключенных состояниях» — это пользователи, которые подключены к пулу хостов в среде WVD, но их подключения по-прежнему остаются подключенными к хостам сеансов. «Пользователи в активных состояниях» — это соединения, которые фактически активны на хостах сеансов. База данных WVD хранит данные в течение определенного периода времени и обновляется в процессе обновления базы данных WVD. Записи в базе данных WVD удаляются, и нет обновления о записи от агента RDP-SXS.
Есть важный аспект, который нам нужно понять. Пользователь, подключенный к хосту сеанса, может не иметь обновленной записи в базе данных WVD. Например, когда вы запрашиваете базу данных WVD с помощью командлета PowerShell Get-AzWVDUserSessions с определенного узла сеансов, команда подключается к базе данных WVD, чтобы получить состояние сеанса пользователя. Если пользователь уже « отключен» от хоста сеанса и если статус пользователя в базе данных WVD указан как « Активный», это означает, что вы собираете неверную информацию для этого пользователя из базы данных WVD. Другими словами, пользователь фактически не активен. Помните, что требуется несколько минут или больше, прежде чем агент RDP-SXS сможет обновить сведения о сеансе пользователя в базе данных WVD.
Сеансы пользователей WVD: обычные и устаревшие сеансы
Как вы могли видеть из предыдущего раздела этой статьи, база данных WVD может содержать как обычные, так и устаревшие сеансы, но давайте разберемся, в чем между ними разница. «Устаревший» сеанс — это сеанс, который отображается как «активный» в базе данных WVD, но виртуальная машина узла сеанса, к которой подключен пользователь, фактически «выключена». С другой стороны, «обычный сеанс» — это сеанс, который показывает «Активен», а виртуальная машина узла сеанса, к которой подключен пользователь, «включена». Например, если пользователь отображается как «активный» в базе данных WVD, а виртуальная машина узла сеанса «выключена», то этот пользователь на самом деле не активен и попадает в категорию «устаревших» сеансов. Однако когда вы выполняете командлет PowerShell Get-AzWVDUserSession для получения сведений о сеансе пользователя из пула узлов, командлет Get-AzWVDUserSession фактически не получает состояние виртуальной машины узла сеанса, и поэтому вы не можете выяснить, сеанс на самом деле является «нормальным» или «устаревшим» сеансом.
Получение фактического состояния сеанса пользователя
Чтобы получить фактическое состояние сеанса пользователя Виртуального рабочего стола Windows Azure, вы можете выполнить командлет Get-AzWVDUserSession PowerShell, но вам также необходимо получить состояние виртуальной машины узла сеанса. Следующий сценарий PowerShell, полученный из Wintellisys WVD Manager, можно использовать для получения пользовательских сеансов из указанного пула узлов, а также для получения состояния виртуальной машины узла сеансов, к которому подключен пользователь.
Важно: перед выполнением приведенного ниже скрипта измените переменные «$HostPool» и «$ResourceGroupName».
$SessionsResultFile = "C:TempSessions.CSV" Удалить элемент $SessionsResultFile -ErrorAction SilentlyContinue $STR = "Имя пользователя AD, состояние сеанса, имя хоста сеанса, статус виртуальной машины" Add-Content $SessionsResultFile $STR $HostPool = " ThisHostPool" $ResourceGroupName = "ThisResourceGroup" $AllUsers = Get-AzWvdUserSession -ResourceGroupName $FinalResGroup -HostPoolName $PoolName | Select-Object * ForEach ($Item in $AllUsers) { $ThisHost = $Item.SessionHostName $ThisState = $Item.SessionState $ThisUName = $Item.ADUserName $VMName, $B = $ThisHost.Split(".") $ Status = Get-AzVM -ResourceGroupName $ResourceGroupName -Name $VMName -Status | Select-Object * $VMStatus = $Status.Statuses[1].DisplayStatus $STR = $ThisUName+","+$ThisState+","+$ThisHost+","+$VMStatusNow Add-Content $SessionsResultFile $STR }
После завершения выполнения скрипта вы увидите результирующий файл C:TempSessions.CSV, который содержит имя пользователя AD, имя хоста сеанса, состояние сеанса и статус виртуальной машины хоста сеанса, как показано на снимке экрана ниже. файл отчета:
Как вы можете видеть на снимке экрана, сценарий собрал состояние сеанса пользователя для шести пользователей и обнаружил, что CorpUser3 и CorpUser4 отображаются как «активные» в базе данных WVD, но в статусе виртуальной машины узла сеанса указано «ВМ освобождена. ” Это ясно указывает на то, что соединения CorpUser3 и CorpUser4 являются устаревшими.
Хотя приведенный выше сценарий может быть полезен для получения состояний пользовательских сеансов вместе со статусом виртуальной машины узла сеанса, для сбора состояний сеанса и состояния виртуальной машины узла сеанса для всех пулов узлов вам потребуется использовать цикл «для каждого», который проверяет для всех пулов хостов или используйте Wintellisys WVD Manager. Wintellisys WVD Manager предоставляет компонент диспетчера пользовательских сеансов, который может помочь вам выполнять все задачи управления, такие как удаление устаревших сеансов, выход из системы нескольких пользователей и т. д., как показано на снимке экрана ниже:
Как вы можете видеть на снимке экрана, он показывает состояние сеанса каждого пользователя, узел сеанса, к которому подключен пользователь, и фактический статус виртуальной машины узла сеанса. Последний столбец «Тип учетной записи» показывает, является ли сеанс «нормальным» или «устаревшим». Вы можете выбрать все устаревшие сеансы на панели, а затем щелкнуть «выход из системы», чтобы удалить все устаревшие сеансы.
Что делать, если устаревшие сеансы не удаляются?
Если вы не удалите устаревшие сеансы, эти пользователи не смогут создать другой сеанс в том же пуле хостов в среде WVD. Поэтому важно, чтобы все устаревшие сеансы были удалены из среды WVD. Удаление устаревших сеансов также может помочь уменьшить количество обращений в службу поддержки, если пользователь не может подключиться к пулу узлов в среде WVD. Wintellisys WVD Manager позволяет периодически удалять все устаревшие сеансы, настроив уведомление WVD, как показано на снимке экрана ниже:
Уведомление обрабатывается каждые 45 минут и может быть настроено для всех управляемых клиентов WVD.
Вы также можете разработать сценарий PowerShell, который использует командлет Remove-AzWvdUserSession для удаления пользовательских сеансов из пулов узлов, а затем запланировать запуск сценария каждые 45 минут.