Megosztás a következőn keresztül:


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:

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.