V tomto článku chcem ukázať, ako jednoducho a zadarmo môžete vytvoriť failover schému pre webovú stránku (alebo akúkoľvek inú internetovú službu) na kombinácii monitorovania a dynamickej DNS služby. To znamená, že v prípade akýchkoľvek problémov so základnou stránkou (začínajúc od problémov s „PHP Error“ na stránke a končiac nedostatkom miesta alebo podozrivo malým počtom objednávok v prípade internetového obchodu) budú noví návštevníci presmerovaní na druhý (tretí a tak ďalej) funkčný server, alebo na stránku „Prepáčte“, kde im zdvorilo vysvetlia, že „je problém, už o ňom vieme a opravujeme ho, čoskoro to bude opravené“ (a vy v tomto prípade naozaj budete vedieť a budete si to môcť opraviť).
Žiť s failoverom alebo bez?
Kým sa nestane nejaký problém — nie je v tom veľký rozdiel. Ale keď sa to stane, často sa bez failovera deje toto: snažíte sa rýchlo zistiť, v čom je problém, nedarí sa (zálohy sa nerozbiehajú, softvér z nejakého dôvodu nefunguje tak, ako by mal podľa dokumentácie atď.), ale času niet, servery - stránky ležia, klienti volajú, všetci sú na nervy, snažíte sa to nejako opraviť hrubo a chaoticky „na lepidlo“, potom sa to akosi spustí s „kolíkom“ a žije. Myslíte si, že neskôr by ste sa mali podrobnejšie pozrieť a všetko opraviť pekne, ale nič nie je trvalejšie ako dočasné.
Teraz, ako to prebieha v peknej variante s failoverom:
- Chyba sa stane
- Chyba sa automaticky zistí
- Posiela sa oznámenie
- Prebieha prepnutie na jeden z rezervných serverov
- Pokojne a bez paniky sa problém analyzuje, opraví a server sa opäť uvedie do prevádzky.
V tejto schéme sa samozrejme môžu vyskytnúť aj svoje problémy, ale predsa len, schéma je lineárna, každý krok je tu jednoduchý a hlavne — dá sa to individualizovať, takže pravdepodobnosť poruchy tejto schémy je oveľa nižšia, a všetky úkony môžu byť automatizované a vykonávané rýchlo (na rozdiel od úlohy nájsť a opraviť nevysvetliteľnú epickú záležitosť). Vaše lietadlo pristálo v ďalekej krajine, zapnete telefón a vidíte v telegramoch oznámenie, že server spadol, ale všetko je v poriadku, aktivoval sa záložný server, môžete pokračovať vo svojej ceste, nemusíte ani letieť späť, ani opravovať cez SSH z najbližšej kaviarne s WiFi. Opraviť to môžete, keď to bude pohodlnejšie.
Budúcnosť je už tu!
Predtým bola hlavná otázka, ktorá robila failover častokrát neprijateľným riešením, suma nákladov naň. Buď bolo potrebné kúpiť drahé zariadenia (a prizvať ešte drahších odborníkov). Alebo sa pokúsiť o niečo zložité podľa návodov (ja som narazil aj na variant, kde sa dva servery spájajú dodatočne nulovým modemovým káblom a posielajú po ňom heartbeat, aby v správnom momente záložný server zistil a prebral kontrolu). Dnes existujú jednoduchšie a bezplatné metódy. Ak máte stránky s mačkami – nemáte žiadne ospravedlnenie, ak ste ešte neimplementovali failover!
A okrem toho, pre failover schému je potrebný ešte server (alebo aj viac) a predtým to predstavovalo značné náklady, dnes si môžete za pár centov zaobstarať VDS.
Najspoľahlivejšia stránka s mačkami
Na praktickú ilustráciu riešenia s okerr + dynamickým dns sme spustili našu stránku s mačkami . Mačky nenávidíme, takže ich tam takmer nebude. Existujú celkovo tri stránky, každá vyzerá približne rovnako (všetky na jednom šablóne), ale s rôznymi mačiatkami, aby sa dalo ľahko rozlíšiť, a každá píše technické informácie, aby sme videli, ako funguje failover. Stránka sa aktualizuje sama raz za minútu, ale vždy môžete kliknúť na obnovenie v prehliadači.
V technických informáciách sa nachádza riadok "status=OK". Niekedy servery simulujú problémy a píšu status=ERR. Hlavný server "ako by padal" v 20. minúte každého hodiny (0:20, 1:20, 2:20, …). Záložný server v 40. minúte. Posledný server ("sorry" server) funguje vždy. V 0. minúte každého hodiny sa hlavný a záložný server "obnovujú".

Ak otvoríte stránku a necháte ju na karte – uvidíte, že nikdy nepadá (hoci každý jednotlivý server občas simuluje problém), a v prípade problému so serverom, jednoducho "beží" medzi živými servermi. Bude sa meniť obrázok, meno a adresa servera a jeho úloha. Niekedy môžete zachytiť okamih, keď status=ERR (problém už existuje, ale celá schéma failover ešte nepracovala), ale už ďalšia aktualizácia vám ukáže stránku z funkčného servera.
Failover na okerr + dynamické DNS
Pozrime sa, ako to funguje pod kapotou. Úlohou failoveru je, aby adresa cat.okerr.com vždy ukazovala na IP adresu funkčného servera.
Každý z serverov, ktoré držia našu webovú stránku v okerr, má indikátor, ktorý každú minútu kontroluje jeho stav.

