V tomto článku chci ukázat, jak snadno a zdarma vytvořit failover schéma pro webové stránky (nebo jakoukoli jinou internetovou službu) kombinací monitorování a dynamické DNS služby. To znamená, že v případě jakýchkoli problémů s hlavními stránkami (od problémů jako 'PHP Error' na stránce až po nedostatek místa nebo podezřele nízký počet objednávek v případě internetového obchodu), budou noví návštěvníci směrováni na druhý (třetí atd.) ověřeně fungující server, nebo na stránku 'Omlouváme se', kde jim zdvořile vysvětlíme, že 'je problém, jsme si vědomi a už to opravujeme, brzy to opravíme' (a vy v tomto případě skutečně budete vědět a budete moci opravovat).
Žít s failover nebo bez?
Dokud nějaký problém nenastane – zvláštní rozdíl není. Ale když se to stane, bez failover často dochází k následujícímu: snažíte se rychle zjistit, v čem je problém, nedaří se (zálohy se neobnovují, software nějak nefunguje podle dokumentace atd.), ale času je málo, servery-stránky leží, klienti volají, všichni jsou nervózní, snažíte se nějak hrubě a nečistě opravit 'na lepící pásce', pak se to zdá jakoby rozběhlo s berlemi a funguje. Myslíte si, že kdybyste měli čas, museli byste to podrobněji prostudovat a udělat vše pěkně, ale nic není trvalejšího než dočasné.
A nyní, jak to probíhá v hezké variantě s failoverem:
- Došlo k chybě
- Chyba je automaticky zjištěna
- Odesílá se upozornění
- Provádí se přepnutí na jeden ze záložních serverů
- Klidně a bez paniky se řeší problém, opravuje a server se opět uvádí do provozu.
V tomto schématu samozřejmě mohou vzniknout i své vlastní zmetky, ale přesto, schéma je lineární, každý krok je zde jednoduchý a hlavní — lze jej doladit zvlášť, takže pravděpodobnost selhání tohoto schématu je mnohem nižší, a všechny akce mohou být automatizovány a provedeny rychle (na rozdíl od úkolu najít a opravit neznámou epickou potíž). Váš letadlo přistálo v daleké zemi, zapínáte telefon a vidíte v telegramu zprávu, že server spadl, ale všechno je v pořádku, aktivoval se záložní server, můžete pokračovat ve své cestě, nemusíte se vracet ani opravovat přes SSH z nejbližší kavárny s WiFi. Opravit se dá, až když bude pohodlnější.
Budoucnost je už tady!
Dříve byla hlavním problémem, který činil failover často nepřijatelným řešením, celková cena. Buď bylo třeba zakoupit drahá zařízení (a najmout ještě dražší specialisty), nebo spáchat něco složitého podle návodů (dokonce jsem viděl variantu, kdy byly dva servery propojeny nulovým modemovým kabelem a sdílely heartbeat, aby v ten správný okamžik záložní server věděl a převzal řízení). Dnes existují jednodušší a bezplatné způsoby. Pokud máte web s kočkami — nemáte žádnou výmluvu, pokud jste dosud neimplementovali failover!
A kromě toho, pro schéma failoveru je potřebný ještě server (nebo možná více než jeden), a dříve to představovalo vysoké náklady, nyní můžete získat VDS za pár korun.
Nejspolehlivější web s kočkami
Pro praktickou ilustraci řešení s okerr + dynamic dns jsme spustili svůj web s kočkami . Kočky nenávidíme, takže jich tam skoro nebude. Celkem jsou tři weby, každý vypadá zhruba stejně (vše je na jedné šabloně), ale s různými koťaty, aby bylo snadné je odlišit, a každé uvádí technické informace, aby bylo vidět, jak funguje failover. Stránka se sama aktualizuje každou minutu, ale vždy lze stisknout reload v prohlížeči.
V technických informacích je řádek „status=OK“. Někdy servery simulují problémy a uvádějí status=ERR. Hlavní server „jakoby padá“ každou dvacátou minutu každé hodiny (0:20, 1:20, 2:20, ...). Záložní (backup) server ve čtyřicáté minutě. Poslední server („sorry“-server) funguje vždy. V každou nultou minutu každé hodiny se hlavní a záložní server „obnovují“.

Pokud otevřete web a necháte ho v záložce — uvidíte, že nikdy nepadají (i když jednotlivé servery občas simulují problém), a v případě problému se serverem se jen „přepíná“ mezi aktivními servery. Bude se měnit obrázek, název a adresa serveru a jeho role. Někdy lze chytit okamžik, kdy status=ERR (problém již existuje, ale celý failover ještě neproběhl), ale následující aktualizace vám ukáže stránku z pracovního serveru.
Failover na okerr + dynamic DNS
Podívejme se, jak to funguje pod kapotou. Úkolem failoveru je zajistit, aby adresa cat.okerr.com vždy ukazovala na IP adresu pracovního serveru.
Každý z serverů, které hostují náš kočičí web na okerr, má indikátor, který jednou za minutu kontroluje jeho stav.

