Eenvoudige failover vir webwerf (monitering + dinamiese DNS)

In hierdie artikel wil ek wys hoe maklik en gratis jy 'n failover-skema vir 'n webwerf (of enige ander internetdiens) kan maak deur 'n kombinasie van monitering te gebruik okerr en dinamiese DNS-diens. Dit wil sê, in die geval van enige probleme met die hoofwebwerf (van 'n probleem met 'n "PHP-fout" op die bladsy, tot 'n gebrek aan spasie of bloot 'n verdagte klein aantal bestellings in die geval van 'n aanlynwinkel), sal nuwe besoekers gerig word na die tweede (derde, ensovoorts) verder) 'n bekende werkende bediener, of op die "Jammer" bladsy, waar hulle beleefd sal verduidelik dat "daar 'n probleem is, ons is reeds bewus en is reeds besig om dit reg te stel, ons sal dit gou regmaak” (en in hierdie geval sal jy eintlik reeds in die wete wees en kan herstel).

Om te lewe met failover of sonder?

Totdat een of ander probleem gebeur, is daar nie veel verskil nie. Maar wanneer dit gebeur, sonder failover, gebeur die volgende dikwels: jy probeer vinnig uitvind wat die probleem is, dit werk nie (rugsteun ontplooi nie, die sagteware werk om een ​​of ander rede nie soos dit moet uit die dokumentasie , ens.), maar daar is geen tyd nie, geen bediener nie - die werwe lê, kliënte bel, almal is op die punt, jy probeer dit op een of ander manier rofweg en vuil "met band" regmaak, dan lyk dit of dit op een of ander manier begin met krukke en lewens. Jy dink jy sal dit in jou vrye tyd in meer besonderhede moet uitpluis en alles pragtig moet oordoen, maar daar is niks meer permanent as tydelik nie.

Nou, hoe gebeur dit in 'n pragtige weergawe met 'n lêer:

  • 'n Fout gebeur
  • Die fout word outomaties opgespoor
  • Waarskuwing word uitgestuur
  • Om oor te skakel na een van die rugsteunbedieners word oorgedra
  • Rustig en sonder paniek word die probleem uitgesorteer, reggestel en die bediener weer in werking gestel.

Hierdie skema kan natuurlik ook sy eie probleme hê, maar tog is die skema lineêr, elke stadium is eenvoudig en die belangrikste ding is dat dit afsonderlik ontfout kan word, so die kans op mislukking van hierdie skema is baie laer, en alle aksies kan geoutomatiseer en vinnig uitgevoer word (anders as die taak om onbekende epiese kak te vind en reg te stel). Jou vliegtuig het in 'n ver land geland, jy skakel jou foon aan en sien 'n kennisgewing in 'n telegram dat die bediener neergestort het, maar alles is reg, die rugsteunbediener is geaktiveer, jy kan voortgaan met jou reis, jy het nie nodig nie om terug te vlieg of dit via SSH te herstel vanaf die naaste kafee met WiFi. Jy sal dit uitvind wanneer dit geriefliker is.

Die toekoms is reeds hier!

Voorheen was die hoofprobleem wat failover dikwels 'n onaanvaarbare oplossing gemaak het, die hoeveelheid koste wat dit kos. Of dit was nodig om duur hardeware te koop (en nog duurder spesialiste uit te nooi). Of kollektiewe boer iets ingewikkelds volgens die gidse (ek het selfs op 'n opsie afgekom waar twee bedieners addisioneel met 'n nulmodemkabel verbind word, en hulle stuur 'n hartklop daardeur, sodat die rugsteunbediener dit op die regte tyd herken en oorneem beheer). Nou is daar makliker en gratis maniere. As jy 'n webwerf met katte het, is daar geen verskoning vir jou om nog nie failover daarvoor te implementeer nie!

Wel, buitendien, vir 'n failover-skema benodig jy 'n ander bediener (en miskien meer as een) en voorheen was dit 'n groot uitgawe, nou kan jy 'n VDS vir pennies kry.

Die mees betroubare webwerf met katte

