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


Virtuális gépek cloud-inittel való üzembe helyezésének hibaelhárítása

Figyelemfelhívás

Ez a cikk a CentOS-ra, egy olyan Linux-disztribúcióra hivatkozik, amely közel áll az élettartam (EOL) állapotához. Fontolja meg a használatát, és ennek megfelelően tervezze meg. További információ: CentOS End Of Life útmutató.

A következőkre vonatkozik: ✔️ Linux rendszerű virtuális gépek rugalmas méretezési ✔️ csoportjai

Ha általánosított egyéni rendszerképeket hozott létre, és a cloud-init használatával végezte a kiépítést, de azt észlelte, hogy a virtuális gép nem megfelelően jött létre, hibaelhárítást kell végeznie az egyéni rendszerképekkel.

Néhány példa a kiépítéssel kapcsolatos problémákra:

  • A virtuális gép 40 percig elakad a létrehozáskor, és a virtuális gép létrehozása sikertelenként van megjelölve.
  • CustomData nem lesz feldolgozva.
  • A rövid élettartamú lemez csatlakoztatása sikertelen.
  • A felhasználók nem jönnek létre, vagy felhasználói hozzáférési problémák lépnek fel.
  • A hálózatkezelés nincs megfelelően beállítva.
  • Fájl- vagy partícióhibák felcserélése.

Ez a cikk végigvezeti a cloud-init hibaelhárításán. További részletes információkért tekintse meg a cloud-init részletes ismertetését.

1. lépés: Az üzembe helyezés tesztelése customData

A Cloud-init a virtuális gép létrehozásakor elfogadhatja customDataa neki átadott elemet. Először győződjön meg arról, hogy ez nem okoz problémát az üzembe helyezésekkel kapcsolatban. Próbálja meg kiépíteni a virtuális gépet anélkül, hogy bármilyen konfigurációt átad. Ha úgy találja, hogy a virtuális gép kiépítése sikertelen, folytassa az alábbi lépésekkel, ha úgy találja, hogy a megadott konfiguráció nem lesz alkalmazva, folytassa a 4. lépéssel.

2. lépés: Képkövetelmények áttekintése

A virtuális gépek kiépítési hibájának elsődleges oka, hogy az operációs rendszerkép nem felel meg az Azure-ban való futtatás előfeltételeinek. Győződjön meg arról, hogy a rendszerképek megfelelően vannak előkészítve, mielőtt megkísérli kiépíteni őket az Azure-ban.

Az alábbi cikkek az Azure-ban támogatott különböző Linux-disztribúciók előkészítésének lépéseit ismertetik:

A támogatott Azure cloud-init rendszerképek esetében a Linux-disztribúciók már rendelkeznek az összes szükséges csomaggal és konfigurációval a rendszerkép Azure-ban való megfelelő kiépítéséhez. Ha úgy találja, hogy a virtuális gép nem tud saját válogatott rendszerképből létrehozni, próbáljon ki egy támogatott Azure Marketplace-rendszerképet, amely már konfigurálva van a cloud-inithez, az opcionális customDatalehetőséggel. Ha a customData rendszer megfelelően működik egy Azure Marketplace-rendszerképpel, akkor valószínűleg probléma van a válogatott rendszerképpel.

3. lépés: Virtuálisgép-naplók összegyűjtése és áttekintése

Ha a virtuális gép kiépítése nem sikerül, az Azure 20 percig "létrehozási" állapotot jelenít meg, majd újraindítja a virtuális gépet, és várjon még 20 percet, mielőtt végül sikertelenként jelöli meg a virtuális gép üzembe helyezését, mielőtt végül hibát jelez.OSProvisioningTimedOut

Amíg a virtuális gép fut, szüksége lesz a virtuális gép naplóira, hogy megértse, miért nem sikerült a kiépítés. Annak megértéséhez, hogy miért nem sikerült a virtuális gép kiépítése, ne állítsa le a virtuális gépet. Futtassa a virtuális gépet. A naplók gyűjtéséhez a sikertelen virtuális gépet futó állapotban kell tartania. A naplók gyűjtéséhez használja az alábbi módszerek egyikét:

sudo cat /rescue/var/log/cloud-init*
sudo cat /rescue/var/log/waagent*
sudo cat /rescue/var/log/syslog*
sudo cat /rescue/var/log/rsyslog*
sudo cat /rescue/var/log/messages*
sudo cat /rescue/var/log/kern*
sudo cat /rescue/var/log/dmesg*
sudo cat /rescue/var/log/boot*

Feljegyzés

Másik lehetőségként manuálisan is létrehozhat mentési virtuális gépet az Azure Portal használatával. További információ : Linux rendszerű virtuális gépek hibaelhárítása az operációsrendszer-lemez helyreállítási virtuális géphez való csatolásával az Azure Portalon.

A kezdeti hibaelhárítás megkezdéséhez kezdje a cloud-init naplókkal, és ismerje meg, hogy hol történt a hiba, majd használja a többi naplót a részletes elemzéshez, és adjon további elemzéseket.

  • /var/log/cloud-init.log
  • /var/log/cloud-init-output.log
  • Soros/rendszerindítási naplók

Minden naplóban kezdje el keresni a "Failed", "WARNING", "WARN", "err", "error", "ERROR" kifejezéseket. A kis- és nagybetűkre érzékeny keresések figyelmen kívül hagyásának beállítása ajánlott.

