Az Azure-beli Windows rendszerű virtuálisgép-bővítmény hibáinak elhárítása
Az Azure Resource Manager-sablonok áttekintése
Az Azure Resource Manager-sablonok segítségével deklaratívan megadhatja az Azure IaaS-infrastruktúrát JSON nyelven az erőforrások közötti függőségek meghatározásával.
A bővítmények használatához alkalmas sablonok létrehozásáról a Bővítménysablonok létrehozása című cikkben talál további információt.
Ez a cikk a virtuálisgép-bővítmények gyakori hibáinak elhárítását ismerteti.
Bővítmény állapotának megtekintése
Az Azure Resource Manager-sablonok végrehajthatók az Azure PowerShellből. A sablon végrehajtása után a bővítmény állapota megtekinthető az Azure Resource Explorerben vagy a parancssori eszközökben.
Példa:
Azure PowerShell:
Get-AzVM -ResourceGroupName $RGName -Name $vmName -Status
A mintakimenet a következő:
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
}
]
}
Bővítményhibák elhárítása
Ellenőrizze, hogy fut-e a virtuálisgép-ügynök, és készen áll-e
A virtuálisgép-ügynök szükséges a bővítmények kezeléséhez, telepítéséhez és végrehajtásához. Ha a virtuálisgép-ügynök nem fut, vagy nem tud kész állapotot jelenteni az Azure-platformon, akkor a bővítmények nem fognak megfelelően működni.
A virtuálisgép-ügynök hibaelhárításához tekintse meg az alábbi oldalakat:
- Windows rendszerű virtuális gépekhez készült Windows Azure-vendégügynök hibaelhárítása
- Linux rendszerű virtuális gépekHez készült Azure Linux-ügynök hibaelhárítása
Az adott bővítmény hibaelhárítási útmutatójának ellenőrzése
Egyes bővítmények egy adott oldallal rendelkeznek, amely leírja, hogyan háríthatja el őket. A bővítmények és lapok listáját a Bővítmények hibaelhárítása lapon találja.
A bővítmény állapotának megtekintése
A fentiekben ismertetett módon a bővítmény állapota a PowerShell-parancsmag futtatásával érhető el:
Get-AzVM -ResourceGroupName $RGName -Name $vmName -Status
vagy a CLI-parancs:
az vm extension show -g <RG Name> --vm-name <VM Name> --name <Extension Name>
vagy az Azure Portalon a virtuális gép paneljének / Beállításainak / Bővítményeinek böngészésével. Ezután kattintson a bővítményre, és ellenőrizze annak állapotát és üzenetét.
Futtassa újra a bővítményt a virtuális gépen
Ha egyéni szkriptbővítménnyel futtat szkripteket a virtuális gépen, előfordulhat, hogy olyan hibába ütközik, amelyben a virtuális gép sikeresen létrejött, de a szkript sikertelen volt. Ilyen feltételek mellett a hiba helyreállításának ajánlott módja a bővítmény eltávolítása és a sablon újrafuttatása. Megjegyzés: A jövőben ez a funkció tovább fog bővülni, hogy ne kelljen eltávolítani a bővítményt.
A bővítmény eltávolítása az Azure PowerShellből
Remove-AzVMExtension -ResourceGroupName $RGName -VMName $vmName -Name "myCustomScriptExtension"
A bővítmény eltávolítása után a sablon újra végrehajtható a szkriptek virtuális gépen való futtatásához.
Új GoalState aktiválása a virtuális gépen
Észreveheti, hogy a bővítmény nem lett végrehajtva, vagy egy hiányzó "Windows Azure CRP-tanúsítványgenerátor" miatt nem fut (ez a tanúsítvány a bővítmény védett beállításainak átvitelének védelmére szolgál). A tanúsítvány automatikusan újragenerálódik a Windows vendégügynök virtuális gépről való újraindításával:
- A Feladatkezelő megnyitása
- Ugrás a Részletek lapra
- A WindowsAzureGuestAgent.exe folyamat megkeresése
- Kattintson a jobb gombbal, és válassza a "Feladat befejezése" lehetőséget. A folyamat automatikusan újraindul
Új GoalState-t is aktiválhat a virtuális gépre egy "virtuális gép újraalkalmazása" végrehajtásával. A VM Reapply egy 2020-ban bevezetett API a virtuális gép állapotának újbóli alkalmazásához. Javasoljuk, hogy ezt olyan időpontban tegye, amikor el tudja viselni a virtuális gépek rövid állásidejét. Bár maga az újraalkalmazás nem okoz virtuálisgép-újraindítást, és az Újraalkalmazás meghívása legtöbbször nem fogja újraindítani a virtuális gépet, nagyon kicsi annak a kockázata, hogy a virtuálisgép-modell egyéb függőben lévő frissítései is érvénybe lépnek, amikor az újraalkalmazás új célállapotot aktivál, és hogy a többi módosítás újraindítást igényelhet.
Azure Portal:
A portálon válassza ki a virtuális gépet, majd a bal oldali panelen a Támogatás + hibaelhárítás területen válassza az Újra üzembe helyezés + újraalkalmazás lehetőséget, majd az Újraalkalmazás lehetőséget.
Azure PowerShell (cserélje le az RG-nevet és a virtuális gép nevét az értékekre)::
Set-AzVM -ResourceGroupName <RG Name> -Name <VM Name> -Reapply
Azure CLI (cserélje le az RG-nevet és a virtuális gép nevét az értékekre)::
az vm reapply -g <RG Name> -n <VM Name>
Ha a "virtuális gép újraalkalmazása" nem működött, hozzáadhat egy új üres adatlemezt a virtuális géphez az Azure Management Portalon, majd később eltávolíthatja a tanúsítvány visszaadása után.
Tekintse meg a virtuális gépen belüli bővítménynaplókat
Ha az előző lépések nem működtek, és a bővítmény továbbra is sikertelen állapotban van, a következő lépés a naplók megtekintése a virtuális gépen.
Windows rendszerű virtuális gépeken a bővítménynaplók általában a
C:\WindowsAzure\Logs\Plugins
A bővítménybeállítások és az állapotfájlok pedig a következő helyen lesznek:
C:\Packages\Plugins
Linux rendszerű virtuális gépeken a bővítménynaplók általában a
/var/log/azure/
A bővítménybeállítások és az állapotfájlok pedig a következő helyen lesznek:
/var/lib/waagent/
Minden bővítmény egyedi, de általában hasonló elvek szerint működnek:
A bővítménycsomagok és bináris fájlok a virtuális gépen vannak letöltve (pl. " /var/lib/waagent/custom-script/download/1" Linux vagy "C:\Packages\Plugins\Microsoft.Compute.CustomScriptExtension\1.10.12\Downloads\0" For Windows).
A konfigurációt és a beállításokat az Azure Platform átadja a bővítménykezelőnek a virtuálisgép-ügynökön keresztül (pl. " /var/lib/waagent/Microsoft.Azure.Extensions.CustomScript-2.1.3/config" Linux vagy "C:\Packages\Plugins\Microsoft.Compute.CustomScriptExtension\1.10.12\RuntimeSettings" for Windows)
A virtuális gépen belüli bővítménykezelők állapotfájlba írnak (pl. " /var/lib/waagent/Microsoft.Azure.Extensions.CustomScript-2.1.3/status/1.status" Linuxhoz vagy "C:\Packages\Plugins\Microsoft.Compute.CustomScriptExtension\1.10.12\Status" a Windowshoz), amelyet ezután jelenteni fog az Azure Platformnak. Ez az állapot a PowerShellben, a parancssori felületen vagy a virtuális gép bővítménypanelén az Azure Portalon jelentett állapot.
Részletes naplókat is írnak a végrehajtásukról (pl. " /var/log/azure/custom-script/handler.log" Linuxhoz vagy "C:\WindowsAzure\Logs\Plugins\Microsoft.Compute.CustomScriptExtension\1.10.12\CustomScriptHandler.log" Windowshoz).
Ha a virtuális gépet egy meglévő virtuális gépről hozza létre újra
Előfordulhat, hogy egy azure-beli virtuális gépet egy másik Azure-beli virtuális gépről érkező speciális lemez alapján hoz létre. Ebben az esetben lehetséges, hogy a régi virtuális gép bővítményeket tartalmazott, így a bináris fájlok, a naplók és az állapotfájlok is megmaradnak. Az új virtuálisgép-modell nem fog tudni az előző virtuális gép bővítményállapotáról, és előfordulhat, hogy helytelen állapotot jelez ezekhez a bővítményekhez. Javasoljuk, hogy az új virtuális gép létrehozása előtt távolítsa el a bővítményeket a régi virtuális gépről, majd telepítse újra ezeket a bővítményeket az új virtuális gép létrehozása után. Ugyanez fordulhat elő, ha egy meglévő Azure-beli virtuális gépről hoz létre általános rendszerképet. Felkérjük, hogy távolítsa el a bővítményeket, hogy elkerülje a bővítmények inkonzisztens állapotát.
Ismert problémák
A PowerShell nem ismerhető fel belső vagy külső parancsként
A RunCommand bővítmény kimenetében a következő hibabejegyzések láthatóak:
RunCommandExtension failed with "'powershell' isn't recognized as an internal or external command,"
Elemzés
A bővítmények helyi rendszerfiókban futnak, így nagyon lehetséges, hogy powershell.exe megfelelően működik, amikor RDP-t futtat a virtuális gépre, de a RunCommand használatával futtatva meghiúsul.
Megoldás
- Ellenőrizze, hogy a PowerShell megfelelően szerepel-e a PATH környezeti változóban:
- Nyissa meg Vezérlőpultot
- Rendszer és biztonság
- Rendszer
- Speciális lap –> Környezeti változók
- A "Rendszerváltozók" területen kattintson a Szerkesztés gombra, és győződjön meg arról, hogy a PowerShell a PATH környezeti változóban van (általában: "C:\Windows\System32\WindowsPowerShell\v1.0")
- Indítsa újra a virtuális gépet, vagy indítsa újra a WindowsAzureGuestAgent szolgáltatást, majd próbálkozzon újra a Futtatás paranccsal.
A parancs nem ismerhető fel belső vagy külső parancsként
A C:\WindowsAzure\Logs\Plugins<ExtensionName><Version>\CommandExecution.log fájlban a következők láthatók:
Execution Error: '<command>' isn't recognized as an internal or external command, operable program or batch file.
Elemzés
A bővítmények helyi rendszerfiókban futnak, így nagyon lehetséges, hogy powershell.exe megfelelően működik, amikor RDP-t futtat a virtuális gépre, de a RunCommand használatával futtatva meghiúsul.
Megoldás
- Nyisson meg egy parancssort a virtuális gépen, és hajtson végre egy parancsot a hiba reprodukálásához. A virtuálisgép-ügynök a rendszergazdai cmd.exe használja, és előfordulhat, hogy a parancs minden indításakor végrehajt valamilyen előre konfigurált parancsot.
- Valószínű, hogy a PATH változó helytelenül van konfigurálva, de ez a problémát okozó parancstól függ.
A VMAccessAgent nem tudja frissíteni a távoli asztali kapcsolat beállításait a rendszergazdai fiókhoz. Hiba: System.Runtime.InteropServices.COMException (0x800706D9): A végpontleképezőből nem érhető el több végpont.
A bővítmény állapota a következő:
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
Elemzés
Ez a hiba akkor fordulhat elő, ha a Windows tűzfalszolgáltatás nem fut.
Megoldás
Ellenőrizze, hogy a Windows tűzfal szolgáltatás engedélyezve van-e és fut-e. Ha nem, engedélyezze és indítsa el , majd próbálkozzon újra a VMAccessAgent futtatásával.
A távoli tanúsítvány az érvényesítési eljárás szerint érvénytelen.
A következőt látja a 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.
Elemzés
A virtuális gép valószínűleg hiányzik a Baltimore CyberTrust főtanúsítványából a "Megbízható legfelső szintű hitelesítésszolgáltatók" területen.
Megoldás
Nyissa meg a tanúsítványkonzolt a certmgr.msc használatával, és ellenőrizze, hogy a tanúsítvány létezik-e.
Egy másik lehetséges probléma az, hogy a tanúsítványláncot egy külső SSL-ellenőrző eszköz, például a ZScaler megszakítja. Ezt az eszközt úgy kell konfigurálni, hogy megkerülje az SSL-ellenőrzést.