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


Javaslatok öngyógyításra és önmegőrzésre

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

RE:07 A számítási feladatok rugalmasságának és helyreállíthatóságának megerősítése önmegőrzési és önjavító intézkedések végrehajtásával. Képességeket építhet be a megoldásba infrastruktúra-alapú megbízhatósági minták és szoftveralapú tervezési minták használatával 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ó azokat a javaslatokat ismerteti, hogyan építhet öngyógyító és önmegőrző képességeket az alkalmazásarchitektúrába a megbízhatóság optimalizálása érdekében.

Az önmegőrző 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 állapotban működjön, miközben a meghibásodott összetevők helyreállnak. Az öngyógyító képességek segítenek elkerülni az állásidőt azáltal, hogy hibaészlelést végez, és automatikus korrekciós műveleteket végez a különböző hibatípusokra való reagáláshoz.

Ez az útmutató az önmegőrzésre és az öngyógyításra összpontosító tervezési mintákat ismerteti. Beépítheti őket a számítási feladatokba a rugalmasság és a helyreállíthatóság megerősítése érdekében. Ha nem valósít meg mintákat, az alkalmazások meghibásodásának kockázata elkerülhetetlen problémák esetén merül fel.

Meghatározások

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 szükség esetén a redundáns infrastruktúrára való feladatátvételsel.
Önfenntartás A számítási feladatok rugalmasságának képessége a lehetséges problémák ellen.

Főbb tervezési stratégiák

Tervezés önmegőrző célokra

A számítási feladatok önmegőrző 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 ismertetett 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úratervnek 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, automatikus skálázás implementálása. Az automatikus skálázás segít megvédeni a számítási feladatokat a váratlan tevékenységkitörésekkel szemben, ami tovább erősíti az infrastruktúrát.

A Központi telepítési bélyegek vagy a Válaszfal mintával minimalizálhatja a robbanási sugarat, ha problémák merülnek fel. Ezek a minták segítenek a számítási feladat 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áscsoport 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 vagy néha szolgáltatási egységnek, skálázási egységnek vagy cellának nevezünk.

  • Válaszfalminta: A szolgáltatáspéldányok különböző csoportokba , más néven készletekbe való particionálása a fogyasztói terhelés és a rendelkezésre állási követelmények 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 felhasználók számára, még egy hiba során is.

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

Kerülje a monolitikus alkalmazások létrehozását az alkalmazástervezésben. 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, hogy csökkentse a kiterjedt problémák kockázatát, ha egyetlen összetevő hibás működése történik. Szabványosíthatja például 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 tervezése egységes és egyszerűbb legyen, így a számítási feladatok megbízhatóbbak és könnyebben elháríthatók meghibásodások esetén. Gyakorlati esetben 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 holt betűs kommunikációt. 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 úgy határozhatja meg, hogy az a legjobban megfeleljen az üzleti követelményeknek.

  • 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 kapcsolatcsoporttöréseket valósíthat meg.

  • Aszinkron kérés-válasz minta: A háttérbeli feldolgozás leválasztása egy előtér-gazdagépről, ha a háttérfeldolgozá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 javíthatja a gyorsítótárban tárolt adatok és az alapul szolgáló adattárban tárolt adatok közötti konzisztenciát.

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

  • Jogcím-ellenőrzési minta: Nagymé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 nagyméretű üzenetek feldolgozását, miközben védi az üzenetbuszt, és távol tartja az ügyfelet a túlterheltségtől vagy a lelassulástól.

  • Egymással versengő fogyasztók mintája: Több egyidejű fogyasztó számára is lehetővé teszi az ugyanazon üzenetkezelési csatornán fogadott üzenetek feldolgozását. A 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 feladatot.

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

  • Gatekeeper-minta: 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éséhez. 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éselegyenlítési minta: A feladatok leválasztása 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 olyan szolgáltatás között, amelyet meghív, hogy zökkenőmentes legyen az időszakos terhelés, amely a szolgáltatás meghibásodását vagy a feladat időtúllépését okozhatja. Ez a minta segíthet minimalizálni az igénycsúcsok 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: Az alkalmazások, az egyes bérlők vagy egy teljes szolgáltatás egy példánya által használt erőforrások felhasználásának szabályozása. Ez a minta lehetővé teszi, hogy a rendszer továbbra is működjön, és megfeleljen a szolgáltatásiszint-szerződéseknek (SLA-k), még akkor is, ha a kereslet növekedése rendkívül megterheli az erőforrásokat.

  • Á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örnyezetekben szokásos és várt előfordulások. Az átmeneti hibák tipikus okai közé tartozik a hálózati kapcsolat pillanatnyi megszakadása, egy megszakadt adatbázis-kapcsolat vagy egy 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 leválasztják a feladatokat a felhasználói felületről (UI). Ha nem igényel felhasználói visszajelzést vagy felhasználói visszajelzést, és nem befolyásolja a felhasználói felület válaszkészségét, valósítson meg feladatokat háttérfeladatként.

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 fájlok indexelése.
  • Batch-feladatok, például az adatok rendszeres frissítése vagy adott időpontban végzett feladatok feldolgozása.
  • Hosszú ideig futó munkafolyamatok, például megrendelés teljesítése vagy szolgáltatások és rendszerek kiépítése.

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