Na tomto obrázku vidíme, ako sa kontroluje stránka cat.okerr.com zo servera alpha.okerr.com. Stránka by mala obsahovať status=OK, a ako vidíme hore, stav indikátora je momentálne OK. Keď server „zlyhá“, bude ERR. (Toto je len jeden príklad indikátora, okerr — to je monitoring, takže môžeme pridať akýkoľvek typ indikátora, napríklad kontrolovať voľné miesto na disku, počet nových objednávok v databáze a dokonca logické indikátory, napríklad v noci budú iné kritériá chýb ako cez deň).
V nastaveniach projektu sme vytvorili failover schému s týmito indikátormi:

V schéme sú tri indikátory (tri servery), rôzne podľa priorít. Hlavný server pre stránku — charlie, ak nefunguje (nebude „status=OK“ alebo bude jednoducho nedostupný), tak potom bravo a v poslednom prípade — alpha. V pravej časti stránky sa zobrazuje stav DNS záznamu na rôznych serveroch.
Pre tých, ktorí si všimli, že sa používa názov cat.he.okerr.com: Používame schému o niečo zložitejšiu. Namiesto toho, aby sme jednoducho menili DNS záznam cat.okerr.com, meníme cat.he.okerr.com (na poskytovateľovi Dynamic DNS ), a cat.okerr.com — to je CNAME (alias), ktorý sa nemení, vždy odkazuje na cat.he.okerr.com. Hurricane sa nám jednoducho páči viac ako dynamický DNS, a má kľúče na správu samostatného záznamu (nie celej zóny), to nám pripadá bezpečnejšie. Môžete tiež neuvádzať v okerr heslá a kľúče na správu celej domény, ale iba pre subdoménu alebo záznam.
Od pádu k vzostupu
Po krokoch, ako funguje táto schéma:
- Nastane (simuluje sa) problém na serveri
- Senzor okerr každú minútu kontroluje stav každého servera a informuje hlavný server projektu v okerr
- Indikátor príslušného servera mení stav z OK na ERR
- Pri zmene stavu indikátora sa prepočíta failover, vypočíta sa, aká adresa sa má nastaviť (ak je to potrebné. Napríklad, ak je hlavný server v prevádzke a v tom čase zlyhá záložný — nebudú žiadne zmeny)
- Táto adresa sa oznamuje do služby dynamic dns. Po dokončení tohto kroku vpravo uvidíte stav „synchronizovaný“
- Veľmi skoro (sekundy) sa záznam dostane na DNS servery vašej domény (u našej webovej stránky sú to ns1-ns5.he.net).
- Od tohto momentu niektorí používatelia už budú mať prístup k novému živému serveru. Avšak ešte nie všetky DNS servery vo svete aktualizovali svoje záznamy a niekde môže byť stále uložený starý záznam. Môžete vidieť, ako sa údaje na verejných DNS serveroch "skáču", pričom ukazujú to nové, to staré hodnotenie. Ak aktualizujete stránku s nastaveniami failover, oker požaduje nové údaje z DNS serverov.
- Akonáhle sa údaje stabilizovali a starý cache záznam vypršal - všetky 100% požiadaviek idú na nový server.
Aby ste urýchlili 7. etapu (často najdlhšiu), je potrebné nastaviť TTL dynamického DNS záznamu čo najnižšie. Zvyčajne služby umožňujú intervaly 90-120 sekúnd. To je rozumný kompromis.
Ďalšie
Toto všetko je možné nastaviť za večer (ak už máte duplikovaný server). A okerr aj služby dynamického DNS sú bezplatné. Aby ste získali viac kontrol a kratší čas kontroly v okerr, musíte prejsť školením (z profilu). Po jeho absolvovaní sa úroveň okamžite zvýši (20 indikátorov po hodine + 1 rýchly, 10-minútový). A ak to bude málo - napíšte na support@okerr.com, pravdepodobne bude možné to zvýšiť (doteraz vždy bola možnosť, nikdy neodmietali, naopak, sami navrhovali). Len prvotne nechcem sľubovať všetkým všetko, nie som si istý, že bude dosť kapacít, aby som dodržal slovo. Ale zatiaľ je málo používateľov, takže s zvyšovaním limitov nie sú problémy.
Čo môže okerr vlastne - pozrite sa na stránke . V podstate ide o monitoring (zabbix z cloudu), a fileover je príjemná doplnková funkcia. Taktiež zo stránky môžete bez registrácie prejsť do dema.
Pri zmene stavu indikátora sa odosiela oznámenie na email alebo Telegram. (Tu sme sa pozreli, čo sa deje, a zistili sme, že sa zdá, že Telegram je najspoľahlivejší messenger. Ďakujeme RKN za stresový test!) Pri správnom nastavení okerr, každé oznámenie je buď signál "zahodte všetko, treba opraviť!", alebo "prišiel signál zavrieť!". Obyčajné upozornenia od okerr by nemali byť (ak sú, je potrebné nastaviť to inak). Napríklad, pre našu kitty stránku je server alpha posledný a nikdy nenasimuluje chybu. Ak spadne - musíme to vedieť. Ostatné servery totiž neustále simulujú chyby, preto, aby sme nedostávali upozornenia niekoľkokrát za hodinu, majú tie indikátory status "tichý".
Má zmysel tiež vytvoriť server pre ospravedlnenie (na akomkoľvek najlacnejšom hostingu), ktorý bude buď obsahovať vašu stránku ospravedlnenia (na prípad, že sa zhavarujú všetky hlavné a záložné servery) alebo presmeruje na stránku stavu na okerr (tu je napríklad naša ) alebo statuspage.io.
Zdroj: habr.com
