Spolehlivost v Azure Container Apps

Azure Container Apps je plně spravovaná bezserverová služba pro hostování kontejnerů pro nasazování mikroslužeb a kontejnerizovaných aplikací.

Při používání Azure je spolehlivost sdílenou odpovědností. Microsoft nabízí celou řadu možností, které podporují odolnost a obnovení. Zodpovídáte za pochopení toho, jak tyto možnosti fungují ve všech službách, které používáte, a výběrem možností, které potřebujete ke splnění vašich obchodních cílů a cílů dostupnosti.

Tento článek popisuje, jak zajistit odolnost kontejnerových aplikací vůči různým potenciálním výpadkům a problémům, včetně přechodných chyb, výpadků zón dostupnosti, výpadků oblastí a údržby služeb. Popisuje také, jak používat zálohy k zotavení z jiných typů problémů a zvýrazňuje klíčové informace o smlouvě o úrovni služeb Container Apps (SLA).

Doporučení pro nasazení do produkčního prostředí

Informace o nasazení container Apps pro podporu požadavků na spolehlivost vašeho řešení a o tom, jak spolehlivost ovlivňuje další aspekty architektury, najdete v tématu Osvědčené postupy architektury pro Container Apps v azure Well-Architected Frameworku.

Přehled architektury spolehlivosti

Když používáte Container Apps, nasadíte prostředí , které slouží jako základní jednotka nasazení a definuje zabezpečenou hranici kolem skupiny kontejnerových aplikací. Prostředí je místo, kde konfigurujete základní nastavení, včetně podpory zóny dostupnosti a konfigurace sítě. Mezi dva typy prostředí patří prostředí profilů úloh a prostředí jen pro spotřebu. Další informace najdete v tématu Výpočetní a fakturační struktury v Container Apps.

Do jednoho prostředí můžete nasadit více aplikací . Každá aplikace spouští jeden nebo více kontejnerů. Prostředí může také spouštět jednu nebo více úloh, které představují neinteraktivní úlohy. Další informace najdete v tématu Kontejnery v kontejnerových aplikacích a úlohách v kontejnerových aplikacích.

Každá aplikace má jednu nebo více replik, které představují spuštěné instance aplikace. Můžete řídit, jak se aplikace škáluje, včetně minimálního a maximálního počtu replik a toho, jak aplikace dynamicky přidává a odebírá repliky. Plánovač platformy zajišťuje optimální distribuci mezi fyzickými hostiteli při splnění požadavků na minimální počet replik. Další informace najdete v tématu Nastavení pravidel škálování v Container Apps.

Diagram znázorňující prostředí Container Apps, které spouští aplikaci se třemi replikami

Container Apps podporuje spolehlivost vašich aplikací pomocí různých možností:

  • Automatické monitorování stavu: Integrovaný kontroler příchozího přenosu dat automaticky vyrovnává zatížení provozu napříč replikami, které jsou v pořádku. Pokud replika neprojde kontrolami stavu nebo její základní infrastruktura není po delší časové období dostupná, služba automaticky restartuje neúspěšně fungující kontejnery nebo vytvoří náhradní repliky. Také redistribuuje provoz mimo nezdravé repliky a spravuje opakované pokusy o připojení v clusteru. Tento automatický proces obnovení nevyžaduje žádný zásah zákazníka a udržuje zadaný počet replik. Další informace najdete v tématu Zdravotní sondy.

  • Odolnost aplikací prostřednictvím Dapr: Container Apps poskytuje úzkou integraci s Dapr, což je architektura, která podporuje mikroslužby a kontejnerizované aplikace na produkční úrovni. Dapr zahrnuje funkce, které pomáhají zlepšit odolnost, včetně zpracování chyb v jiných službách. Další informace najdete v tématu Mikroslužby s kontejnerovými aplikacemi.

  • Odolnost infrastruktury pro systémové komponenty: Tato odolnost zahrnuje řídicí rovinu, kontrolery příchozího přenosu dat a modul runtime kontejneru. V oblastech, které mají zóny dostupnosti, poskytuje Služba Container Apps redundanci zón. Další informace najdete v tématu Odolnost proti chybám zóny dostupnosti.