Tipp.

Ha egyéni rendszerkép hibaelhárításával foglalkozik, érdemes megfontolnia egy felhasználó hozzáadását a rendszerkép során. Ha a kiépítés nem tudja beállítani a rendszergazda felhasználót, akkor is bejelentkezhet az operációs rendszerre.

Naplók elemzése

Az alábbiakban további részleteket talál arról, hogy mit érdemes keresni az egyes cloud-init naplókban.

/var/log/cloud-init.log

Alapértelmezés szerint minden olyan cloud-init esemény, amelynek prioritása hibakeresés vagy magasabb, a program a következőre /var/log/cloud-init.logír: . Ez részletes naplókat biztosít minden olyan eseményről, amely a cloud-init inicializálás során történt.

Példa:

2019-10-10 04:51:25,321 - util.py[DEBUG]: Failed mount of '/dev/sr0' as 'auto': Unexpected error while running command.
Command: ['mount', '-o', 'ro,sync', '-t', 'auto', u'/dev/sr0', '/run/cloud-init/tmp/tmpLIrklc']
Exit code: 32
Reason: -
Stdout:
Stderr: mount: unknown filesystem type 'udf'
2020-01-31 00:21:53,352 - DataSourceAzure.py[WARNING]: /dev/sr0 was not mountable

Ha hibát vagy figyelmeztetést talált, olvassa el visszafelé a cloud-init naplóban, hogy megértse, milyen cloud-init kísérlet történt a hiba vagy figyelmeztetés elérése előtt. A cloud-init sok esetben operációsrendszer-parancsokat futtat vagy kiépítési műveleteket hajt végre a hiba előtt, amiből megtudhatja, hogy miért jelentek meg hibák a naplókban. Az alábbi példa azt mutatja, hogy a cloud-init közvetlenül azelőtt kísérelt meg csatlakoztatni egy eszközt, hogy hiba történt volna.

2019-10-10 04:51:24,010 - util.py[DEBUG]: Running command ['mount', '-o', 'ro,sync', '-t', 'auto', u'/dev/sr0', '/run/cloud-init/tmp/tmpXXXXX'] with allowed return codes [0] (shell=False, capture=True)

Ha rendelkezik hozzáféréssel a Soros konzolhoz, megpróbálhatja újrafuttatni azt a parancsot, amelyet a cloud-init futtatni próbált.

A naplózás /var/log/cloud-init.log a /etc/cloud/cloud.cfg.d/05_logging.cfg fájlon belül is újrakonfigurálható. A cloud-init naplózásával kapcsolatos további részletekért tekintse meg a cloud-init dokumentációját.

/var/log/cloud-init-output.log

A cloud-init fázisaiból és stderr szakaszaiból stdout is lekérheti az információkat. Ez általában magában foglalja az útválasztási tábla adatait, a hálózati információkat, az ssh gazdagépkulcs-ellenőrzési információkat, stdout valamint stderr a cloud-init minden egyes szakaszára vonatkozó időbélyeget. Ha szükséges, stderr a stdout naplózás újrakonfigurálható./etc/cloud/cloud.cfg.d/05_logging.cfg

Soros/rendszerindítási naplók

A Cloud-init több függőséget is tartalmaz, ezek dokumentálva vannak az Azure-beli rendszerképek szükséges előfeltételeiben, például a hálózatkezelésben, a tárolásban, az ISO csatlakoztatásának képességében, valamint az ideiglenes lemez csatlakoztatásában és formázásában. Ezek bármelyike hibákat okozhat, és a cloud-init meghibásodását okozhatja. Ha például a virtuális gép nem tud DHCP-bérletet kapni, a cloud-init sikertelen lesz.

Ha továbbra sem tudja elkülöníteni, hogy miért nem sikerült kiépíteni a cloud-initet, akkor meg kell értenie, hogy milyen felhőbeli szakaszok és mikor futnak a modulok. További részletekért tekintse meg a cloud-init részletesebb megismerését.

4. lépés: Annak vizsgálata, hogy miért nem alkalmazza a konfigurációt

A cloud-init nem minden hibája eredményez végzetes üzembe helyezési hibát. Ha például egy cloud-init konfigurációban használja a runcmd modult, a futtatott parancs nem nulla kilépési kódja miatt a virtuális gép kiépítése meghiúsul. Ennek az az oka, hogy az alapvető kiépítési funkciók után fut, amelyek a cloud-init első 3 szakaszában történnek. A konfiguráció nem alkalmazható hibáinak elhárításához tekintse át a 3. lépés naplóit és a cloud-init modulokat manuálisan. Példa:

  • runcmd - a szkriptek hiba nélkül futnak? Futtassa manuálisan a konfigurációt a terminálról, hogy a várt módon fusson.
  • Csomagok telepítése – a virtuális gép rendelkezik hozzáféréssel a csomagtárakhoz?
  • Ellenőrizze a customData virtuális gép számára biztosított adatkonfigurációt is, amely a következő helyen /var/lib/cloud/instances/<unique-instance-identifier>/user-data.txttalálható: .

Következő lépések

Ha továbbra sem tudja elkülöníteni, hogy a Cloud-init miért nem futtatta a konfigurációt, jobban meg kell vizsgálnia, hogy mi történik az egyes felhőbeli init fázisokban, és mikor futnak a modulok. További információkért tekintse meg a Cloud-init konfigurációjának részletesebb megismerését.