Azure Batch-készlet és csomóponthibák
Néhány Azure Batch-készlet létrehozása és kezelése azonnal megtörténik. Az ilyen műveletek hibáinak észlelése egyszerű, mivel a hibák általában azonnal visszatérnek az API-ból, a parancssorból vagy a felhasználói felületről. Egyes műveletek azonban aszinkronok, a háttérben futnak, és több percet is igénybe vesznek. Ez a cikk a készletek és csomópontok háttérműveleteiben előforduló hibák észlelésének és elkerülésének módjait ismerteti.
Ügyeljen arra, hogy az alkalmazások átfogó hibaellenőrzést hajtsanak végre, különösen az aszinkron műveletek esetében. Az átfogó hibaellenőrzés segíthet a problémák gyors azonosításában és diagnosztizálásában.
Készlethibák
A készlet hibái az átméretezési időtúllépéssel vagy hibával, az automatikus méretezési hibával vagy a készlet törlési hibájával kapcsolatosak lehetnek. A részletesebb hibaüzenetek befoglalásával a problémák diagnosztizálása és megoldása egyszerűbbé vált.
Továbbító szolgáltatói hiba részletei
A továbbítószolgáltató hibáit közvetlenül továbbítják a mögöttes Azure-erőforrás-szolgáltatóktól, például az Azure-beli virtuálisgép-méretezési csoporttól (VMSS), és mélyebb betekintést nyújtanak a készletművelet sikertelenségébe. Ezek a hibák általában akkor fordulnak elő, ha egy készlet létrehozását, átméretezését vagy törlését egy alsó rétegbeli szolgáltatásproblémák befolyásolják.
A továbbítószolgáltató hibája
Ezek a hibák strukturált JSON formátumban jelennek meg, amely a következő kulcsösszetevőket tartalmazza:
- Hibakód: A hiba típusa (pl. AllocationFailed, BadRequest stb.).
- Hibaüzenet: A hiba rövid leírása
- Json-szolgáltatói hiba: A mögöttes Azure-szolgáltatás (pl. VMSS) által létrehozott részletes hibaüzenet.
- Csonkolt szolgáltatói hiba: Logikai érték, amely jelzi, hogy a szolgáltató hibaüzenete csonkolt-e a méretkorlátok miatt.
Példa továbbítószolgáltatói hibákra
1. példa
Hibakód:AllocationFailed
Hibaüzenet: A dedikált csomópontok kívánt száma nem foglalható le
JSON-szolgáltatói hiba:
{
"error": {
"code": "BadRequest",
"message": "The selected VM size 'STANDARD_A1_V2' cannot boot Hypervisor Generation '2'. If this was a Create operation, please ensure that the Hypervisor Generation of the Image matches the Hypervisor Generation of the selected VM Size. If this was an Update operation, please choose a Hypervisor Generation '2' VM Size."
}
}
Csonkolt JSON-szolgáltatói hiba: Hamis
Ez a hiba a virtuális gép mérete és a Hipervizor generáció közötti eltérést jelzi. A hibaüzenet egy kompatibilis virtuálisgép-méret kiválasztását javasolja a probléma megoldásához.
2. példa
Hibakód:AllocationFailed
Hibaüzenet: Belső hiba történt a készlet átméretezése során
JSON-szolgáltatói hiba:
{
"error": {
"code": "ScopeLocked",
"message": "The scope '/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Compute/VirtualMachineScaleSets/<guid>-azurebatch-VMSS-D' cannot perform write operation because the following scope(s) are locked: '/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Compute/VirtualMachineScaleSets/<guid>-azurebatch-VMSS-D'. Please remove the lock and try again."
}
}
Csonkolt JSON-szolgáltatói hiba: Hamis
Ez a hiba azt jelzi, hogy a készlet átméretezési művelete meghiúsult, mert egy hatókör zárolva volt, megakadályozva az írási műveletet; a zárolás eltávolítása megoldhatja a problémát.
A Relay szolgáltatói hibái mélyebb betekintést nyújtanak a készletműveleti hibákba, így könnyebben diagnosztizálhatók és megoldhatók közvetlenül az Azure-szolgáltatásokból származó problémák.
Időtúllépés vagy hiba átméretezése
Új készlet létrehozásakor vagy meglévő készlet átméretezésekor meg kell adnia a csomópontok célszámát. A létrehozási vagy átméretezési művelet azonnal befejeződik, de az új csomópontok tényleges lefoglalása vagy a meglévő csomópontok eltávolítása több percet is igénybe vehet. Az átméretezés időtúllépését a Készlet – Hozzáadás vagy készlet – Api-k átméretezése területen adhatja meg. Ha a Batch nem tudja lefoglalni a csomópontok célszámát az átméretezési időkorlát alatt, a készlet állandó állapotba kerül, és az átméretezési hibákat jelenti.
Az resizeError tulajdonság felsorolja a legutóbbi értékelés során előforduló hibákat.
Az átméretezés hibáinak gyakori okai a következők:
Túl rövid időkorlát átméretezése. Az alapértelmezett 15 perces időtúllépés általában elegendő a készletcsomópontok lefoglalásához vagy eltávolításához. Ha nagy számú csomópontot, például több mint 1000 csomópontot szeretne lefoglalni egy Azure Marketplace-rendszerképből, vagy több mint 300 csomópontot egy egyéni virtuálisgép-rendszerképből, beállíthatja az átméretezési időtúllépést 30 percre.
Nincs elegendő magkvóta. A Batch-fiók korlátozott számú magot foglalhat le az összes készletben, és a kvótát elérve leállítja a csomópontok kiosztását. Növelheti az alapkvótát, hogy a Batch több csomópontot foglalhassa le. További információ: Batch szolgáltatáskvóták és korlátok.
Nincs elegendő alhálózati IP-cím, ha egy készlet virtuális hálózaton van. A virtuális hálózati alhálózatnak elegendő IP-címmel kell rendelkeznie ahhoz, hogy az összes kért készletcsomóponthoz lefoglalható legyen. Máskülönben a csomópontokat nem lehet létrehozni. További információ: Azure Batch-készlet létrehozása virtuális hálózaton.
Nincs elegendő erőforrás, ha egy készlet egy virtuális hálózaton található. Amikor készletet hoz létre egy virtuális hálózaton, a Batch-fiókkal azonos előfizetésben hozhat létre erőforrásokat, például terheléselosztókat, nyilvános IP-címeket és hálózati biztonsági csoportokat (NSG-ket). Győződjön meg arról, hogy az előfizetési kvóták elegendőek ezekhez az erőforrásokhoz.
Nagy készletek egyéni virtuálisgép-rendszerképekkel. Az egyéni virtuálisgép-rendszerképeket használó nagyméretű készletek lefoglalása hosszabb időt vehet igénybe, és időtúllépések léphetnek fel. A korlátozásokra és a konfigurációra vonatkozó javaslatokért lásd : Készlet létrehozása az Azure Compute Gallery használatával.
Automatikus skálázási hibák
Beállíthatja, hogy az Azure Batch automatikusan skálázza a készlet csomópontjainak számát, és megadhatja a készlet automatikus méretezési képletének paramétereit. A Batch szolgáltatás ezt követően a képlet használatával rendszeresen kiértékeli a készletben lévő csomópontok számát, és új célszámokat állít be. További információ: Automatikus képlet létrehozása számítási csomópontok skálázására a Batch-készletben.
Az automatikus skálázás használatakor a következő problémák léphetnek fel:
- Az automatikus skálázás kiértékelése sikertelen.
- Az eredményként kapott átméretezési művelet meghiúsul, és túllépi az időkorlátot.
- Az automatikus skálázási képlettel kapcsolatos probléma helytelen csomópont-célértékeket eredményez. Az átméretezés működhet vagy időtúllépést eredményezhet.
Az utolsó automatikus skálázási értékeléssel kapcsolatos információkért használja az autoScaleRun tulajdonságot. Ez a tulajdonság jelenti a kiértékelési időt, az értékeket és az eredményt, valamint a teljesítményhibákat.
A készlet átméretezése teljes esemény rögzíti az összes értékelés adatait.
Készlettörlés hibái
Csomópontokat tartalmazó készlet törléséhez a Batch először törli a csomópontokat, ami több percet is igénybe vehet. A Batch ezután törli magát a készletobjektumot.
A Batch a törlési folyamat során beállítja a poolState-tdeleting
. A hívó alkalmazás észleli, hogy a készlet törlése túl sokáig tart-e a tulajdonságok és stateTransitionTime
a state
tulajdonságok használatával.
Ha a készlet törlése a vártnál hosszabb időt vesz igénybe, a Batch rendszeresen újrapróbálkozza a készlet sikeres törléséig. Bizonyos esetekben a késés oka az Azure szolgáltatáskimaradása vagy más átmeneti problémák. A készlet sikeres törlését megakadályozó egyéb tényezők esetén szükség lehet a probléma megoldására. Ezek a tényezők a következő problémákat okozhatják:
Előfordulhat, hogy az erőforrás-zárolások a Batch által létrehozott erőforrásokra vagy a Batch által használt hálózati erőforrásokra kerülnek.
A létrehozott erőforrások a Batch által létrehozott erőforrásoktól függhetnek. Ha például létrehoz egy készletet egy virtuális hálózaton, a Batch létrehoz egy NSG-t, egy nyilvános IP-címet és egy terheléselosztót. Ha ezeket az erőforrásokat a készleten kívül használja, nem törölheti a készletet.
Előfordulhat, hogy az
Microsoft.Batch
erőforrás-szolgáltató nincs regisztrálva a készletet tartalmazó előfizetésből.Felhasználói előfizetési módú Batch-fiókok esetén előfordulhat,
Microsoft Azure Batch
hogy a készletet tartalmazó előfizetéshez már nem tartozik közreműködői vagy tulajdonosi szerepkör. További információ: A Batch hozzáférésének engedélyezése az előfizetéshez.
Csomóponthibák
Még akkor is, ha a Batch sikeresen lefoglal csomópontokat egy készletben, a különböző problémák miatt egyes csomópontok állapota nem megfelelő, és nem futtathatók a tevékenységek. Ezek a csomópontok továbbra is díjakat vonnak maga után, ezért fontos észlelni a problémákat, hogy ne kelljen fizetni a nem használható csomópontokért. A gyakori csomóponthibák ismerete és az aktuális feladatstate ismerete hasznos a hibaelhárításhoz.
Feladathibák indítása
A készlethez megadhat egy választható startTask-et . Mint minden tevékenységnél, a kezdő tevékenység is parancssort használ, és letöltheti az erőforrásfájlokat a tárolóból. A kezdési feladat minden csomóponton lefut a csomópont indításakor. A waitForSuccess
tulajdonság azt határozza meg, hogy a Batch megvárja-e, amíg a kezdő tevékenység sikeresen befejeződik, mielőtt bármilyen tevékenységet ütemez egy csomópontra. Ha úgy konfigurálja a csomópontot, hogy várja meg a sikeres kezdési tevékenység befejezését, de a kezdési tevékenység meghiúsul, a csomópont nem használható, de továbbra is díjakat von maga után.
Az indítási feladat hibáit a felső szintű startTaskInformation csomópont tulajdonság taskExecutionResult és taskFailureInformation tulajdonságával észlelheti.
A sikertelen kezdési feladat miatt a Batch a computeNodeStatestarttaskfailed
értéket is beállítja , ha waitForSuccess
az értékre lett állítva true
.
Mint minden tevékenység esetében, a kezdési feladat meghiúsulásának számos oka lehet. A hibaelhárításhoz ellenőrizze az stdout, az stderr és minden más feladatspecifikus naplófájlt.
A kezdési tevékenységeknek újra kell belépniük, mert a kezdő tevékenység többször is futtatható ugyanazon a csomóponton, például amikor a csomópontot újraépítik vagy újraindítják. Ritka esetekben, amikor egy indítási feladat egy esemény után fut, az egyik operációs rendszer (operációs rendszer) vagy a rövid élettartamú lemez újraindul, míg a másik nem. Mivel a Batch elindítja a feladatokat, és az összes Batch-tevékenység a rövid élettartamú lemezről fut, ez a helyzet általában nem jelent problémát. Ha azonban a kezdési feladat egy alkalmazást telepít az operációsrendszer-lemezre, és más adatokat tart a rövid élettartamú lemezen, szinkronizálási problémák merülhetnek fel. Ennek megfelelően védje az alkalmazást, ha mindkét lemezt használja.
Az alkalmazáscsomag letöltése sikertelen
Egy készlethez megadhat egy vagy több alkalmazáscsomagot. A Batch letölti a megadott csomagfájlokat az egyes csomópontokra, és feloldja a fájlokat a csomópont indítása után, de a feladatok ütemezése előtt. Gyakori, hogy egy indítási feladatparancsot használ alkalmazáscsomagokkal, például fájlok más helyre másolásához vagy a beállítás futtatásához.
Ha egy alkalmazáscsomag letöltése és feloldása sikertelen, a computeNodeError tulajdonság jelenti a hibát, és beállítja a csomópont állapotát unusable
.
Tárolóletöltési hiba
Egy készleten megadhat egy vagy több tárolóhivatkozást. A Batch minden csomópontra letölti a megadott tárolókat. Ha a tároló nem tölthető le, a computeNodeError tulajdonság jelenti a hibát, és beállítja a csomópont állapotát unusable
.
Csomópont operációs rendszerének frissítései
Windows-készletek enableAutomaticUpdates
esetén alapértelmezés szerint be true
van állítva. Bár az automatikus frissítések engedélyezése ajánlott, a frissítések megszakíthatják a tevékenységek előrehaladását, különösen akkor, ha a tevékenységek hosszú ideig futnak. Ezt az értéket false
akkor állíthatja be, ha gondoskodnia kell arról, hogy az operációs rendszer frissítése ne történjen meg váratlanul.
Használhatatlan állapotban lévő csomópont
A Batch több okból is beállíthatja a computeNodeStateunusable
értéket. Nem ütemezhet feladatokat egy unusable
csomópontra, de a csomópont továbbra is díjakat von maga után.
Ha a Batch meg tudja állapítani az okot, a computeNodeError tulajdonság jelenti. Ha egy csomópont állapotban unusable
van, de nincs computeNodeError, az azt jelenti, hogy a Batch nem tud kommunikálni a virtuális géppel. Ebben az esetben a Batch mindig megpróbálja helyreállítani a virtuális gépet. A Batch azonban nem próbálja meg automatikusan helyreállítani azokat a virtuális gépeket, amelyek nem telepíthetnek alkalmazáscsomagokat vagy tárolókat, még akkor sem, ha az állapotuk.unusable
A csomópontok egyéb okai unusable
a következők lehetnek:
- Az egyéni virtuálisgép-rendszerkép érvénytelen. Például a rendszerkép nincs megfelelően előkészítve.
- A virtuális gép infrastruktúra-hiba vagy alacsony szintű frissítés miatt kerül áthelyezésre. A Batch helyreállítja a csomópontot.
- A virtuálisgép-rendszerkép olyan hardveren lett üzembe helyezve, amely nem támogatja azt.
- A virtuális gépek egy Azure-beli virtuális hálózaton vannak, és a forgalom le lett tiltva a kulcsportok felé.
- A virtuális gépek virtuális hálózaton vannak, de az Azure Storage felé irányuló kimenő forgalom le van tiltva.
- A virtuális gépek egyéni DNS-konfigurációval rendelkező virtuális hálózaton találhatók, és a DNS-kiszolgáló nem tudja feloldani az Azure Storage-t.
Csomópontügynök naplófájljai
Az egyes készletcsomópontokon futó Batch-ügynökfolyamat naplófájlokat biztosít, amelyek segíthetnek, ha kapcsolatba kell lépnie az ügyfélszolgálattal egy készletcsomóponttal kapcsolatos problémával kapcsolatban. A csomópont naplófájljait az Azure Portalon, a Batch Explorerben vagy a számítási csomóponton keresztül töltheti fel – Batch Service Logs API feltöltése. A naplófájlok feltöltése és mentése után törölheti a csomópontot vagy a készletet a csomópontok futtatásának költségeinek megtakarításához.
A csomópont lemeze megtelt
A Batch egy csomópontkészlet virtuális gépének ideiglenes meghajtóját használja a következő feladatfájlok, feladatfájlok és megosztott fájlok tárolására:
- Alkalmazáscsomagfájlok
- Feladat erőforrásfájljai
- Alkalmazásspecifikus fájlok, amelyeket a Batch-mappák egyikére töltöttek le
- Stdout - és stderr-fájlok minden feladatalkalmazás végrehajtásához
- Alkalmazásspecifikus kimeneti fájlok
Az olyan fájlok, mint az alkalmazáscsomagok vagy a tevékenységerőforrás-fájlok csak egyszer írhatók, amikor a Batch létrehozza a készletcsomópontot. Annak ellenére, hogy csak egyszer írnak, ha ezek a fájlok túl nagyok, kitölthetik az ideiglenes meghajtót.
Más fájlok, például az stdout és az stderr minden olyan feladathoz meg vannak írva, amelyet egy csomópont futtat. Ha sok feladat fut ugyanazon a csomóponton, vagy a feladatfájlok túl nagyok, kitölthetik az ideiglenes meghajtót.
A csomópontnak az operációsrendszer-lemezen is kis mennyiségű helyre van szüksége a felhasználók létrehozásához az indítás után.
Az ideiglenes meghajtó mérete a virtuális gép méretétől függ. A virtuális gép méretének kiválasztásakor az egyik szempont annak biztosítása, hogy az ideiglenes meghajtó elegendő helyet biztosítson a tervezett számítási feladathoz.
Amikor hozzáad egy készletet az Azure Portalon, megjelenítheti a virtuálisgép-méretek teljes listáját, beleértve az erőforráslemez méretoszlopát is. A virtuálisgép-méreteket leíró cikkek temp Storage oszlopot tartalmazó táblákkal rendelkeznek. További információ: Számításoptimalizált virtuálisgép-méretek. Egy példa mérettáblázatot az Fsv2 sorozatban talál.
Megadhatja az egyes tevékenységek által írt fájlok megőrzési idejét. A megőrzési idő határozza meg, hogy mennyi ideig tartsa meg a feladatfájlokat, mielőtt automatikusan megtisztítja őket. A megőrzési időt csökkentheti a tárolási követelmények csökkentése érdekében.
Ha az ideiglenes vagy operációs rendszer lemeze elfogy, vagy közel van ahhoz, hogy elfogyjon a hely, a csomópont a computeNoteState-be unusable
kerül, és a csomóponthiba azt jelzi, hogy a lemez megtelt.
Ha nem biztos abban, hogy mi foglal helyet a csomóponton, próbáljon meg távoli kapcsolatot létesíteni a csomóponttal, és manuálisan megvizsgálni. A Fájl – List From Compute Node API használatával is megvizsgálhatja a Batch által felügyelt mappákban lévő fájlokat, például a feladatkimeneteket. Ez az API csak a Batch által felügyelt könyvtárakban lévő fájlokat listázza. Ha a feladatok máshol hoztak létre fájlokat, ez az API nem jeleníti meg őket.
Miután minden szükséges adatot lekért a csomópontról, vagy feltöltötte azt egy tartós tárolóba, szükség szerint törölheti az adatokat, hogy helyet szabadítson fel.
Törölheti a régi befejezett feladatokat vagy tevékenységeket, amelyek tevékenységadatai továbbra is a csomópontokon találhatóak. Keresse meg a recentTasks
gyűjteményt a csomópont taskInformation elemében, vagy használja a File – List From Compute Node API-t. A feladat törlése törli a feladat összes feladatát. A feladatok törlése a feladatban az adatok törlését váltja ki a csomópontok feladatkönyvtáraiban, és helyet szabadít fel. Miután felszabadított elég helyet, indítsa újra a csomópontot. A csomópontnak ki kell lépnie az állapotból unusable
, és újra be kell lépnie idle
.
A VirtualMachineConfiguration-készletek egyik használhatatlan csomópontjának helyreállításához távolítsa el a csomópontot a készletből a Készlet – Csomópontok eltávolítása API használatával. Ezután ismét növelheti a készletet, hogy lecserélje a rossz csomópontot egy frissre.
Fontos
A Reimage jelenleg nem támogatott a VirtualMachineConfiguration-készletek esetében.
Következő lépések
- További információ a feladat- és feladathibák ellenőrzéséről.
- Ismerje meg az Azure Batch használatának ajánlott eljárásait .