Odolnost proti přechodným chybám

Přechodné chyby jsou krátká, přerušovaná selhání ve složkách. V distribuovaném prostředí, jako je cloud, se vyskytují často a jsou normální součástí provozu. Přechodné chyby se opravují po krátké době. Je důležité, aby vaše aplikace mohly zpracovávat přechodné chyby, obvykle opakováním ovlivněných požadavků.

Všechny aplikace hostované v cloudu by měly při komunikaci se všemi cloudovými rozhraními API, databázemi a dalšími komponentami postupovat podle pokynů pro zpracování přechodných chyb Azure. Další informace najdete v tématu Doporučení pro zpracování přechodných chyb.

Container Apps automaticky zpracovává mnoho přechodných chyb prostřednictvím mechanismů opakování na úrovni platformy a monitorování stavu. Pokud chcete zajistit odolnost aplikací vůči přechodným chybám, proveďte následující akce:

  • Nakonfigurujte sondy stavu , které platformě umožňují detekovat a reagovat na podmínky selhání specifické pro aplikaci. Nastavte odpovídající prahové hodnoty selhání a hodnoty časového limitu na základě charakteristik spuštění vaší aplikace. Pokud se například chcete vyhnout předčasnému restartování kontejneru během dočasných problémů, použijte pro sondy aktivity prahovou hodnotu selhání 3 s obdobím 10 sekund. Další informace najdete v tématu Zdravotní sondy.

  • Pomocí zásad odolnosti zjišťování služeb (Preview) můžete aktivně předcházet selháním požadavků na služby, zjišťovat je a obnovovat. Když například použijete zásadu odolnosti, může se každý příchozí požadavek aplikace automaticky opakovat, pokud dojde k přechodné chybě, která brání aplikaci v reakci. Další informace najdete v tématu Odolnost zjišťování služeb (Preview).

  • Implementujte logiku opakování ve vašich aplikacích pro volání externích služeb, databázová připojení a požadavky rozhraní API.

    Pokud vaše aplikace používá Dapr k integraci s cloudovými službami, použijte rezilienci komponent Dapr (náhled) ke konfiguraci opakování, vypršení časových limitů a jističů.

    U jiných závislostí musí vaše aplikace zpracovávat přechodné chyby. Při volání externích služeb používejte strategie exponenciálního zálohování a vzorů jističe, aby se zabránilo kaskádovým selháním během přerušení služeb po proudu. Integrované funkce zjišťování a vyrovnávání zatížení služby Container Apps automaticky směrují provoz mimo neúspěšné instance, ale zásady opakování na úrovni aplikace zajišťují řádné zpracování přechodných problémů před tím, než kontroly stavu na úrovni platformy aktivují restartování kontejneru.

  • Úlohy návrhu tak, aby byly odolné vůči přechodným chybám, včetně selhání při provádění úlohy nebo v jejich závislostech. Navrhněte úlohy tak, aby v případě restartování obnovily práci, nebo je navrhněte pro idempotenci, aby bylo možné je bezpečně opakovaně spustit.

Odolnost proti chybám zóny dostupnosti

Zóny dostupnosti jsou fyzicky oddělené skupiny datacenter v rámci oblasti Azure. Když jedna zóna selže, mohou služby přejít na jednu ze zbývajících zón.

Když vytvoříte prostředí Container Apps, můžete povolit redundanci zón a distribuovat základní infrastrukturu napříč několika zónami dostupnosti ve zvolené oblasti Azure. Container Apps automaticky naplánuje repliky vašich aplikací napříč zónami. K této distribuci dochází transparentně, což znamená, že pro jednotlivé repliky nemusíte zadávat umístění zóny.