Om die oplossing met okerr + dinamiese dns prakties te illustreer, het ons ons webwerf met katte bekendgestel cat.okerr.com. Ons haat katte, so daar sal nie baie van hulle daar wees nie. Daar is in totaal drie werwe, elkeen lyk min of meer dieselfde (almal op dieselfde sjabloon), maar met verskillende katjies om dit maklik te maak om te onderskei, en elkeen skryf tegniese inligting om te sien hoe failover werk. Die bladsy werk homself een keer elke 1 minuut op, maar jy kan altyd herlaai in die blaaier klik.

In die tegniese inligting is daar 'n reël "status=OK". Soms skep bedieners probleme en skryf status=ERR. Dit lyk asof die hoofbediener 20 minute van elke uur “ongeluk” (0:20, 1:20, 2:20, …). Rugsteunbediener binne 40 minute. Die laaste bediener ("jammer" bediener) is altyd aan die gang. Teen 0 minute van elke uur word die primêre en rugsteunbedieners "herstel".

Eenvoudige failover vir webwerf (monitering + dinamiese DNS)

As jy die werf oopmaak en dit in die oortjie laat, sal jy sien dat dit nooit ineenstort nie (alhoewel elke individuele bediener periodiek 'n probleem simuleer), en in die geval van 'n probleem met die bediener, "loop" dit eenvoudig tussen lewendige bedieners. Die prentjie, naam en adres van die bediener en sy rol sal verander. Soms kan jy die oomblik vang wanneer status = ERR (die probleem bestaan ​​reeds, maar die hele failover-skema het nog nie gewerk nie), maar die volgende opdatering sal vir jou 'n bladsy van die werkende webwerf wys.

Failover op okerr + dinamiese DNS

Kom ons kyk hoe dit onder die enjinkap werk. Die lêer se taak is om te verseker dat die cat.okerr.com-adres altyd na die IP-adres van die werkende bediener verwys.
Agter elkeen van die bedieners wat ons katwebwerf in okerr huisves, is daar 'n aanwyser wat die status een keer per minuut nagaan.

Eenvoudige failover vir webwerf (monitering + dinamiese DNS)

In hierdie skermkiekie sien ons hoe die webwerf cat.okerr.com vanaf die alpha.okerr.com-bediener nagegaan word. Die bladsy moet status=OK bevat, en soos ons hierbo sien, is ons aanwyserstatus nou OK. Wanneer die bediener "breek", sal daar 'n ERR wees. (Dit is net een voorbeeld van 'n aanwyser, okerr monitor, so jy kan enige tipe aanwyser aanheg, byvoorbeeld, kyk na die vrye spasie op die skyf, die aantal nuwe bestellings in die databasis, en selfs logiese aanwysers, byvoorbeeld , snags sal daar 'n paar foutkriteria wees, en gedurende die dag ander).

In die projekinstellings het ons 'n failover-skema geskep met hierdie aanwysers:

Eenvoudige failover vir webwerf (monitering + dinamiese DNS)

Die skema het drie aanwysers (drie bedieners), verskillend in prioriteit. Die hoofbediener vir die webwerf is charlie, as dit nie werk nie (dit sal nie “status=OK” hê nie of is eenvoudig nie beskikbaar nie), dan bravo en in laasgenoemde geval - alfa. Die regterkant van die bladsy wys die status van die DNS-rekord op verskillende bedieners.

Vir diegene wat opgemerk het dat die naam cat.he.okerr.com gebruik word: Ons gebruik 'n effens meer komplekse skema. In plaas daarvan om net die DNS-rekord van cat.okerr.com te verander, verander ons cat.he.okerr.com (op die Dynamic DNS-verskaffer Orkaan Electric), en cat.okerr.com is 'n CNAME (alias), wat nie verander nie, wys altyd na cat.he.okerr.com. Ons hou net beter van Hurricane as 'n dinamiese DNS, en dit het sleutels om 'n enkele inskrywing te bestuur (eerder as 'n hele sone), ons dink dit is veiliger. U hoef ook nie sleutelwagwoorde in okerr te spesifiseer om die hele domein te bestuur nie, maar slegs vir 'n subdomein of rekord.

Van val tot styging

Stap vir stap hoe hierdie skema werk:

  1. 'n Probleem kom voor (gesimuleer) op die bediener
  2. Die okerr-sensor kontroleer die status van elke bediener een keer per minuut en rapporteer aan die hoofprojekbediener in okerr
  3. Die ooreenstemmende bedieneraanwyser verander van OK na ERR
  4. Wanneer die status van die aanwyser verander, word failover herbereken, en dit word bereken watter adres gestel moet word (indien nodig. Byvoorbeeld, as die hoofbediener werk, en terselfdertyd het die rugsteunbediener gesterf, sal geen veranderinge plaasvind nie. gemaak)
  5. Hierdie adres word by die dinamiese dns-diens aangemeld. Na voltooiing van hierdie stadium, sal jy die "gesinkroniseerde" status aan die regterkant sien.
  6. Baie gou (sekondes) sal die rekord die DNS-bedieners van jou domein bereik (vir die katwebwerf is dit ns1-ns5.he.net).
  7. Van hierdie oomblik af sal sommige gebruikers reeds op die nuwe regstreekse bediener wees. Maar nie alle DNS-bedieners in die wêreld het die rekords nog opgedateer nie, en die ou rekord kan steeds iewers in die kas geberg word. U kan sien hoe die data op publieke DNS-bedieners “dans”, wat óf 'n nuwe óf 'n ou waarde toon. As jy die failover-konfigurasiebladsy opdateer, sal die operateur self nuwe data van die DNS-bedieners aanvra.
  8. Nadat die data gestabiliseer het, is die ou kasrekord oral vrot - al 100% van versoeke gaan na die nuwe bediener.

Om fase 7 (dikwels die langste) te bespoedig, moet die TTL van die dinamiese DNS-rekord so laag as moontlik gestel word. Tipies laat dienste intervalle van 90-120 sekondes toe. Dit is 'n heeltemal redelike kompromie.

Daarbenewens

Dit alles kan in 'n aand gekonfigureer word (as jy reeds 'n rugsteunbediener het). Beide okerr en dinamiese DNS-dienste is gratis. Om meer tjeks in okerr en 'n korter verifikasietydperk te kry, moet jy opleiding voltooi (vanaf jou profielbladsy). Na voltooiing neem die vlak onmiddellik toe (20 aanwysers per uur + 1 vinnige, 10 minute). En as daar min van hulle is, skryf aan [e-pos beskerm], waarskynlik sal dit moontlik wees om te verhoog (tot dusver was daar nog altyd 'n geleentheid, ek het nog nooit geweier nie, inteendeel, ek het dit self aangebied). Dit is net dat ek aanvanklik nie almal alles wil belowe nie, ek is nie seker of ek genoeg kapasiteit het om my woord te hou nie. Maar tot dusver is daar min gebruikers, so daar is geen probleme om die limiete te verhoog nie.

