Zkratka proHigh Availabilityhigh availability: haj evejlebilityTakéHA, High availability, Vysoká dostupnost systémuPokročilý
Definice
Vysoká dostupnost je vlastnost systému, který zůstává použitelný i při výpadku jednotlivých součástí, protože je navržený bez jediného kritického místa selhání. Měří se podílem času, kdy služba funguje podle dohodnutých parametrů, typicky v procentech za měsíc nebo rok, a dosahuje se redundancí, automatickým přepnutím a průběžným monitoringem.
Co vysoká dostupnost slibuje a co ne
Vysoká dostupnost řeší jedinou otázku: kolik minut za rok smí být služba nepoužitelná. Nejde o rychlost ani o to, že se nikdy nic nerozbije. Jde o to, že porucha jednoho serveru, disku, databázové repliky nebo celé serverovny se nepromítne do zážitku uživatele, protože práci okamžitě převezme něco jiného.
Devítky a co znamenají v minutách
Dostupnost se udává v procentech, obvykle jako počet „devítek“. Rozdíl mezi nimi je v praxi dramatický, protože každá další devítka zkracuje povolený výpadek zhruba na desetinu.
| Dostupnost | Výpadek za rok | Výpadek za měsíc |
|---|---|---|
| 99 % | cca 3,65 dne | cca 7,2 hodiny |
| 99,9 % | cca 8,8 hodiny | cca 43 minut |
| 99,99 % | cca 53 minut | cca 4,3 minuty |
| 99,999 % | cca 5,3 minuty | cca 26 sekund |
Čtyři devítky znamenají, že ruční zásah člověka už nestihne pomoct. Od této úrovně musí být zotavení automatické.
Z čeho se dostupnost skládá
Základem je redundance: každá komponenta existuje aspoň dvakrát a provoz mezi ně rozděluje load balancer, který nezdravé instance vyřadí podle health checku. Druhou vrstvou je failover, tedy automatické přepnutí na zálohu, u databáze typicky povýšení repliky na primární uzel. Třetí vrstvou je izolace domén selhání: instance rozprostřené do několika zón dostupnosti přežijí výpadek jednoho datového centra.
Neviditelnou, ale rozhodující částí je detekce. Systém, který poruchu zjistí až po deseti minutách, nemůže mít čtyři devítky, i kdyby přepnutí trvalo sekundu. Proto se HA vždy staví společně s monitoringem a alertingem.
Co to stojí
Redundance znamená platit hardware, který většinu času nic nedělá, a provozovat složitější architekturu. Replikace mezi lokalitami přidává latenci a nutí volit mezi konzistencí a dostupností. Automatický failover přináší vlastní rizika: špatně nastavené prahy vedou ke split brainu, kdy se dva uzly považují za primární a rozejdou se jim data.
Kde bývá slabé místo
Aplikační vrstva se často zdvojí, ale pod ní zůstane jedna databáze, jeden DNS záznam, jeden certifikát nebo jeden externí platební poskytovatel. Dostupnost celého řetězce je součinem dostupnosti jeho článků, takže tři služby po 99,9 % dají dohromady zhruba 99,7 %.
Vztah k disaster recovery a SLA
Vysoká dostupnost pokrývá běžné, očekávané poruchy uvnitř jedné lokality nebo regionu. Disaster recovery řeší katastrofu, po které se obnovuje ze zálohy, a pracuje s cíli RTO (jak dlouho smí obnova trvat) a RPO (kolik dat se smí ztratit). SLA je pak smluvní závazek na konkrétní číslo, obvykle s kreditem jako sankcí. Kontrolujte, co se do měřeného času nepočítá: plánovaná údržba bývá vyjmutá.
Příklady z praxe
E-shop přežije pád jednoho serveru v Black Friday
E-shop běží ve třech instancích ve dvou zónách dostupnosti za load balancerem. Během kampaně jedné instanci dojde paměť a přestane odpovídat na health check, takže ji balancer do několika sekund vyřadí z rotace. Zákazníci si výpadku nevšimnou, jen se provoz rozloží mezi zbylé dvě instance, a monitoring mezitím spustí náhradní instanci.
Health check, který nekontroluje jen že proces běží
Užitečný health check ověřuje i závislosti, například dostupnost databáze. Endpoint, který vrací 200 vždy, když aplikace naběhla, udrží v rotaci instanci, jež ve skutečnosti neumí obsloužit jediný požadavek.
app.get('/healthz', async (req, res) => { try { await db.query('SELECT 1'); res.status(200).json({ status: 'ok' }); } catch (err) { res.status(503).json({ status: 'degraded', dep: 'db' }); } });
Časté omyly
- MýtusMáme zálohy, takže máme vysokou dostupnost.
- Ve skutečnostiZálohy patří k disaster recovery, ne k vysoké dostupnosti. Obnova ze zálohy trvá minuty až hodiny, během kterých služba nefunguje, zatímco HA znamená, že provoz převezme jiný běžící uzel bez znatelného přerušení.
- MýtusCloud má dostupnost vyřešenou, stačí tam aplikaci nasadit.
- Ve skutečnostiPoskytovatel garantuje dostupnost své infrastruktury, typicky až při rozložení do více zón dostupnosti. Aplikace běžící v jediné instanci v jedné zóně spadne s ní, protože SLA poskytovatele se na takové nasazení obvykle vůbec nevztahuje.
- Mýtus99,9 % je skoro to samé jako 99,99 %.
- Ve skutečnostiRozdíl je desetinásobný: 99,9 % povoluje asi 43 minut výpadku měsíčně, 99,99 % jen zhruba 4 minuty. Ta druhá hodnota vylučuje jakýkoli ruční zásah a vyžaduje plně automatický failover.
Časté dotazy
- Jakou dostupnost má smysl si stanovit pro běžný e-shop?
- Pro běžný e-shop bývá rozumným cílem 99,9 %, tedy zhruba 43 minut výpadku měsíčně. Této úrovně se dosáhne dvěma aplikačními instancemi ve dvou zónách, replikovanou databází a slušným monitoringem, což je nákladově zvládnutelné. Posun na 99,99 % obvykle znamená násobně dražší architekturu, tým se službou v pohotovosti a automatický failover databáze. Vyplatí se to teprve tehdy, když spočítaná ztráta z hodiny nedostupnosti převýší roční náklad na tu složitější variantu.
- Jak se počítá dostupnost složené aplikace z více služeb?
- Dostupnost série závislých komponent se násobí. Pokud požadavek musí projít přes CDN, aplikační server a databázi a každá část má 99,9 %, výsledek je přibližně 99,7 %, tedy asi dvakrát tolik výpadku, než čekáte. Redundance funguje opačně: dvě nezávislé instance téže služby s dostupností 99 % dají v paralelním zapojení zhruba 99,99 %, ovšem jen pokud jsou skutečně nezávislé a nesdílejí napájení, síť ani stejnou chybu v kódu.
- Co je split brain a jak mu předejít?
- Split brain je stav, kdy se po výpadku sítě rozdělí clusteru na části a v každé se nějaký uzel prohlásí za primární. Obě části pak přijímají zápisy a data se nenávratně rozejdou. Prevencí je kvórum: zápisy povolí jen ta část clusteru, která má nadpoloviční počet hlasů, k čemuž se používá lichý počet uzlů nebo pomocný arbitr. Doplňkově se nasazuje fencing, tedy tvrdé odstavení podezřelého uzlu, aby nemohl zapisovat.
- Počítá se plánovaná údržba do výpadku podle SLA?
- Plánovaná údržba se do měřené nedostupnosti podle většiny SLA nezapočítává, pokud ji poskytovatel oznámí předem v dohodnutém předstihu a v definovaném okně. Právě proto může být reálná zkušenost uživatele horší než číslo ve smlouvě. Při čtení SLA je dobré sledovat i to, jak se dostupnost měří (odkud, jak často, co se považuje za chybu) a jaká je sankce. Kredit ve výši několika procent měsíční platby zpravidla nepokryje skutečnou obchodní ztrátu.
Zdroje
- High availability(otevře se v novém okně)
- AWS Well-Architected Framework(otevře se v novém okně)
- Google Cloud Architecture Framework(otevře se v novém okně)
- PostgreSQL: High Availability, Load Balancing, and Replication(otevře se v novém okně)
- Kubernetes Documentation: Concepts(otevře se v novém okně)