Javaslatok az önjavításhoz és az önmegőrzéshez

Az Azure Well-Architected Framework megbízhatósági ellenőrzőlistájára vonatkozó javaslatra vonatkozik:

RE:07 Önmegőrző és önjavító intézkedések végrehajtásával fokozhatja a számítási feladatok rugalmasságát és helyreállíthatóságát. Infrastruktúra-alapú megbízhatósági minták és szoftveralapú tervezési minták használatával építhet képességeket a megoldásba az összetevők hibáinak és átmeneti hibáinak kezeléséhez. Képességeket építhet be a rendszerbe a megoldásösszetevők hibáinak észleléséhez, és automatikusan korrekciós műveletet kezdeményezhet, miközben a számítási feladat továbbra is teljes vagy csökkentett funkcionalitással működik.

Kapcsolódó útmutatók:Háttérfeladatok | átmeneti hibái

Ez az útmutató az önjavítási és önmegőrzési képességek alkalmazásarchitektúrába való beépítésére vonatkozó javaslatokat ismerteti a megbízhatóság optimalizálása érdekében.

Az önmegőrzési képességek rugalmasságot biztosítanak a számítási feladatokhoz. Csökkentik a teljes üzemkimaradás valószínűségét, és lehetővé teszik, hogy a számítási feladat csökkentett teljesítményű állapotban működjön, miközben a meghibásodott összetevők helyreállnak. Az önjavítási képességek segítenek elkerülni az állásidőt azáltal, hogy hibaészlelést végeznek, és automatikus javítási műveleteket végeznek a különböző hibatípusokra való reagáláshoz.

Ez az útmutató olyan tervezési mintákat ismertet, amelyek az önmegőrzésre és az önjavításra összpontosítanak. Beépítheti őket a számítási feladatokba a rugalmasság és a helyreállíthatóság növelése érdekében. Ha nem implementál mintákat, az alkalmazásai meghibásodásnak vannak kitéve, ha elkerülhetetlen problémák merülnek fel.

Definíciók

Időszak Definíció
Önjavítás A számítási feladat képes automatikusan megoldani a problémákat az érintett összetevők helyreállításával, és ha szükséges, a redundáns infrastruktúrába való feladatátvételsel.
Önfenntartás A számítási feladat rugalmassága a lehetséges problémákkal szemben.

Kulcsfontosságú tervezési stratégiák

Önmegőrzési útmutató

A számítási feladatok önmegőrzésre való tervezéséhez kövesse az infrastruktúra és az alkalmazásarchitektúra tervezési mintáit a számítási feladatok rugalmasságának optimalizálásához. A teljes alkalmazáskimaradás esélyének minimalizálása érdekében növelje a megoldás rugalmasságát azáltal, hogy kiküszöböli az egyes meghibásodási pontokat, és minimalizálja a hibák robbanási sugarát. A jelen cikkben szereplő tervezési megközelítések számos lehetőséget kínálnak a számítási feladatok rugalmasságának megerősítésére és a számítási feladatok meghatározott megbízhatósági céljainak teljesítésére.

Infrastruktúra-tervezési útmutató és minták

Az infrastruktúra szintjén a redundáns architektúra kialakításának támogatnia kell a kritikus folyamatokat, és az erőforrásokat rendelkezésre állási zónákban vagy régiókban kell üzembe helyezni. Ha lehetséges , implementálja az automatikus skálázást . Az automatikus skálázás segít megvédeni a számítási feladatokat a váratlan tevékenységcsúcsokkal szemben, ami tovább erősíti az infrastruktúrát.

Használja az Üzembehelyezési bélyegek mintát vagy a Válaszfal mintát a robbanási sugár minimalizálásához, amikor problémák merülnek fel. Ezek a minták segítenek a számítási feladatok rendelkezésre állásában, ha egy adott összetevő nem érhető el. Használja az alábbi alkalmazástervezési mintákat az automatikus skálázási stratégiával kombinálva.

  • Üzembehelyezési bélyegek mintája: Különböző erőforráscsoportok kiépítése, kezelése és monitorozása több számítási feladat vagy bérlő üzemeltetéséhez és üzemeltetéséhez. Minden egyes példányt bélyegnek, más néven szolgáltatási egységnek, skálázási egységnek vagy cellának neveznek.

  • Válaszfalminta: Particionálja a szolgáltatáspéldányokat különböző csoportokba, más néven készletekbe a fogyasztói terhelés és a rendelkezésre állás követelményei alapján. Ez a kialakítás segít elkülöníteni a hibákat, és lehetővé teszi, hogy fenntartsa a szolgáltatás funkcióit egyes fogyasztók számára, még hiba esetén is.

Alkalmazástervezési útmutató és minták