Redundance zón zvyšuje odolnost vaší aplikace vůči selháním na úrovni zóny tím, že zajišťuje, aby repliky vaší aplikace kontejneru byly rozloženy do více zón.

Následující diagram znázorňuje zónově redundantní aplikaci kontejneru se třemi replikami. Každá replika běží v samostatné zóně dostupnosti.

Diagram znázorňující zónově redundantní aplikaci kontejneru se třemi replikami Každá replika běží v samostatné zóně dostupnosti.

Požadavky

  • Zkontrolujte podporu oblastí. Redundance zón je dostupná ve všech oblastech, které podporují kontejnerové aplikace a zóny dostupnosti.

    Pokud chcete zjistit, které oblasti podporují zóny dostupnosti, podívejte se na oblasti Azure s podporou zóny dostupnosti.

    Pokud chcete zjistit, které oblasti podporují container Apps, podívejte se na dostupnost produktů v jednotlivých oblastech.

  • Použijte profily úloh. Redundance zón je dostupná pro všechny plány Container Apps, včetně profilů úloh Consumption i Dedicated.

  • Povolte redundanci zón během vytváření prostředí. Toto nastavení nelze po vytvoření prostředí změnit.

  • Nasaďte prostředí Container Apps ve virtuální síti. Virtuální síť musí být v oblasti, která podporuje zóny dostupnosti. Ujistěte se, že má virtuální síť dostatečně velkou podsíť. Prostředí jen pro použití potřebují podsíť s rozsahem /23 CIDR (Classless Inter-Domain Routing) nebo větším, zatímco prostředí profilů úloh vyžadují /27 rozsah CIDR nebo větší.

  • Nastavte minimální počet replik na alespoň dva, abyste zajistili distribuci napříč několika zónami dostupnosti. Pokud platí některá z následujících podmínek, zvažte nastavení vyššího minimálního počtu replik:

    • Očekávané zatížení ve špičce vyžaduje více než dvě repliky.

    • Musíte být odolní vůči několika výpadkům zóny současně.

    • Chcete minimalizovat dobu čekání na vytvoření nových replik v jiných zónách během výpadku zóny.

Náklady

Pokud povolíte redundanci zón, neúčtují se vám další poplatky nad rámec standardních cen Container Apps. Platíte stejné sazby za výpočetní prostředky, požadavky a sekundy vCore bez ohledu na to, zda je zónová redundance povolena nebo ne. Další informace najdete v tématu Ceny služby Container Apps a fakturace služby Container Apps.

Konfigurujte podporu zón dostupnosti

  • Vytvořte zónově redundantní prostředí Container Apps. Pokyny k nasazení, které se týkají webu Azure Portal, Azure CLI a Azure PowerShellu, najdete v tématu Vytvoření zónově redundantní aplikace kontejneru.

  • Migrace na zónově redundantní nasazení V existujícím prostředí Container Apps nemůžete povolit redundanci zón. Pokud chcete upgradovat existující prostředí, která nejsou zónově redundantní, vytvořte nové prostředí s povolenou redundancí zón v podporované oblasti. Pak znovu nasaďte své kontejnerové aplikace.

  • Zakažte zónovou redundanci. Redundanci zón nelze po povolení během vytváření prostředí zakázat. Pokud požadujete nasazení bez zónové redundance, musíte vytvořit nové prostředí bez povolení možnosti redundance zóny nebo nasazení v oblasti, která nepodporuje zóny dostupnosti.

  • Ověřte zónovou redundanci. Pomocí webu Azure Portal, Azure CLI a Azure PowerShellu můžete ověřit stav redundance zóny vašeho prostředí.

Plánování a řízení kapacit

Pokud se zóna dostupnosti stane nedostupnou, platforma Container Apps použije pravidla škálování k rozhodnutí, kdy nahradit všechny ztracené repliky v této zóně. Je důležité správně nakonfigurovat pravidla škálování, aby plánovač mohl provádět vhodná rozhodnutí o plánování.

