Simple failover para sa website (monitoring + dynamic DNS)

Sa artikulong ito gusto kong ipakita kung gaano kadali at libre ang magagawa mo ng failover scheme para sa isang website (o anumang iba pang serbisyo sa Internet) gamit ang kumbinasyon ng pagsubaybay okerr at dynamic na serbisyo ng DNS. Iyon ay, sa kaso ng anumang mga problema sa pangunahing site (mula sa isang problema sa isang "PHP Error" sa pahina, sa kakulangan ng espasyo o isang kahina-hinalang maliit na bilang ng mga order sa kaso ng isang online na tindahan), ang mga bagong bisita ay ididirekta sa pangalawa (ikatlo, at iba pa) sa isang kilalang gumaganang server, o sa pahina ng "Paumanhin", kung saan magalang nilang ipapaliwanag na "may problema, alam na namin at inaayos na namin ito, kami ay aayusin ito sa lalong madaling panahon" (at sa kasong ito ay talagang alam mo na at maaari mong ayusin).

Ang mabuhay ng may failover o wala?

Hanggang sa mangyari ang ilang problema, walang gaanong pagkakaiba. Ngunit kapag nangyari ito, nang walang failover madalas nangyayari ang sumusunod: sinubukan mong mabilis na malaman kung ano ang problema, hindi ito gumagana (hindi nagde-deploy ang mga backup, ang software sa ilang kadahilanan ay hindi gumagana tulad ng nararapat mula sa dokumentasyon , atbp.), ngunit walang oras, walang server - ang mga site ay nakahiga sa paligid, ang mga kliyente ay tumatawag, lahat ay nasa gilid, sinusubukan mong kahit papaano ay ayusin ito nang halos at marumi "na may tape", pagkatapos ay tila nagsisimula may saklay at buhay. Sa tingin mo na sa iyong bakanteng oras ay kakailanganin mong malaman ito nang mas detalyado at gawing muli ang lahat nang maganda, ngunit walang mas permanente kaysa pansamantala.

Ngayon, kung paano ito nangyayari sa isang magandang bersyon na may filer:

  • Isang pagkakamali ang nangyayari
  • Awtomatikong natukoy ang error
  • Ang alerto ay ipinadala
  • Ang paglipat sa isa sa mga backup na server ay inilipat
  • Mahinahon at walang gulat, ang problema ay inaayos, naitama, at ang server ay ibabalik sa operasyon.

Ang scheme na ito, siyempre, ay maaari ding magkaroon ng sarili nitong mga problema, ngunit gayunpaman, ang scheme ay linear, ang bawat yugto ay simple at ang pangunahing bagay ay maaari itong i-debug nang hiwalay, kaya ang pagkakataon ng pagkabigo ng scheme na ito ay mas mababa, at ang lahat ng mga aksyon ay maaaring awtomatiko at maisagawa nang mabilis (hindi katulad sa gawain ng paghahanap at pag-aayos ng hindi kilalang epic crap). Ang iyong eroplano ay lumapag sa isang malayong bansa, binuksan mo ang iyong telepono at nakakita ng isang abiso sa isang telegrama na ang server ay nag-crash, ngunit ang lahat ay maayos, ang backup na server ay na-activate, maaari mong ipagpatuloy ang iyong paglalakbay, hindi mo na kailangan upang lumipad pabalik o ayusin ito sa pamamagitan ng SSH mula sa pinakamalapit na cafe na may WiFi . Malalaman mo ito kapag ito ay mas maginhawa.

Ang hinaharap ay narito na!

Dati, ang pangunahing problema na naging madalas na hindi katanggap-tanggap na solusyon ang failover ay ang halaga ng gastos na ginagastos nito. O kinakailangan na bumili ng mamahaling hardware (at mag-imbita ng mas mahal na mga espesyalista). O kolektibong sakahan ng isang bagay na kumplikado ayon sa mga gabay (nakakita pa ako ng isang opsyon kung saan ang dalawang server ay karagdagang konektado sa isang null modem cable, at nagpapadala sila ng isang tibok ng puso sa pamamagitan nito, upang sa tamang oras ay makilala ito ng backup na server at pumalit. kontrol). Ngayon ay may mas madali at libreng paraan. Kung mayroon kang website na may mga pusa, walang dahilan para hindi mo pa ipatupad ang failover para dito!

Well, bukod sa, para sa isang failover scheme kailangan mo ng isa pang server (at marahil higit sa isa) at bago ito ay isang malaking gastos, ngayon maaari kang makakuha ng isang VDS para sa mga pennies.

Ang pinaka-maaasahang site na may mga pusa