Kerülje a monolitikus alkalmazások létrehozását az alkalmazástervben. Használjon lazán összekapcsolt szolgáltatásokat vagy mikroszolgáltatásokat, amelyek jól meghatározott szabványokon keresztül kommunikálnak egymással annak érdekében, hogy csökkentse a kiterjedt problémák kockázatát, ha egyetlen összetevő hibás működése történik. Például szabványosíthatja a service bus használatát az összes aszinkron kommunikáció kezelésére. A kommunikációs protokollok szabványosítása biztosítja, hogy az alkalmazások kialakítása egységes és egyszerűbb legyen, ami megbízhatóbbá és könnyebben elháríthatóvá teszi a számítási feladatokat meghibásodások esetén. Ha praktikus, inkább az összetevők közötti aszinkron kommunikációt részesítse előnyben a szinkron kommunikációval szemben, hogy minimalizálja az időtúllépéssel kapcsolatos problémákat, például a kézbesíthetetlen üzeneteket. Az alábbi tervezési minták segítségével rendszerezheti a számítási feladatokat, és az összetevők közötti kommunikációt az üzleti igényeinek leginkább megfelelő módon határozhatja meg.

  • Nagyköveti minta: Válassza el az üzleti logikát a hálózati kódtól és a rugalmassági logikától. Olyan segítő szolgáltatásokat hozhat létre, amelyek egy otthoni használatra szánt szolgáltatás vagy alkalmazás nevében küldenek hálózati kéréseket. Ezzel a mintával újrapróbálkozási mechanizmusokat vagy áramkör-megszakításokat valósíthat meg.

  • Aszinkron Request-Reply minta: Leválaszthatja a háttérbeli feldolgozást egy előtér-gazdagépről, ha a háttérbeli feldolgozásnak aszinkronnak kell lennie, de az előtérnek egyértelmű válaszra van szüksége.

  • Gyorsítótár-feltöltési minta: Igény szerint betölti az adatokat egy adattárból egy gyorsítótárba. Ez a minta javíthatja a teljesítményt, és fenntarthatja a gyorsítótárban tárolt adatok és a mögöttes adattárban lévő adatok közötti konzisztenciát.

  • Megszakító minta: Az áramkör-megszakítók használatával proaktívan megállapíthatja, hogy engedélyezi-e egy művelet folytatását, vagy kivételt ad vissza a legutóbbi hibák száma alapján.

  • Jogcím-ellenőrzési minta: Nagy méretű üzenet felosztása jogcím-ellenőrzésre és hasznos adatokra. Küldje el a jogcím-ellenőrzést az üzenetkezelési platformnak, és tárolja a hasznos adatokat egy külső szolgáltatásban. Ez a minta lehetővé teszi a nagy méretű üzenetek feldolgozását az üzenetbusz védelme és az ügyfél túlterheltségének vagy lelassulásának megőrzése mellett.

  • Versengő fogyasztók mintája: Lehetővé teszi, hogy több egyidejű fogyasztó dolgozza fel az ugyanazon az üzenetkezelési csatornán fogadott üzeneteket. Egy rendszer egyszerre több üzenetet is feldolgozhat, ami optimalizálja az átviteli sebességet, javítja a méretezhetőséget és a rendelkezésre állást, és kiegyensúlyozza a számítási feladatokat.

  • Kérelmek időtúllépéseinek konfigurálása: Kérések időtúllépéseinek konfigurálása a szolgáltatások vagy adatbázisok hívásaihoz. Az adatbázis-kapcsolat időtúllépései általában 30 másodpercre vannak állítva.

  • Gatekeeper-minta: Az alkalmazások és szolgáltatások védelme dedikált gazdagéppéldány használatával az ügyfelek és az alkalmazás vagy szolgáltatás közötti kérelmek közvetítőjeként. A közvetítő ellenőrzi és megtisztítja a kéréseket, és további biztonsági réteget biztosíthat a rendszer támadási felületének korlátozásához.

  • Üzenetsor-alapú terheléselosztási minta: Válassza le a feladatokat a megoldásban lévő szolgáltatástól egy üzenetsor használatával, hogy mindegyik aszinkron módon fusson. Használjon egy üzenetsort pufferként egy tevékenység és egy általa meghívott szolgáltatás között, hogy megkönnyítse az időszakos nagy terheléseket, amelyek a szolgáltatás meghiúsulását vagy a feladat időtúllépését okozhatják. Ez a minta segíthet minimalizálni a terhelés csúcsainak hatását a feladat és a szolgáltatás rendelkezésre állására és válaszkészségére.

  • Szabályozási minta: Szabályozhatja egy alkalmazáspéldány, egy egyéni bérlő vagy egy teljes szolgáltatás által használt erőforrások felhasználását. Ez a minta lehetővé teszi, hogy a rendszer továbbra is működjön, és megfeleljen a szolgáltatói szerződéseknek (SLA-k), még akkor is, ha a kereslet növekedése rendkívüli terhelést helyez az erőforrásokra.

  • Átmeneti hibakezelési minta és újrapróbálkozási minta: Implementáljon egy stratégiát az átmeneti hibák kezelésére, hogy rugalmasságot biztosítson a számítási feladatban. Az átmeneti hibák a felhőkörnyezetek normál és várt előfordulásai. Az átmeneti hibák tipikus okai közé tartozik a hálózati kapcsolat pillanatnyi megszakadása, az adatbázis-kapcsolat megszakadása vagy az időtúllépés, amikor egy szolgáltatás foglalt. Az újrapróbálkozási stratégia kialakításával kapcsolatos további információkért tekintse meg a sorozat átmeneti hibakezelési útmutatóját .