Pokud chcete správně nakonfigurovat pravidla škálování, postupujte podle těchto principů:

  • Nastavte minimální počet replik , které může vaše aplikace tolerovat. Nahrazení ztracených replik může chvíli trvat, protože platforma musí zjistit, že staré repliky jsou pryč. Nové repliky se pak musí spustit a vrátit stav připravenosti sondy jako v pořádku, než mohou přijímat příchozí požadavky. Pokud nemůžete tolerovat žádné období s menším než minimálním počtem replik, které jste zadali, zvažte přídavné kapacity, aby vaše aplikace zůstala výkonná i v případě, že zóna přestane být dostupná.

  • Nastavte požadavky na prostředky a limity , které plánovači Container Apps pomůžou při rozhodování o optimálním umístění napříč zónami. Nedostatečně specifikované požadavky na prostředky mohou vést k nerovnoměrné distribuci nebo selhání umístění během vysokého zatížení.

Další informace o možnostech konfigurace naleznete v tématu Nastavení pravidel škálování.

Chování, když jsou všechny zóny v pořádku

Tato část popisuje, co očekávat, když jsou prostředky Container Apps nakonfigurované pro redundanci zón a všechny zóny dostupnosti jsou funkční.

  • Směrování provozu mezi zónami: Díky zónově redundantním aplikacím Container Apps funguje platforma v modelu aktivní-aktivní, kde provoz obsluhuje více replik současně. Ingress controller distribuuje příchozí požadavky mezi všechny zdravé repliky bez ohledu na jejich zónu a ve výchozím nastavení používá vyrovnávání zatížení metodou round-robin. Každá zóna zpracovává požadavky nezávisle a platforma nedává prioritu žádné konkrétní zóny pro distribuci provozu. Sondy stavu pocházejí ze všech zón, aby se zajistilo přesné hodnocení stavu každé repliky z různých perspektiv.

  • Replikace dat mezi zónami: Container Apps nereplikuje data aplikací mezi zónami, protože je určená pro bezstavové úlohy. Všechna data, která vaše aplikace ukládá do dočasného úložiště, včetně úložiště s vymezeným kontejnerem a úložiště s rozsahem repliky, se odstraní při vypnutí kontejneru nebo repliky.

    Pro požadavky na stavová data připojte sdílenou složku Azure Files nakonfigurovanou pro zónově redundantní úložiště nebo použijte jiné služby Azure, jako je Azure Cosmos DB nebo Azure SQL Database, které poskytují své vlastní možnosti replikace mezi zónami.

    Platforma replikuje pouze metadata řídicí roviny, včetně konfigurací vaší aplikace, pravidel škálování a tajných kódů napříč zónami pro zajištění vysoké dostupnosti. Kontejnerové image se při vytváření replik stahují z registru kontejnerů do každé zóny, jak je potřeba.

Chování při selhání zóny