Tervezzen az önjavítást szem előtt tartva

A számítási feladat öngyógyításhoz való tervezéséhez hajtsa végre a hibaészlelést, hogy az automatikus válaszok aktiválódjanak, és a kritikus folyamatok zökkenőmentesen helyreálljanak. Engedélyezze a naplózást, hogy működési információkat nyújtson a hiba természetéről és a helyreállítás sikerességéről. A kritikus folyamatok öngyógyításának megközelítése az adott folyamathoz definiált megbízhatósági céloktól , valamint a folyamat összetevőitől és függőségeitől függ.

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 automatizált feladatátvételt a következő szolgáltatásokhoz engedélyezheti:

  • Számítási erőforrások: Az Azure-beli virtuálisgép-méretezési csoportok é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ételhez konfigurálhatók olyan megoldásokkal, mint az 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 é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 egy ügyfelet szabályoz, az nem jelenti azt, hogy az ügyfél rosszindulatúan viselkedett. Ez azt jelentheti, hogy az ügyfél túllépte a szolgáltatási kvótát. Ha azonban egy ügyfél következetesen túllépi a kvótát, vagy egyébként rosszul viselkedik, letilthatja őket. Sávon kívüli folyamat definiálása az ügyfél számára a letiltás feloldásának kéréséhez.

  • Megszakító minta: Ha az újrapróbálkozási mechanizmus elindítása után is fennáll egy hiba, a hívások növekvő lemaradása miatt kaszkádolt hibák keletkeznek. Az újrapróbálkozási mechanizmussal való együttműködésre tervezett megszakító úgy korlátozza a kaszkádolt hibák kockázatát, hogy megakadályozza, hogy az alkalmazás ismétlődően megkíséreljen olyan műveletet futtatni, amely valószínűleg sikertelen lesz.

  • 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áját. Ha egy vagy több lépés sikertelen, ezzel a mintával visszavonhatja a lépéseket végrehajtó munkát.

  • Csökkentett 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 lebomlás automatikus feladatátvételi műveleteket is tartalmazhat. Ha egy adatbázis az elsődleges példánysal kapcsolatos probléma miatt automatikusan meghibásodik egy replikán, a teljesítmény rövid ideig 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 egy vezető választási algoritmust implementálnál az alapoktól, fontolja meg a 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ése.

  • Használjon ellenőrzőpontokat a 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, az az utolsó ellenőrzőponttól folytatódhat. Érdemes lehet olyan mechanizmust implementálni, amely rendszeres időközönként rögzíti a tevékenység állapotadatait. 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. Transzparensen megőrzik az állapotot, ahol az intervallumok az Azure Service Bus üzenetsoraiból érkező üzenetek feldolgozásához igazodnak.

Automatikus öngyógyító műveletek

Az öngyógyítás másik módszere 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, egy PowerShell-szkripttel automatizálhatja az appszolgáltatást. 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. Tekintse meg az eseményalapú felhőautomatizálási referenciaarchitektúrát, amely egy függvény használatával válaszol 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.

Az Azure megkönnyítése

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ásos 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, az Azure Event Hubsot, egy Azure-függvényt, egy logikai alkalmazást vagy egy webhookot egy automatikus javítási művelet végrehajtásához.

Megfontolások

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

Példa

Például néhány minta használati eseteit a .NET megbízható webalkalmazás-mintájában tekinthet meg. Kövesse az alábbi lépéseket egy referencia-implementáció üzembe helyezéséhez.

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

Tekintse meg a javaslatok teljes készletét.