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énysablonok készítéséről további információt a Bővítménysablonok készítése című témakörben talál.

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 Azure PowerShell hajthatók végre. A sablon végrehajtása után a bővítmény állapota megtekinthető az Azure Resource Explorerből vagy a parancssori eszközökből.

Bemutatunk egy példát:

Azure PowerShell:

Get-AzVM -ResourceGroupName $RGName -Name $vmName -Status

A minta kimenete 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 platformnak, 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 keresése

Egyes bővítmények egy adott oldallal rendelkeznek, amely leírja, hogyan háríthatja el őket. A bővítmények listáját és lapjait a Bővítmények hibaelhárítása című témakörben találja.

A bővítmény állapotának megtekintése

A fentiekben leírtak szerint a bővítmény állapota a PowerShell-parancsmag futtatásával érhető el:

Get-AzVM -ResourceGroupName $RGName -Name $vmName -Status

vagy a CLI-parancsot:

az vm extension show -g <RG Name> --vm-name <VM Name>  --name <Extension Name>

vagy a Azure Portal a virtuális gép paneljének / Beállításainak /Bővítményeinek tallózásával. 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, amely miatt a virtuális gép sikeresen létrejött, de a szkript sikertelen volt. Ilyen körülmények között a hiba elhárításának ajánlott módja a bővítmény eltávolítása és a sablon ismételt futtatá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 a Azure PowerShell

Remove-AzVMExtension -ResourceGroupName $RGName -VMName $vmName -Name "myCustomScriptExtension"

A bővítmény eltávolítása után a sablon újra futtatható a szkriptek futtatásához a virtuális gépen.

Új GoalState aktiválása a virtuális gépen

Észreveheti, hogy egy bővítmény nem lett végrehajtva, vagy egy hiányzó "Windows Azure CRP-tanúsítványgenerátor" miatt nem hajtható végre (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 újra létrejön a Windows-vendégügynök virtuális gépről történő újraindításával:

  • A Feladatkezelő megnyitása
  • Lépjen 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-ot is aktiválhat a virtuális gépen egy "VM Reapply" 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 meg, amikor el tudja viselni a virtuális gépek rövid állásidejét. Bár az újraalkalmazás önmagában nem okoz újraindítást a virtuális gépeken, és a Reapply meghívása legtöbbször nem indítja újra a virtuális gépet, nagyon kicsi a kockázata annak, hogy a virtuálisgép-modell egyéb függőben lévő frissítése is érvénybe lép, amikor az Újraalkalmazás új célállapotot aktivál, és hogy más módosítások újraindítást igényelhetnek.

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 Ismételt ü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 egy "Virtuális gép újraalkalmazása" nem működött, hozzáadhat egy új üres adatlemezt a virtuális géphez az Azure Felügyeleti portálon, majd később eltávolíthatja a tanúsítvány újbóli hozzáadá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 virtuális gépen belüli naplók megtekintése.

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 á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 következő helyen találhatók:

/var/log/azure/

A bővítménybeállítások és á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 töltődnek le (pl. "/var/lib/waagent/custom-script/download/1" Linux vagy "C:\Packages\Plugins\Microsoft.Compute.CustomScriptExtension\1.10.12\Downloads\0" Windows rendszeren).

Konfigurációjukat és beállításaikat 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" Windows rendszeren)

A virtuális gépen belüli bővítménykezelők egy állapotfájlba írnak (pl. "/var/lib/waagent/Microsoft.Azure.Extensions.CustomScript-2.1.3/status/1.status" Linux vagy "C:\Packages\Plugins\Microsoft.Compute.CustomScriptExtension\1.10.12\Status" windowsos rendszeren, amelyet ezután jelenteni fog az Azure Platformnak. Ez az állapot a PowerShellen, a parancssori felületen vagy a virtuális gép bővítménypaneljén jelentett állapot a Azure Portal.

Részletes naplókat is írnak a végrehajtásukról (pl. "/var/log/azure/custom-script/handler.log" Linux vagy "C:\WindowsAzure\Logs\Plugins\Microsoft.Compute.CustomScriptExtension\1.10.12\CustomScriptHandler.log" Windows rendszeren).

Ha a virtuális gép újra létrejön egy meglévő virtuális gépről

Előfordulhat, hogy egy másik Azure-beli virtuális gépről származó speciális lemez alapján hoz létre Azure-beli virtuális gépet. Ebben az esetben előfordulhat, hogy a régi virtuális gép bővítményeket tartalmazott, és így bináris fájlok, naplók és állapotfájlok maradnak meg. Az új virtuálisgép-modell nem fogja tudni a korábbi virtuális gép bővítményállapotait, é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 történhet, ha egy meglévő Azure-beli virtuális gépről hoz létre általános rendszerképet. Kérjük, 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 jelennek meg:

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 használ a virtuális gépre, de a RunCommand futtatásával 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 elemre, és győződjön meg arról, hogy a PowerShell szerepel a PATH környezeti változóban (á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 Parancs futtatása paranccsal.

A parancs nem ismerhető fel belső vagy külső parancsként

A következőt látja a C:\WindowsAzure\Logs\Plugins<ExtensionName><Version>\CommandExecution.log fájlban:

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 használ a virtuális gépre, de a RunCommand futtatásával meghiúsul.

Megoldás

  • Nyisson meg egy parancssort a virtuális gépen, és futtasson egy parancsot a hiba reprodukálásához. A virtuálisgép-ügynök a Rendszergazda cmd.exe használja, és előfordulhat, hogy rendelkezik néhány előre konfigurált paranccsal a parancs minden indításakor.
  • Az is 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 rendszergazdai fiók távoli asztali kapcsolati beállításait. Hiba: System.Runtime.InteropServices.COMException (0x800706D9): Nincs több végpont a végpontleképezőből.

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űzfal szolgá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 érvénytelen az érvényesítési eljárásnak megfelelően.

A waAppAgent.log fájlban a következőt látja:

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 nem rendelkezik a Baltimore CyberTrust főtanúsítványával a "Megbízható legfelső szintű hitelesítésszolgáltatók" mappában.

Megoldás

Nyissa meg a tanúsítványkonzolt a certmgr.msc fájllal, és ellenőrizze, hogy a tanúsítvány ott van-e.

Egy másik lehetséges probléma, 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.