Háttérfeladatok

A háttérfeladatok hatékonyan javítják a rendszer megbízhatóságát azáltal, hogy elkülönítik a feladatokat a felhasználói felülettől. Ha nem igényel felhasználói bevitelt vagy visszajelzést, és nincs hatással a felhasználói felület válaszkészségére, akkor a feladat háttérfeladatként való implementálása.

A háttérfeladatok gyakori példái a következők:

  • Processzorigényes feladatok, például összetett számítások elvégzése vagy szerkezeti modellek elemzése.
  • I/O-igényes feladatok, például több tárolási művelet futtatása vagy nagy méretű fájlok indexelése.
  • Kötegelt feladatok, például az adatok rendszeres frissítése vagy a feladatok adott időpontban történő feldolgozása.
  • Hosszú ideig futó munkafolyamatok, például rendelés befejezése vagy szolgáltatások és rendszerek kiépítése.

További információ: Javaslatok háttérfeladatokhoz.

Önjavítási útmutató

A számítási feladatok önjavításra való tervezéséhez implementálja a hibaészlelést, hogy az automatikus válaszok aktiválódjanak, és a kritikus folyamatok szabályosan helyreálljanak. Engedélyezze a naplózást, hogy operatív információkat nyújtson a hiba természetéről és a helyreállítás sikerességéről. A kritikus folyamatok önjavításához szükséges megközelítések az adott folyamathoz meghatározott megbízhatósági céloktól , valamint a folyamat összetevőitől és függőségeitől függnek.

Infrastruktúra-tervezési útmutató

Az infrastruktúra szintjén a kritikus folyamatokat redundáns architektúratervnek kell támogatnia, amely lehetővé teszi az automatizált feladatátvételt az azt támogató összetevők számára. Az automatikus feladatátvételt a következő szolgáltatástípusokhoz engedélyezheti:

  • Számítási erőforrások: Az Azure Virtual Machine Scale Sets és a legtöbb szolgáltatásként nyújtott platform (PaaS) számítási szolgáltatás konfigurálható az automatikus feladatátvételhez.

  • Adatbázisok: A relációs adatbázisok automatikus feladatátvételre konfigurálhatók olyan megoldásokkal, mint a Azure SQL feladatátvevő fürtök, az Always On rendelkezésre állási csoportok vagy a PaaS-szolgáltatások beépített képességei. A NoSQL-adatbázisok hasonló fürtözési képességekkel és beépített képességekkel rendelkeznek a PaaS-szolgáltatásokhoz.

  • Tárolás: Redundáns tárolási lehetőségek használata automatikus feladatátvétellel.