Na této obrazovce vidíme, jak je kontrolována stránka cat.okerr.com ze serveru alpha.okerr.com. Stránka by měla obsahovat status=OK, a jak vidíme nahoře, stav indikátoru je nyní OK. Když server „zhavaruje“, bude status ERR. (To je jen jeden příklad indikátoru, okerr — to je monitoring, takže lze připojit jakýkoli typ indikátoru, například kontrola volného místa na disku, počet nových objednávek v databázi a dokonce logické indikátory, například v noci budou jiné chybové kritéria než ve dne).
V nastavení projektu jsme vytvořili schéma failover s těmito indikátory:

V schématu jsou tři indikátory (tři servery), různé podle priorit. Hlavní server pro web je charlie, pokud nefunguje (nebude mít „status=OK“ nebo je jednoduše nedostupný), přecházíme k bravu a v posledním případě k alphe. Na pravé straně stránky se zobrazuje stav DNS záznamu na různých serverech.
Pro ty, kteří si všimli, že se používá název cat.he.okerr.com: Používáme mírně složitější schéma. Místo toho, abychom jednoduše změnili DNS záznam cat.okerr.com, měníme cat.he.okerr.com (u poskytovatele dynamického DNS ), a cat.okerr.com je CNAME (alias), který se nemění, vždy odkazuje na cat.he.okerr.com. Hurricane se nám jednoduše více líbí jako dynamický DNS a má klíče pro správu jednotlivého záznamu (a ne celé zóny), což nám připadá bezpečnější. Také můžete v okerr nezadávat hesla-klíče pro správu celého doménového jména, ale pouze pro subdoménu nebo záznam.
Od pádu k vzestupu
Po krocích, jak toto schéma funguje:
- Dojde k (simulovanému) problému na serveru.
- Senzor okerr každou minutu kontroluje stav každého serveru a informuje hlavní server projektu v okerr.
- Indikátor příslušného serveru mění stav z OK na ERR.
- Při změně stavu indikátoru se přepočítává failover a určuje se, kterou adresu je třeba nastavit (pokud je potřeba. Například, pokud funguje hlavní server, zatímco záložní servis selhal — nebudou žádné změny).
- Tato adresa je oznámena službě dynamického DNS. Po dokončení této fáze vpravo uvidíte stav „synchronized“.
- Velmi rychle (během sekund) se záznam dostane k DNS serverům vaší domény (u kočičího webu jsou to ns1-ns5.he.net).
- Od této chvíle se některým uživatelům může podařit připojit k novému živému serveru. Nicméně ještě ne všechny DNS servery na světě aktualizovaly záznamy a někde ještě může být uložena stará verze. Na veřejných DNS serverech je možné vidět, jak data "skáčou", ukazujíce jednou nové, jednou staré hodnoty. Pokud aktualizujete stránku nastavení failover, okerr sám požádá o nové informace z DNS serverů.
- Jakmile se data stabilizují, starý cached záznam všude propadne — 100 % dotazů směřuje na nový server.
Aby se sedmý krok (často nejnáročnější) urychlil, je potřeba nastavit TTL dynamického DNS záznamu co nejníže. Obvykle služby umožňují intervaly 90-120 sekund. To je docela rozumný kompromis.
Dodatečně
Vše toto je možné nastavit za večer (pokud už máte duplikující server). Jak okerr, tak služby dynamického DNS jsou zdarma. Abyste získali v okerr více kontrol a kratší kontrolní období, musíte projít školením (záložka profilu). Po dokončení se okamžitě zvyšuje úroveň (20 indikátorů za hodinu + 1 rychlý, 10 minutový). A pokud to nebude stačit — napište na support@okerr.com, pravděpodobně bude možné zvýšit (dosud vždy byla možnost, nikdy neodmítali, naopak, sami nabízeli). Jen zpočátku nechci slibovat vše všem, nejsem si jistý, že máme dostatek zdrojů, abychom udrželi slovo. Ale zatím je uživatelů málo, takže se zvyšováním limitů nejsou žádné problémy.
Co vše může okerr — podívejte se na webové stránky . V zásadě se jedná o monitorování (zabbix z cloudu), a fileover je příjemná doplňková funkce. Také se lze na stránkách dostat do dema bez registrace.
Při změně stavu indikátoru je zasláno oznámení na e-mail nebo Telegram. (Podívali jsme se, co se děje, a zdá se, že Telegram je nejspolehlivější messenger. Děkujeme RKN za stresový test!) Při správném nastavení okerr je každé oznámení buď signál "zastavte vše, je potřeba opravit!", nebo "stop!". Nadbytečné alerty od okerr by neměly existovat (pokud ano — je potřeba nastavit jinak). Například pro naši kočičí stránku server alpha je poslední a nikdy nesimuluje chybu. Pokud spadne — musíme to vědět. Ostatní servery neustále simulují chyby, takže, abychom nedostávali alerty několikrát za hodinu, mají tyto indikátory stav "tichý".
Má smysl také vytvořit sorry-server (na jakémkoliv nejlevnějším hostingu), který buď bude mít vaši omluvnou stránku (pro případ, že by všechny hlavní a záložní servery spadly), nebo přesměruje na stavovou stránku na okerr (například naše ) nebo statuspage.io.
Zdroj: habr.com