Tato část popisuje, co očekávat, když jsou prostředky Container Apps nakonfigurované pro redundanci zón a dojde k výpadku zóny dostupnosti.

  • Detekce a odpověď: Azure automaticky detekuje selhání zón. Container Apps okamžitě zastaví plánování nových replik do selhávající zóny a začne přesměrovávat provoz na funkční repliky ve zbývajících zónách. Platforma automaticky zpracovává všechny operace převzetí služeb při selhání bez nutnosti vašeho zásahu.

  • Oznámení: Microsoft vás při výpadku zóny automaticky neoznámí. Azure Service Health ale můžete použít k pochopení celkového stavu služby, včetně jakýchkoli selhání zón, a můžete nastavit upozornění služby Service Health , která vás upozorní na problémy.

    Stav aplikací můžete monitorovat také prostřednictvím metrik Container Apps ve službě Azure Monitor. Nakonfigurujte upozornění na pokles počtu replik a četnost selhání požadavků, abyste dostávali okamžité oznámení, když dojde k problémům souvisejícím se zónou.

  • Aktivní požadavky: Žádosti za běhu na repliky v selhané zóně mohou být zrušeny, nebo mohou docházet k vypršení časového limitu nebo k chybám připojení. Všechna spuštění úloh v ovlivněné zóně se přeruší a označí jako neúspěšná.

  • Očekávaná ztráta dat: Na úrovni platformy Container Apps nedojde ke ztrátě dat, protože služba je navržená pro bezstavové úlohy. Všechna data uložená v dočasném úložišti v rámci zóny dostupnosti se při ukončení repliky ztratí a dočasné úložiště by se mělo používat jenom pro dočasná data.

  • Očekávaný výpadek: Při selhání zón dochází k minimálnímu výpadku aplikací. Skutečný dopad závisí na nastavení sondy stavu vaší aplikace a počtu replik v zónách, které jsou v pořádku. Zajistěte, aby klienti dodržovali pokyny pro zpracování přechodných chyb , abyste minimalizovali případné účinky.

    Všechny úlohy spuštěné v ovlivněné zóně se přeruší a označí se jako neúspěšné. Pokud potřebujete úlohu, aby byla odolná vůči selhání zóny, nakonfigurujte opakování nebo nakonfigurujte paralelismus tak, aby úloha spustila více kopií stejného spuštění. Další informace naleznete v tématu Pokročilá konfigurace úlohy.

  • Přesměrování provozu: Sondy stavu vstupního kontroleru rychle detekují nedostupné repliky a odeberou je z fondu pro vyvažování zatížení. V závislosti na konfiguraci zdravotní sondy aplikace k procesu přepnutí při selhání obvykle dochází přibližně za 30 sekund. Následný příchozí provoz se distribuuje mezi zbývající repliky, které jsou v pořádku. K tomuto přesměrování provozu dochází transparentně na klienty, kteří nadále používají stejnou adresu URL aplikace.

    Pokud je vazba relace povolená a zóna se zhroutí, klienti, kteří byli dříve směrováni na repliky v této zóně, jsou nyní směrováni na nové repliky, protože předchozí repliky již nejsou k dispozici. Jakýkoli stav přidružený k předchozím replikám se ztratí.

    V vadné zóně nebudou spuštěny žádné nové instance úloh.

  • Správa instancí: Nové instance replik mohou být vytvořeny ve zdravých zónách, když se pravidla pro automatické škálování aktivují na základě zvýšeného zatížení.

Obnovení zóny

Když se zóna dostupnosti obnoví z selhání, služba Container Apps ji automaticky znovu integruje do aktivní služby bez nutnosti zásahu. Sondy stavu platformy zjistí, kdy je infrastruktura v obnovené zóně dostupná, a Container Apps začne plánovat nové repliky do této zóny na základě vaší konfigurace škálování. Stávající repliky ve zdravých zónách nadále zajišťují provoz během procesu opětovného začlenění, což pomáhá zabránit přerušení služeb.

Container Apps v rámci běžných operací škálování postupně vyrovnává distribuci replik napříč všemi dostupnými zónami. K tomuto automatickému vyrovnávání dochází při vytváření replik z důvodu událostí škálování nebo nahrazení replik, které nejsou v pořádku. Platforma nevynucuje okamžité redistribuce existujících replik, které brání nepotřebným restartováním kontejneru a udržuje stabilitu aplikací během obnovení.

Testování poruch zón

Platforma Container Apps spravuje směrování provozu, přepnutí na záložní systém a obnovení po selhání pro kontejnerové aplikace se zónovou redundancí. Tato funkce je plně spravovaná, takže nemusíte zahajovat ani ověřovat procesy selhání zóny dostupnosti.