Alkalmazástervezési útmutató és minták

  • Rossz szereplők letiltása: Ha szabályoz egy ügyfelet, az nem jelenti azt, hogy az ügyfél rosszindulatúan viselkedett. Ez azt jelentheti, hogy az ügyfél túllépte a szolgáltatáskvótát. Ha azonban egy ügyfél következetesen túllépi a kvótáját, vagy más módon rosszul viselkedik, letilthatja őket. Egy sávon kívüli folyamat definiálása az ügyfél számára a tiltás feloldásának kéréséhez.

  • Megszakító minta: Ha a hiba az újrapróbálkozási mechanizmus elindítása után is fennáll, a hívások növekvő hátralékából eredő kaszkádolt hibák kockázatát kockáztatja. Az újrapróbálkozási mechanizmussal való együttműködésre tervezett megszakító csökkenti a kaszkádolt hibák kockázatát azáltal, hogy megakadályozza, hogy az alkalmazás ismétlődően megpróbáljon futtatni egy valószínűleg sikertelen műveletet.

  • Kompenzáló tranzakciós minta: Ha egy végül konzisztens, több lépésből álló műveletet használ, implementálja a Kompenzáló tranzakció mintát. Ha egy vagy több lépés sikertelen, ezzel a mintával visszavonhatja a lépések által végrehajtott munkát.

  • Csökkentett teljesítményű teljesítmény: Néha nem tud megkerülni egy problémát, de csökkentett funkcionalitást biztosíthat. Vegyünk például egy könyvkatalógust megjelenítő alkalmazást. Ha az alkalmazás nem tudja lekérni a borítók miniatűrjét, helyőrző képet jeleníthet meg helyette. Előfordulhat, hogy teljes alrendszerek számítanak nem kritikus fontosságúnak az alkalmazás számára. Egy e-kereskedelmi webhely esetében például a termékjavaslatok megjelenítése valószínűleg kevésbé kritikus, mint a megrendelések feldolgozása. A kecses teljesítménycsökkenés automatikus feladatátvételi műveleteket is tartalmazhat. Ha egy adatbázis az elsődleges példánnyal kapcsolatos probléma miatt automatikusan átadja a feladatátvételt egy replikának, a teljesítmény rövid időre csökken.

  • Vezetőválasztási minta: Ha koordinálnia kell egy feladatot, a vezetőválasztással válasszon ki egy koordinátort, hogy az egyik koordinátor ne legyen egyetlen meghibásodási pont. Ha a koordinátor meghiúsul, a rendszer újat választ. Ahelyett, hogy teljesen új vezetőválasztási algoritmust implementálnál, érdemes megfontolni egy nem megfelelő megoldást, például a ZooKeepert.

  • Tesztelési minták: A szabványos tesztelési eljárások részeként implementálható minták tesztelését is magában foglalja.

  • Ellenőrzőpontok használata hosszú ideig futó tranzakciókhoz: Az ellenőrzőpontok rugalmasságot biztosíthatnak, ha egy hosszú ideig futó művelet meghiúsul. Amikor a művelet újraindul, például ha egy másik virtuális gép veszi fel, akkor az utolsó ellenőrzőpontról folytathatja. Érdemes lehet olyan mechanizmust implementálni, amely rendszeres időközönként rögzíti a tevékenység állapotinformációit. Mentse ezt az állapotot tartós tárolóba, amely a feladatot futtató folyamat bármely példánya számára elérhető. Ha a folyamat le van állítva, az elvégzett munka egy másik példány használatával folytatható az utolsó ellenőrzőpontról. Vannak olyan kódtárak, amelyek biztosítják ezt a funkciót, például az NServiceBus és a MassTransit. Transzparens módon megőrzik az állapotot, ahol az időközök igazodnak az üzenetsorokból érkező üzenetek feldolgozásához Azure Service Bus.

Automatizált önjavító műveletek

Az önjavítás másik megközelítése az automatikus műveletek használata, amelyeket a monitorozási megoldás aktivál előre meghatározott állapotváltozások észlelésekor. Ha például a figyelés azt észleli, hogy egy webalkalmazás nem válaszol a kérelmekre, létrehozhat egy automatizálást egy PowerShell-szkripttel az App Service újraindításához. A csapat készségkészletétől és előnyben részesített fejlesztési technológiáitól függően webhookot vagy függvényt használva összetettebb automatizálási műveleteket hozhat létre. Az eseményalapú felhőautomatizálás referenciaarchitektúrájában talál példát arra, hogy egy függvény használatával reagálhat az adatbázis-szabályozásra. Az automatizált műveletek segítségével gyorsan helyreállhat, és minimalizálhatja az emberi beavatkozás szükségességét.

Azure-beli segítségnyújtás

A legtöbb Azure-szolgáltatás és ügyfél-SDK tartalmaz egy újrapróbálkozási mechanizmust. Ezek azonban eltérnek, mivel mindegyik szolgáltatás különböző jellemzőkkel és követelményekkel rendelkezik, ezért minden újrapróbálkozési mechanizmus egy adott szolgáltatásra van hangolva. További információ: Javaslatok átmeneti hibakezeléshez.

Az Azure Monitor műveletcsoportjaival értesítéseket , például e-maileket, hangüzeneteket vagy SMS-eket jeleníthet meg, és automatikus műveleteket indíthat el. Ha értesítést kap egy hibáról, aktiváljon egy Azure Automation runbookot, Azure Event Hubs, Egy Azure-függvényt, egy logikai alkalmazást vagy egy webhookot egy automatikus javítási művelet végrehajtásához.

Megfontolandó szempontok

Ismerkedjen meg az egyes minták szempontjaival. Az implementálás előtt győződjön meg arról, hogy a minta megfelel a számítási feladatokra és az üzleti követelményekre.

Példa

Néhány minta használati eseteit például a .NET-hez készült megbízható webalkalmazás-minta ismerteti. Kövesse az alábbi lépéseket egy referenciaimplementáció üzembe helyezéséhez.

Megbízhatósági ellenőrzőlista

Tekintse meg a javaslatok teljes készletét.