Перерегистрация узла сеанса Azure Virtual Desktop; ИСТЕЧЕНИЕ_ТОКЕНА_МАШИНЫ

Вопрос или проблема

У нас есть среда Azure Virtual Desktop, состоящая примерно из 10 пулов хостов, каждый из которых имеет 100 хостов сеансов. Я знаю, что мы можем иметь больше, но из-за ограничений, находящихся вне нашего контроля, мы должны были ограничить количество развертываемых хостов на пул. Но это не тема этого вопроса.

Мы столкнулись с проблемой, связанной с недоступностью хостов сеансов из-за истекшего регистрационного токена. В частности

Служба WVD-Agent остановлена: EXPIRED_MACHINE_TOKEN, Эта ВМ должна быть правильно зарегистрирована, чтобы участвовать в развертывании
Идентификатор события: 3277

Чтобы было понятно, хосты сеансов были зарегистрированы в пуле хостов приблизительно за четыре месяца до появления этой ошибки. Кажется, что регистрация “истекает”.

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

Инструкции в статье говорят установить два значения реестра, а затем перезапустить службу RDAgentBootLoader:

$newKey = '<RegistrationToken>'

Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\RDInfraAgent" -Name "IsRegistered" -Value "0" -Force
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\RDInfraAgent" -Name "RegistrationToken" -Value $newKey -Force

Restart-Service RDAgentBootLoader

Одно, что не упоминается в инструкциях, это то, что существующий хост сеанса должен быть удален из пула хостов. Если нет, возникнет ошибка с сообщением о том, что хост сеанса с именем ВМ уже существует.

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

Я обнаружил, что единственный способ завершить повторную регистрацию – это переустановка RDAgent и ввод регистрационного ключа в текстовом поле по запросу. Это заполнит запись реестра RegistrationToken таким образом, что установщик RDAgentBootLoader его распознает, и повторная регистрация в пуле хостов завершится.

Однако это создает проблему. Я хочу иметь возможность автоматизировать этот процесс, чтобы мы могли использовать новый регистрационный ключ для всех хостов сеансов одновременно и избежать выполнения этого по частям, когда пользователи сообщают о проблеме. Я не могу сделать это, используя Invoke-AzVMRunCommand, потому что это зависит от RDAgent.

Если я удалю агент, чтобы переустановить его и передать новый ключ, команда запуска останется в переходном состоянии (я не припомню, где это читал; я предоставлю ссылку, когда найду). Это фактически означает, что я не могу снова подключиться, чтобы завершить процесс переустановки агента, передав регистрационный ключ в качестве параметра, или переустановить загрузчик агента.

Есть ли что-то в процессе, что я должен сделать, но не указано? Эти инструкции устарели и больше не актуальны? Есть ли лучший способ передать новый регистрационный ключ и снова зарегистрировать ВМ в пуле хостов?

Ответ или решение

Регистрация хоста сессий Azure Virtual Desktop: Ошибка EXPIRED_MACHINE_TOKEN

Ваша проблема с истекшим токеном регистрации (EXPIRED_MACHINE_TOKEN) на хостах Azure Virtual Desktop (AVD) действительно может быть сложной и требует внимательного подхода. Давайте разбираться в этом вопросе шаг за шагом.

Причины возникновения проблемы

Ошибка, возникающая на ваших виртуальных машинах (VM), указывает на то, что хосты сессий потеряли связь с контроллером управления, вероятнее всего, из-за истечения срока действия токена регистрации. Обычно токены AVD действительны в течение 120 дней. После этого хосты теряют возможность подключаться к хост-пулу, что и приводит к возникновению событий с кодом 3277.

Подход к решению проблемы

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

  1. Удаление существующих хостов: Действительно, прежде чем регистрировать хост с новыми данными, старый экземпляр хоста нужно удалить из хост-пула, чтобы избежать конфликтов имен.

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

  3. Обновление агента: Когда вы переустанавливаете RDAgent, он автоматически обновляет ключ регистрации и корректным образом регистрирует хост. Это может быть лучшим вариантом, особенно если проблема с реестром не позволяет вам зарегистрировать хост без переустановки агента.

Скриптовое решение

Для автоматизации процесса вы можете использовать Azure PowerShell, однако учитывайте, что вы не можете полагаться на Invoke-AzVMRunCommand, так как это вызывает зависание команды, если агент будет удален. Вместо этого попробуйте следующие шаги:

  1. Скрипт для удаления хостов: Напишите PowerShell-скрипт, который использует командлеты Azure для удаления экземпляров хостов из хост-пула. Убедитесь, что удаление происходит через Azure API, чтобы избежать блокировок.

  2. Скрипт для переустановки агента: После удаления хоста и создания нового токена, создайте скрипт для автоматической переустановки агента и передачу нового токена. Возможно, вам придется использовать Custom Script Extension для выполнения PowerShell-скриптов на каждом хосте.

    Пример команд:

    # Удаление старых хостов
    Remove-AzWvdSessionHost -HostPoolName 'ИмяХостПула' -ResourceGroupName 'ИмяГруппыРесурсов' -Name 'ИмяВиртуальнойМашины'
    
    # Регистрируем новый токен
    $newKey = '<НовыйРегистрационныйТокен>'
    Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\RDInfraAgent" -Name "IsRegistered" -Value "0" -Force
    Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\RDInfraAgent" -Name "RegistrationToken" -Value $newKey -Force
    Restart-Service RDAgentBootLoader
  3. Планировщик: Учитывая время простоя, если у вас большая среда, настройте процедуры мониторинга, чтобы автоматизировать восстановление, когда узлы не доступны.

Вывод

Работа с Azure Virtual Desktop требует тщательной проработки механизма регистрации хостов. Убедитесь, что все шаги, включая удаление существующих хостов, обновление токенов и переустановку агента, выполняются в строгом порядке. Ваша идея автоматизации процесса — отличный шаг к уменьшению времени простоя.

Если вы все еще сталкиваетесь с трудностями, обратитесь в службу поддержки Azure, чтобы получить актуальную информацию о возможных изменениях в процессах регистрации и нововведениях в AVD.

Оцените материал
Добавить комментарий

Капча загружается...