Pokud chcete ověřit odolnost aplikace vůči selháním zón, simulujte přerušení na úrovni zóny na aplikační vrstvě pomocí kontrolovaných testovacích přístupů. Zastavte nebo odeberte repliky z konkrétních zón vertikálním snížením kapacity aplikace a sledujte, jak zbývající repliky zpracovávají zvýšené zatížení. Monitorujte klíčové metriky během testování odolnosti, včetně počtu replik, míry úspěšnosti požadavků, doby odezvy a chování automatického škálování. Ujistěte se, že minimální počet replik udržuje dostupnost služby, když se repliky odeberou, a ověřte, že vaše pravidla škálování dokážou zvládnout zvýšené zatížení zbývajících replik. Otestujte konfigurace zdravotních sond záměrným selháním koncových bodů stavu a ověřte, že platforma odebere během očekávaných časových rámců instance, které nejsou v pořádku.

Odolnost proti selháním v celé oblasti

Container Apps je služba s jednou oblastí. Pokud oblast přestane být dostupná, vaše prostředí a aplikace jsou také nedostupné.

Vlastní řešení pro více regionů pro odolnost systémů

Pokud chcete snížit riziko selhání jedné oblasti ovlivňující vaši aplikaci, můžete nasadit prostředí napříč několika oblastmi. Následující kroky pomáhají posílit odolnost:

  • Nasaďte aplikace do prostředí v každé oblasti. Každé prostředí vyžaduje vlastní konfiguraci virtuální sítě a požadavky na podsíť se vztahují nezávisle na každém regionálním nasazení. Image kontejnerů musí být dostupné ve všech oblastech, kterých můžete dosáhnout pomocí služby Azure Container Registry s povolenou geografickou replikací.

  • Nakonfigurujte zásady vyrovnávání zatížení a převzetí služeb v případě selhání pomocí služby, jako je Azure Front Door nebo Azure Traffic Manager.

  • Replikujte data napříč oblastmi, abyste mohli obnovit poslední stav aplikace.

Zálohování a obnovení

Container Apps neposkytuje integrované možnosti zálohování pro vaše aplikace nebo data. Jako bezstavová platforma pro hostování kontejnerů Container Apps vyžaduje, aby aplikace spravovaly své vlastní strategie uchovávání a obnovy dat skrze externí služby. Kontejnery aplikací a jejich místní systémy souborů jsou dočasné a veškerá data uložená místně se při restartování nebo přesunu replik ztratí.

Odolnost při aktualizacích aplikací

Pomocí správy revizí nasaďte aktualizace do aplikace bez výpadků. Můžete vytvářet nové revize s aktualizovanými obrázky kontejneru a provádět přímou migraci pomocí blue-green deployment strategy nebo postupně přesouvat provoz pomocí pravidel rozdělení provozu. Během aktualizací aplikace platforma udržuje minimální počet replik vytvořením nových kontejnerů před vyřazením starých kontejnerů, což pomáhá zabránit přerušení služeb.

Další informace najdete v tématu Aktualizace a nasazení změn v Container Apps.

Odolnost vůči údržbě služeb

Container Apps provádí automatickou údržbu platformy, která používá aktualizace zabezpečení, nasazuje nové funkce a zlepšuje spolehlivost služeb. Platforma používá kumulativní aktualizace napříč doménami selhání a zónami dostupnosti k omezení přerušení spuštěných aplikací. Během údržby budou kontejnery dál běžet bez přerušení, protože aktualizace se použijí na základní infrastrukturu ve fázích.

Můžete zadat vlastní časová období údržby, což jsou období, po kterou chcete mít v aplikacích provedenou údržbu. Mějte na paměti, že kritické aktualizace můžou nastat mimo časové období údržby. Další informace najdete v tématu Plánovaná údržba služby Container Apps.

Smlouva o úrovni služeb

Smlouva o úrovni služeb (SLA) pro služby Azure popisuje očekávanou dostupnost každé služby a podmínky, které musí vaše řešení splnit, aby bylo dosaženo očekávané dostupnosti. Další informace najdete v tématu Smlouvy SLA pro online služby.

Smlouva SLA o dostupnosti pro Container Apps je založená na pravidlech škálování, která jste nastavili ve svých aplikacích.