Upang praktikal na mailarawan ang solusyon gamit ang okerr + dynamic na dns, inilunsad namin ang aming website na may mga pusa cat.okerr.com. Ayaw namin sa mga pusa, kaya hindi marami sa kanila doon. Mayroong tatlong mga site sa kabuuan, ang bawat isa ay halos pareho ang hitsura (lahat sa parehong template), ngunit may iba't ibang mga kuting upang gawing madaling makilala, at bawat isa ay nagsusulat ng teknikal na impormasyon upang makita kung paano gumagana ang failover. Ang page ay nag-a-update sa sarili nito isang beses bawat 1 minuto, ngunit maaari mong i-click ang reload anumang oras sa browser.

Sa teknikal na impormasyon mayroong isang linyang "status=OK". Minsan nagkukunwaring problema ang mga server at nagsusulat ng status=ERR. Ang pangunahing server ay "parang nag-crash" sa 20 minuto bawat oras (0:20, 1:20, 2:20, …). Backup server sa loob ng 40 minuto. Ang huling server (β€œsorry” server) ay palaging tumatakbo. Sa 0 minuto ng bawat oras, ang pangunahin at backup na mga server ay "ibinalik".

Simple failover para sa website (monitoring + dynamic DNS)

Kung bubuksan mo ang site at iiwan ito sa tab, makikita mo na hindi ito kailanman nag-crash (bagaman ang bawat indibidwal na server ay pana-panahong ginagaya ang isang problema), at sa kaganapan ng isang problema sa server, ito ay "tumatakbo" lamang sa pagitan ng mga live na server. Magbabago ang larawan, pangalan at address ng server at ang tungkulin nito. Minsan maaari mong makuha ang sandali kapag status = ERR (umiiral na ang problema, ngunit ang buong failover scheme ay hindi pa gumagana), ngunit ang susunod na pag-update ay magpapakita sa iyo ng isang pahina mula sa gumaganang site.

Failover sa okerr + dynamic na DNS

Tingnan natin kung paano ito gumagana sa ilalim ng hood. Ang gawain ng filer ay tiyakin na ang cat.okerr.com address ay palaging tumuturo sa IP address ng gumaganang server.
Sa likod ng bawat server na nagho-host ng aming cat site sa okerr ay mayroong indicator na sumusuri sa status nito minsan sa isang minuto.

Simple failover para sa website (monitoring + dynamic DNS)

Sa screenshot na ito makikita natin kung paano sinusuri ang site na cat.okerr.com mula sa alpha.okerr.com server. Ang pahina ay dapat maglaman ng status=OK, at tulad ng nakikita natin sa itaas, ang ating indicator status ay OK na ngayon. Kapag "nasira" ang server, magkakaroon ng ERR. (Isa lamang itong halimbawa ng indicator, sinusubaybayan ng okerr, kaya maaari mong ilakip ang anumang uri ng indicator, halimbawa, suriin ang libreng espasyo sa disk, ang bilang ng mga bagong order sa database, at maging ang mga lohikal na tagapagpahiwatig, halimbawa. , sa gabi ay magkakaroon ng ilang pamantayan ng error, at sa araw ang iba) .

Sa mga setting ng proyekto gumawa kami ng failover scheme na may mga indicator na ito:

Simple failover para sa website (monitoring + dynamic DNS)

Ang scheme ay may tatlong tagapagpahiwatig (tatlong server), naiiba sa priyoridad. Ang pangunahing server para sa site ay si charlie, kung hindi ito gumana (wala itong "status=OK" o hindi magagamit), pagkatapos ay bravo at sa huling kaso - alpha. Ipinapakita ng kanang bahagi ng page ang status ng DNS record sa iba't ibang server.

Para sa mga nakapansin na ginagamit ang pangalang cat.he.okerr.com: Gumagamit kami ng bahagyang mas kumplikadong pamamaraan. Sa halip na baguhin lang ang DNS record ng cat.okerr.com, binago namin ang cat.he.okerr.com (sa Dynamic DNS provider Hurricane Electric), at ang cat.okerr.com ay isang CNAME (alias), na hindi nagbabago, palaging tumuturo sa cat.he.okerr.com. Mas gusto lang namin ang Hurricane bilang isang dynamic na DNS, at mayroon itong mga susi para pamahalaan ang isang entry (sa halip na isang buong zone), sa tingin namin ay mas ligtas ito. Hindi mo rin kailangang tukuyin ang mga pangunahing password sa okerr upang pamahalaan ang buong domain, ngunit para lamang sa isang subdomain o talaan.

Mula sa pagbagsak hanggang sa pagbangon

