Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Общие сведения о шаблонах Azure Resource Manager
Шаблоны Azure Resource Manager позволяют декларативно указывать инфраструктуру Azure IaaS на языке JSON, определяя зависимости между ресурсами.
Дополнительные сведения об использовании расширений см. в статье " Создание шаблонов расширений ".
В этой статье мы узнаем об устранении некоторых распространенных сбоев расширения виртуальной машины.
Замечание
Новое! Попробуйте использовать поддержку виртуальной машины для ускорения диагностикиРекомендуется запустить VM assist для Windows или VM assist для Linux. Эти средства диагностики на основе скриптов помогают выявить распространенные проблемы, влияющие на гостевой агент виртуальной машины Azure и общую работоспособность виртуальных машин.
Просмотр состояния расширения
Шаблоны Azure Resource Manager можно выполнять из Azure PowerShell. После выполнения шаблона состояние расширения можно просмотреть из Обозревателя ресурсов Azure или средств командной строки.
Ниже приведен пример:
Azure PowerShell:
Get-AzVM -ResourceGroupName $RGName -Name $vmName -Status
Ниже приведен пример выходных данных:
Extensions: {
"ExtensionType": "Microsoft.Compute.CustomScriptExtension",
"Name": "myCustomScriptExtension",
"SubStatuses": [
{
"Code": "ComponentStatus/StdOut/succeeded",
"DisplayStatus": "Provisioning succeeded",
"Level": "Info",
"Message": " Directory: C:\\temp\\n\\n\\nMode LastWriteTime Length Name
\\n---- ------------- ------ ---- \\n-a--- 9/1/2015 2:03 AM 11
test.txt \\n\\n",
"Time": null
},
{
"Code": "ComponentStatus/StdErr/succeeded",
"DisplayStatus": "Provisioning succeeded",
"Level": "Info",
"Message": "",
"Time": null
}
]
}
Устранение неполадок с расширением
Убедитесь, что агент виртуальной машины запущен и готов
Агент виртуальной машины необходим для управления, установки и выполнения расширений. Если агент виртуальной машины не запущен или не удается сообщить о состоянии готовности к платформе Azure, расширение работает неправильно.
Следующие страницы для устранения неполадок агента виртуальной машины:
- Устранение неполадок гостевого агента Windows Azure для виртуальной машины Windows
- Устранение неполадок агента Azure Linux для виртуальной машины Linux
Проверка конкретного руководства по устранению неполадок с расширением
Некоторые расширения имеют определенную страницу, описывающую их устранение. Список этих расширений и страниц можно найти на страницах устранения неполадок .
Просмотр состояния расширения
Как описано ранее, состояние расширения можно найти, выполнив командлет PowerShell:
Get-AzVM -ResourceGroupName $RGName -Name $vmName -Status
Или команда CLI:x
az vm extension show -g <RG Name> --vm-name <VM Name> --name <Extension Name>
Или на портале Azure, перейдя в колонку виртуальной машины или параметры или расширения. Затем можно щелкнуть расширение и проверить его состояние и сообщение.
Повторное выполнение расширения на виртуальной машине
Если вы выполняете скрипты на виртуальной машине с помощью расширения пользовательских скриптов, иногда может возникнуть ошибка, из-за которой виртуальная машина была создана успешно, но скрипт завершается ошибкой. В этих условиях рекомендуемый способ восстановления от этой ошибки заключается в том, чтобы удалить расширение и повторно запустить шаблон снова.
Замечание
В будущем эта функция будет улучшена, чтобы удалить расширение.
Удаление расширения из Azure PowerShell
Remove-AzVMExtension -ResourceGroupName $RGName -VMName $vmName -Name "myCustomScriptExtension"
После удаления расширения шаблон можно повторно выполнить для запуска скриптов на виртуальной машине.
Активация новой целиState на виртуальной машине
Возможно, вы увидите, что расширение не выполняется, так как отсутствует генератор сертификатов Windows Azure CRP. Этот сертификат помогает защитить параметры расширения во время транспорта. Этот сертификат автоматически создается путем перезапуска гостевого агента Windows на виртуальной машине:
- Открытие диспетчера задач
- Перейдите на вкладку "Сведения"
- Поиск процесса WindowsAzureGuestAgent.exe
- Щелкните правой кнопкой мыши и выберите "Завершить задачу". Процесс автоматически перезапущен
Вы также можете активировать новую цельState на виртуальной машине, выполнив "Повторное применение виртуальной машины". Vm Reapply — это API, представленный в 2020 году для повторного приложения состояния виртуальной машины. Мы рекомендуем это сделать в то время, когда вы можете терпеть короткое время простоя виртуальной машины. Обычно повторное применение не перезагружает виртуальную машину, но в редких случаях может активировать ожидающее обновление, требующее перезагрузки.
Портал Azure:
На портале выберите виртуальную машину и в левой области в разделе "Поддержка и устранение неполадок", выберите "Повторное развертывание" и "Повторноеприменение".
Azure PowerShell (замените имя RG и имя виртуальной машины вашими значениями):
Set-AzVM -ResourceGroupName <RG Name> -Name <VM Name> -Reapply
Azure CLI (замените имя RG и имя виртуальной машины вашими значениями):
az vm reapply -g <RG Name> -n <VM Name>
Если приложение виртуальной машины не работало, вы можете добавить новый пустой диск данных на виртуальную машину на портале управления Azure, а затем удалить его позже после добавления сертификата.
Просмотр журналов расширений на виртуальной машине
Если предыдущие шаги не работали и если расширение по-прежнему находится в состоянии сбоя, следующим шагом является просмотр журналов в виртуальной машине.
На виртуальной машине Windows журналы расширений по умолчанию находятся в
C:\WindowsAzure\Logs\Plugins
Параметры расширения и файлы состояния по умолчанию находятся в
C:\Packages\Plugins
На виртуальной машине Linux журналы расширений по умолчанию находятся в
/var/log/azure/
Параметры расширения и файлы состояния по подробным сведениям
/var/lib/waagent/
Каждое расширение отличается, но обычно они следуют аналогичным принципам:
Пакеты расширений и двоичные файлы загружаются на виртуальной машине (например, "/var/lib/waagent/custom-script/download/1" для Linux или "C:\Packages\Plugins\Microsoft.Compute.CustomScriptExtension\1.10.12\Downloads\0" для Windows).
Их конфигурация и параметры передаются из платформы Azure в обработчик расширений через агент виртуальной машины (например, "/var/lib/waagent/Microsoft.Azure.Extensions.CustomScript-2.1.3/config" для Linux или "C:\Packages\Plugins\Microsoft.Compute.CustomScriptExtension\1.10.12\RuntimeSettings" для Windows)
Обработчики расширений на виртуальной машине записываются в файл состояния (например, "/var/lib/waagent/Microsoft.Azure.Extensions.CustomScript-2.1.3/status/1.status/1." для Linux или "C:\Packages\Plugins\Microsoft.Compute.CustomScriptExtension\1.10.12\Status" для Windows), который сообщается платформе Azure. Это состояние , которое сообщается с помощью PowerShell, CLI или в колонке расширения виртуальной машины на портале Azure.
Они также записывают подробные журналы выполнения (например, "/var/log/azure/custom-script/handler.log" для Linux или "C:\WindowsAzure\Logs\Plugins\Microsoft.Compute.CustomScriptExtension\1.10.12\CustomScriptHandler.log" для Windows.
Если виртуальная машина повторно создана из существующей виртуальной машины
Возможно, вы создаете виртуальную машину Azure на основе специализированного диска, исходящего из другой виртуальной машины Azure. В этом случае возможно, что старая виртуальная машина содержит расширения и двоичные файлы, журналы и файлы состояния, оставшиеся. Новая модель виртуальной машины не знает о состояниях расширений предыдущей виртуальной машины и может сообщить о неправильном состоянии этих расширений. Настоятельно рекомендуется удалить расширения из старой виртуальной машины перед созданием новой виртуальной машины, а затем переустановить эти расширения после создания новой виртуальной машины. То же самое может произойти при создании обобщенного образа из существующей виртуальной машины Azure. Мы предлагаем удалить расширения, чтобы избежать несогласованного состояния из расширений.
Известные проблемы
PowerShell не распознает как внутреннюю или внешнюю команду
Вы заметите следующие записи об ошибках в выходных данных расширения RunCommand:
RunCommandExtension failed with "'powershell' isn't recognized as an internal or external command,"
Анализ
Расширения выполняются под учетной записью локальной системы, поэтому возможно, что powershell.exe работает нормально при подключении RDP к виртуальной машине, но завершается сбоем при запуске с помощью RunCommand.
Solution
- Убедитесь, что PowerShell правильно указан в переменной среды PATH:
- Открыть панель управления
- Система и безопасность
- Система
- Вкладка "Дополнительно" —> переменные среды
- В разделе "Системные переменные" щелкните изменить и убедитесь, что PowerShell находится в переменной среды PATH (обычно : "C:\Windows\System32\WindowsPowerShell\v1.0")
- Перезагрузите виртуальную машину или перезапустите службу WindowsAzureGuestAgent, а затем повторите команду запуска.
Команда не распознана как внутренняя или внешняя команда
В файле C:\WindowsAzure\Logs\Plugins<ExtensionName><Version>\CommandExecution.log вы увидите следующее:
Execution Error: '<command>' isn't recognized as an internal or external command, operable program or batch file.
Анализ
Расширения выполняются под учетной записью локальной системы, поэтому возможно, что powershell.exe работает нормально при подключении RDP к виртуальной машине, но завершается сбоем при запуске с помощью RunCommand.
Solution
- Откройте командную строку на виртуальной машине и выполните команду, чтобы воспроизвести ошибку. Агент виртуальной машины использует cmd.exe администратора и может иметь определенную предварительно настроенную команду для выполнения при каждом запуске cmd.
- Кроме того, скорее всего, переменная PATH неправильно настроена, но это зависит от команды, имеющей проблему.
VmAccessAgent не удается обновить параметры подключения к удаленному рабочему столу для учетной записи администратора. Ошибка: System.Runtime.InteropServices.COMException (0x800706D9): нет дополнительных конечных точек, доступных в средстве сопоставления конечных точек.
В состоянии расширения отображается следующее:
Type Microsoft.Compute.VMAccessAgent
Version 2.4.8
Status Provisioning failed
Status level Error
Status message Cannot update Remote Desktop Connection settings for Administrator account. Error: System.Runtime.InteropServices.COMException (0x800706D9): There are no more endpoints available from the endpoint mapper. (Exception from HRESULT: 0x800706D9) at NetFwTypeLib.INetFwRules.GetEnumerator() at
Microsoft.WindowsAzure.GuestAgent.Plugins.JsonExtensions.VMAccess.RemoteDesktopManager.EnableRemoteDesktopFirewallRules()
at Microsoft.WindowsAzure.GuestAgent.Plugins.JsonExtensions.VMAccess.RemoteDesktopManager.EnableRemoteDesktop() at
Анализ
Эта ошибка может произойти, если служба брандмауэра Windows не запущена.
Solution
Проверьте, включена ли и запущена служба брандмауэра Windows. Если это не так, включите и запустите его, а затем повторите попытку запуска VMAccessAgent.
Удаленный сертификат недопустим в соответствии с процедурой проверки.
Вы увидите следующее в WaAppAgent.log
System.Net.WebException: The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel. ---> System.Security.
Authentication.AuthenticationException: The remote certificate is invalid according to the validation procedure.
Анализ
Возможно, ваша виртуальная машина отсутствует корневой сертификат Балтимора CyberTrust в "доверенных корневых центрах сертификации".
Solution
Откройте консоль сертификатов с certmgr.msc и проверьте наличие сертификата.
Стороннее средство проверки SSL, например ZScaler, может нарушить цепочку сертификатов. Для обхода проверки SSL следует настроить такие средства.