Wat okerr in die algemeen kan doen - kyk na die webwerf voorlegging. Oor die algemeen is dit monitering (zabbix vanaf die wolk), en die filer is 'n lekker bykomende funksie. Jy kan ook toegang tot die demo van die webwerf af sonder registrasie.

Wanneer die aanwyserstatus verander, word 'n kennisgewing per e-pos of Telegram gestuur. (Ons het gekyk na wat besig was om te gebeur en besef dat telegram die mees betroubare boodskapper blyk te wees. Dankie aan RKN vir die strestoets!) Met okerr korrek opgestel, is enige kennisgewing óf 'n sein "los alles, ons moet dit regmaak!" , of "ligte uit!" Daar behoort geen ekstra waarskuwings van die okerra af te wees nie (as daar is, moet hulle op een of ander manier anders gekonfigureer word). Byvoorbeeld, vir ons katwebwerf is die alfabediener die laaste een en vervals nooit 'n fout nie. As hy gaan lê, moet ons weet. Maar ander bedieners maak voortdurend foute, so om nie verskeie kere per uur waarskuwings te ontvang nie, het daardie aanwysers 'n "stil" status.

Dit maak ook sin om 'n jammer bediener (op enige goedkoopste hosting) te skep, wat óf jou verskoningsbladsy sal hê (indien al die hoof- en rugsteunbedieners af is) óf jou sal herlei na die statusbladsy op okerr (byvoorbeeld ons s'n) cp.okerr.com/status/okerr) of statuspage.io.

Bron: will.com

Voeg 'n opmerking