Hakbang sa hakbang kung paano gumagana ang scheme na ito:

  1. Ang isang problema ay nangyayari (simulate) sa server
  2. Sinusuri ng sensor ng okerr ang katayuan ng bawat server isang beses sa isang minuto at nag-uulat sa pangunahing server ng proyekto sa okerr
  3. Ang kaukulang tagapagpahiwatig ng server ay nagbabago mula OK patungong ERR
  4. Kapag nagbago ang katayuan ng indicator, muling kinalkula ang failover, at kinakalkula kung aling address ang kailangang itakda (kung kinakailangan. Halimbawa, kung gumagana ang pangunahing server, at kasabay nito ay namatay ang backup server, walang pagbabagong gagawin. ginawa)
  5. Iniuulat ang address na ito sa serbisyo ng dynamic na dns. Sa pagkumpleto ng yugtong ito, makikita mo ang status na "naka-sync" sa kanan.
  6. Sa lalong madaling panahon (mga segundo) maaabot ng record ang mga DNS server ng iyong domain (para sa cat site ito ay ns1-ns5.he.net).
  7. Mula sa sandaling ito, ang ilang mga gumagamit ay nasa bagong live na server. Ngunit hindi pa na-update ng lahat ng DNS server sa mundo ang mga talaan, at ang lumang talaan ay maaaring naka-cache pa rin saanman. Makikita mo kung paano "nagsasayaw" ang data sa mga pampublikong DNS server, na nagpapakita ng bago o lumang halaga. Kung ia-update mo ang pahina ng pagsasaayos ng failover, ang operator mismo ay hihiling ng bagong data mula sa mga DNS server.
  8. Matapos mag-stabilize ang data, ang lumang naka-cache na tala ay bulok sa lahat ng dako - lahat ng 100% ng mga kahilingan ay mapupunta sa bagong server.

Upang mapabilis ang yugto 7 (kadalasan ang pinakamahaba), ang TTL ng dynamic na tala ng DNS ay dapat na itakda sa pinakamababa hangga't maaari. Karaniwang pinapayagan ng mga serbisyo ang mga pagitan ng 90-120 segundo. Ito ay isang ganap na makatwirang kompromiso.

Bukod pa rito

Ang lahat ng ito ay maaaring i-configure sa isang gabi (kung mayroon ka nang backup na server). Parehong libre ang mga serbisyo ng okerr at dynamic na DNS. Upang makakuha ng higit pang mga pagsusuri sa okerr at mas maikling panahon ng pag-verify, kailangan mong kumpletuhin ang pagsasanay (mula sa iyong pahina ng profile). Sa pagkumpleto, agad na tumataas ang antas (20 indicator kada oras + 1 mabilis, 10 minuto). At kung kakaunti sa kanila, sumulat sa [protektado ng email], malamang na posible na madagdagan (sa ngayon ay palaging may pagkakataon, hindi ako tumanggi, sa kabaligtaran, ako mismo ang nag-alok nito). Sa simula lang ay ayaw kong ipangako sa lahat ang lahat, hindi ako sigurado na mayroon akong sapat na kapasidad na tuparin ang aking salita. Ngunit sa ngayon ay kakaunti ang mga gumagamit, kaya walang mga problema sa pagtaas ng mga limitasyon.

Ano ang maaaring gawin ng okerr sa pangkalahatan - tingnan ang website pagtatanghal. Sa pangkalahatan, ito ay pagsubaybay (zabbix mula sa cloud), at ang filer ay isang magandang karagdagang function. Maaari mo ring ma-access ang demo mula sa site nang walang pagpaparehistro.

Kapag nagbago ang status ng indicator, may ipapadalang notification sa pamamagitan ng email o Telegram. (Tiningnan namin kung ano ang nangyayari at napagtanto namin na ang telegrama ay tila ang pinaka-maaasahang mensahero. Salamat sa RKN para sa stress test!) Kapag na-configure nang tama ang okerr, anumang abiso ay maaaring isang senyales na "i-drop ang lahat, kailangan nating ayusin ito!" , o β€œ patay ang ilaw!” Hindi dapat magkaroon ng anumang karagdagang alerto mula sa okerra (kung mayroon man, kailangan nilang i-configure sa ibang paraan). Halimbawa, para sa aming cat site, ang alpha server ang huli at hindi kailanman nagpe-peke ng error. Kung siya ay nakahiga, kailangan nating malaman. Ngunit ang ibang mga server ay patuloy na nagpapanggap ng mga pagkakamali, samakatuwid, upang hindi makatanggap ng mga alerto nang maraming beses sa isang oras, ang mga tagapagpahiwatig na iyon ay may katayuang "tahimik".

Makatuwiran din na lumikha ng paumanhin na server (sa anumang pinakamurang pagho-host), na magkakaroon ng iyong pahina ng paghingi ng tawad (kung sakaling ang lahat ng pangunahing at backup na mga server ay down) o ire-redirect ka sa pahina ng katayuan sa okerr (halimbawa, sa amin cp.okerr.com/status/okerr) o statuspage.io.

Pinagmulan: www.habr.com

Magdagdag ng komento