Comparthing Logo
atsarginis perjungimasatsparumasavarinis paleidimas iš naujodidelis prieinamumasatkūrimas po nelaimiųdebesų infrastruktūrasvetainės patikimumasinfrastruktūros inžinerija

Atsparumas gedimams ir sistemos paleidimas iš naujo

Atsparumas gedimams proaktyviai perkelia darbo krūvius į sveikas sistemas, kol vartotojai nepastebi problemų, o sistemos gedimų atveju iš naujo paleidžiamos sistemos reaktyviai atkuria paslaugas po netikėtų gedimų. Abu metodai siekia palaikyti prieinamumą, tačiau iš esmės skiriasi laiku, architektūros sudėtingumu ir poveikiu vartotojams.

Akcentai

  • Atsparumas gedimams apsaugo vartotojus nuo gedimų, nes palaikomos atsarginės sistemos, kurios suaktyvinamos prieš visiškai sugendant pagrindinėms sistemoms.
  • Avarijos metu iš naujo paleidžiamos prekybos priemonės, kad būtų paprasčiau ir būtų sutaupyta lėšų, todėl jos yra praktiškos ne kritiniams darbo krūviams
  • Pasirinkimas tarp šių metodų dažnai atspindi organizacijos brandą – brandžios platformos paprastai taiko abi strategijas, o ne renkasi išskirtinai vieną.
  • „Kubernetes“ ir šiuolaikinės debesijos platformos išblukino tradicines ribas, siūlydamos automatinio perjungimo ir paleidimo iš naujo galimybes vieningose valdymo plokštumose.

Kas yra Atsparumas gedimams?

Proaktyvi architektūra, kuri automatiškai nukreipia srautą į atsargines sistemas, kai pagrindiniai komponentai rodo gedimo požymius.

  • Persijungimo sistemos paprastai naudoja apkrovos balansavimo įrankius arba DNS maršrutizavimą, kad aptiktų netinkamus objektus ir per kelias sekundes nukreiptų srautą.
  • Aktyvios-pasyvios konfigūracijos palaiko budėjimo režime esančius serverius parengtus, bet nenaudojamus, o aktyvios-aktyvios konfigūracijos nuolat paskirsto apkrovą visiems mazgams.
  • Persijungimo architektūrų sveikatos patikros tikrina programas kas kelias sekundes, naudodamos HTTP galinius taškus, TCP prievadus arba pasirinktinius scenarijus.
  • Kelių regionų perkėlimas gali pasiekti 99,999 % prieinamumą, tačiau padidina infrastruktūros sąnaudas ir sinchronizavimo sudėtingumą.
  • „Kubernetes“ ir debesijos platformos, tokios kaip „AWS Route 53“ arba „Azure Traffic Manager“, siūlo integruotus persiuntimo įrankius.

Kas yra Sistemos gedimas paleidžiamas iš naujo?

Reaktyvus atkūrimo mechanizmas, kuris aptinka nepavykusius procesus ir automatiškai juos paleidžia iš naujo, kad atkurtų paslaugos funkcionalumą.

  • „Systemd“, „supervisord“ ir „Windows Service Recovery“ yra įprastos priemonės, kurios stebi procesų būklę ir sukelia pakartotinį paleidimą gedimų atveju.
  • Gedimų ciklai įvyksta, kai paslauga pakartotinai nepavyksta ir paleidžiama iš naujo, dažnai tai rodo gilesnes konfigūracijos ar priklausomybės problemas.
  • Konteinerių orkestravimo pakartotinio paleidimo politikos gali nurodyti eksponentinius atidėjimo uždelsimus, kad būtų išvengta priklausomų sistemų perkrovimo
  • Pagrindinių duomenų išklotinių analizė po gedimų padeda kūrėjams nustatyti pagrindines priežastis, nors gamybinėje aplinkoje dėl greičio dažnai praleidžiami duomenų išklotiniai.
  • Automatinio jungiklio modeliai papildo gedimų sukeltą paleidimą iš naujo laikinai sustabdydami užklausas sugedusiems komponentams, o ne nuolat bandydami iš naujo.

Palyginimo lentelė

Funkcija Atsparumas gedimams Sistemos gedimas paleidžiamas iš naujo
Pirminis požiūris Proaktyvus perteklius ir srauto perkėlimas Reaktyvus aptikimas ir proceso atgaivinimas
Naudotojo poveikis Dažnai sklandžiai, be matomų pertraukų Paprastai sukelia trumpalaikį paslaugos nepasiekiamumą
Infrastruktūros kaina Didesnis dėl pasikartojančių atsarginių išteklių Mažesnis, nes nereikia nenaudojamų atsarginių sistemų
Aptikimo metodas Nuolatinis sveikatos stebėjimas ir ribos Proceso nutraukimas arba širdies nepakankamumas
Atsigavimo laikas Milisekundės į sekundes Nuo sekundžių iki minučių, priklausomai nuo paleidimo
Sudėtingumas Aukštas – reikalingas orkestravimas ir būsenos sinchronizavimas Vidutinis – iš pradžių lengviau įgyvendinti
Geriausiai tinka Svarbios naudotojams skirtos paslaugos ir duomenų bazės Vidiniai įrankiai, paketiniai darbai, darbuotojai be pilietybės

Išsamus palyginimas

Architektūros filosofija

Atsparumas gedimams sukuria dubliavimą sistemos projekte nuo pat pradžių, traktuojant gedimą kaip laukiamą įvykį, o ne išimtį. Toks mąstymas perkelia inžinerijos dėmesį į sklandų degradavimą ir geografinį pasiskirstymą. Priešingai, gedimų atveju paleidimas iš naujo daro prielaidą, kad atskiri procesai gali ir suges, todėl sistemai tereikia patikimų mechanizmų, kad jie greitai vėl veiktų.

Veiklos pridėtinės išlaidos

Avarinio perkrovimo klasterių priežiūra reikalauja nuolatinio dėmesio duomenų nuoseklumui, smegenų skaidymo prevencijai ir avarinio perkrovimo testavimui, kuriuos daugelis komandų nepakankamai įvertina. Avarinio paleidimo iš naujo mechanizmai yra paprastesni konfigūruoti, tačiau gali užmaskuoti esminį nestabilumą – komandos kartais sukaupia techninių skolų, kai dažnas paleidimas iš naujo tampa normalizuotas, o ne tiriamas.

Sąnaudų aspektai

Dvigubos infrastruktūros naudojimas apsaugai nuo gedimų padvigubina arba patrigubina skaičiavimo išlaidas, nors debesies taškinės instancijos ir automatinis mastelio keitimas gali tai sumažinti. Avarinis paleidimas iš naujo sumažina išteklių sąnaudas, nes nėra laisvų atsarginių kopijų, tačiau paslėptos prastovų išlaidos atkūrimo metu gali viršyti infrastruktūros taupymą pajamoms svarbioms programoms.

Nesėkmių scenarijai

Perkrovimas geriausiai veikia, kai ištisi duomenų centrai ar regionai tampa nepasiekiami, nes srautas gali būti nukreipiamas per geografiškai išsklaidytus mazgus. Avariniai paleidimai iš naujo efektyviai susidoroja su izoliuotais procesų gedimais, tačiau sunkiai susidoroja su kaskadiniais gedimais, kai vienu metu sugenda keli komponentai – tokiais atvejais paprasti paleidimo iš naujo ciklai dažnai pablogina problemą.

Stebimumo reikalavimai

Abu metodai generuoja skirtingus telemetrijos modelius. Hibų valdymo sistemos generuoja įspėjimus apie sumažėjusį pajėgumą ir pasislinkusius srauto modelius, kuriuos reikia interpretuoti. Avarijų atveju paleidimo iš naujo sistemos užtvindo žurnalus paleidimo iš naujo įvykiais, kurie gali trukdyti analizuoti gedimų priežastis, nebent jie būtų kruopščiai struktūrizuoti naudojant išėjimo kodus ir gedimų kategorijas.

Privalumai ir trūkumai

Atsparumas gedimams

Privalumai

  • + Beveik nulinis prastovų laikas gedimų metu
  • + Geografinio perteklinio saugumo užtikrinimas
  • + Numatoma naudotojo patirtis
  • + Įgalina planinius techninės priežiūros laikotarpius

Pasirinkta

  • Žymiai didesnės infrastruktūros išlaidos
  • Sudėtingi būsenos sinchronizavimo iššūkiai
  • Smegenų suskaidymo scenarijų rizika
  • Reikalingi griežti bandymai, kad būtų galima pasitikėti

Sistemos gedimas paleidžiamas iš naujo

Privalumai

  • + Mažesnės investicijos į infrastruktūrą
  • + Iš pradžių paprasta įgyvendinti
  • + Gerai susidoroja su trumpalaikiais gedimais
  • + Veikia su esamomis programomis

Pasirinkta

  • Matomas prastovos laikas atsigavimo metu
  • Gali užmaskuoti pagrindines problemų priežastis
  • Pakartotinio paleidimo ciklai eikvoja išteklius
  • Neefektyvus kaskadiniams gedimams

Dažni klaidingi įsitikinimai

Mitas

Atsparumas gedimams daro sistemas visiškai atsparias prastovoms.

Realybė

Net ir gerai suprojektuotos gedimų prevencijos sistemos patiria trumpus sutrikimus neplanuotų gedimų metu, o netinkamai sukonfigūruotos sistemos būklės patikros gali sukelti priešlaikinius gedimus, kurie sukuria sutrikimus, o ne jų užkerta kelią. Pačių gedimų prevencijos mechanizmų sudėtingumas tampa galimų gedimų šaltiniu.

Mitas

Avarinis paleidimas iš naujo skirtas tik prastai suprojektuotoms programoms.

Realybė

Net ir kruopščiausiai parašyta programinė įranga gamyboje susiduria su kraštutiniais atvejais – atminties nutekėjimais priklausomybėse, branduolio klaidomis ar aparatinės įrangos gedimais, kurių negali numatyti joks programos kodas. Avarinis paleidimas iš naujo tarnauja kaip pragmatiškas saugos tinklas visoje pramonėje, o ne tik tvarstis nuo blogo kodo.

Mitas

Turite rinktis tik tarp avarinio ir paleidimo iš naujo po gedimo.

Realybė

Didelio masto gamybos sistemos paprastai naudoja abu: apkrovos balansavimo sistemos gedimų šalinimą ir duomenų bazės pakopų perteklių, o gedimų atveju paleidimas iš naujo apdoroja atskiras kiekvieno mazgo procesų klaidas. Šie mechanizmai vienas kitą papildo, o ne pakeičia.

Mitas

Automatinis perjungimas visada įvyksta greičiau nei rankinis įsikišimas.

Realybė

Nors automatinis gedimų perjungimas gali perkelti srautą per kelias sekundes, aptikimo ir sprendimų logika kartais sukelia vėlavimus arba klaidingus teigiamus rezultatus. Sudėtingais gedimų atvejais patyrę operatoriai, atliekantys tyčinį rankinį gedimų perjungimą, gali pasiekti patikimesnių rezultatų nei automatinės sistemos, reaguojančios į dviprasmiškus signalus.

Mitas

Avarinis paleidimas iš naujo panaikina poreikį analizuoti pagrindinę priežastį.

Realybė

Automatinio paleidimo iš naujo patogumas dažnai verčia komandas nepakankamai dėmesio skirti gedimų priežasčių supratimui. Organizacijos, kurios patenka į šį modelį, kaupia nestabilumo skolą – dažnas paleidimas iš naujo padidina delsos dispersiją, švaisto skaičiavimo ciklus ir galiausiai sukelia kaskadinius gedimus, kai paleidimo iš naujo dažnis viršija sistemos pajėgumą.

Dažnai užduodami klausimai

Kuo pagrindinis skirtumas tarp atsparumo gedimams ir paleidimo iš naujo po gedimų?
Atsparumas gedimams proaktyviai nukreipia srautą į sveikas atsargines sistemas prieš gedimą arba jo metu, užtikrindamas paslaugų prieinamumą vartotojams nepastebint. Avarijų atveju sistemos paleidimas iš naujo reaguoja į proceso nutraukimą ir automatiškai paleidžia naują egzempliorių, o tai savaime sukelia tam tikrą prastovą, kol inicijuojamas pakeitimo procesas.
Kiek laiko paprastai trunka gedimų perjungimas, palyginti su paleidimu iš naujo po gedimo?
Gerai suderinti gedimų perjungimo mechanizmai dažnai užbaigiami per kelias sekundes, o kai kurie debesies apkrovos balansavimo įrenginiai aptinka gedimus ir perkelia srautą per mažiau nei 10 sekundžių. Gedimų paleidimas iš naujo labai priklauso nuo programos paleidimo laiko – nedidelė „Go“ paslauga gali būti paleista iš naujo per mažiau nei sekundę, o „Java“ programa su dideliu klasių įkėlimu gali užtrukti 30–60 sekundžių ar ilgiau, kad būtų visiškai parengta.
Ar atsparumas gedimams gali veikti skirtinguose debesijos paslaugų teikėjuose?
Techniškai įmanomas kelių debesų serverių perjungimas, tačiau tai labai apsunkina duomenų sinchronizavimą, nuoseklų DNS platinimą ir skirtingą API semantiką. Dauguma organizacijų diegia kelių debesų serverių perjungimą per vieną debesų paslaugų teikėją skirtingose prieinamumo zonose ar regionuose, nes taip suderinamas atsparumas ir operacinis įgyvendinamumas. Tikrasis kelių debesų serverių perjungimas išlieka retas, išskyrus griežtai reglamentuojamas pramonės šakas, kurioms keliami konkretūs atitikties reikalavimai.
Kas sukelia pakartotinio paleidimo ciklus ir kaip jų išvengti?
Paleidimo iš naujo ciklai įvyksta, kai paslauga užstringa iškart po paleidimo dėl nuolatinių problemų, tokių kaip sugadinta konfigūracija, nepasiekiamos priklausomybės arba išteklių išeikvojimas. Prevencijos strategijos apima paleidimo zondų su vėlavimais įdiegimą, maksimalaus bandymų skaičiaus nustatymą su eksponentine pertrauka ir grandinės pertraukiklių, kurie sustabdo paleidimą iš naujo po pakartotinių gedimų, pridėjimą, kad būtų galima atlikti žmogaus tyrimą.
Ar mažų programų atsparumas gedimų prevencijai yra vertas savo kainos?
Ankstyvosios stadijos produktams arba vidinėms priemonėms su tolerantiškais vartotojais dažnai nepateisinamas infrastruktūros dubliavimas, reikalingas gedimų atveju. Daugelis komandų pradeda nuo gedimų sukelto paleidimo iš naujo ir vieno egzemplioriaus diegimo, o tada palaipsniui įdiegia gedimų atvejus, didėjant vartotojų lūkesčiams ir pajamoms. Sprendimas turėtų būti priimamas atsižvelgiant į poveikį verslui, o ne į inžinerinį idealizmą.
Kaip veikia sveikatos patikros atsarginėse sistemose?
Sveikatos patikros periodiškai tikrina paslaugų galinius taškus, kad klasifikuotų egzempliorius kaip sveikus arba nesaugius. 4 lygmens patikros patikrina TCP ryšį, o 7 lygmens patikros patvirtina faktinius programos atsakymus. Sudėtingose diegimo versijose naudojami keli sveikatos patikrų tipai ir prieš pažymint egzempliorius kaip nesaugius, reikalaujama iš eilės einančių gedimų, taip užkertant kelią trumpalaikėms tinklo problemoms, kurias sukelia gedimai.
Kas nutinka vykdomoms užklausoms perjungimo arba gedimo metu perkrovus sistemą?
Perjungimo metu užklausos, nukreiptos į nepavykusį egzempliorių, gali nepavykti, jei nebus įvykdytos prieš srauto pasikeitimą, nors tvarkingas ryšio nutekėjimas gali tai sumažinti. Avarinis paleidimas iš naujo būtinai nutraukia visas to proceso vykdomas užklausas. Idempotentinis užklausų apdorojimas ir kliento pakartotinio bandymo logika su trūkčiojimu tampa esminiais projektavimo modeliais, siekiant lanksčiai valdyti šiuos scenarijus.
Ar konteinerių orkestravimo platformos apdoroja ir gedimų perjungimą, ir paleidimą iš naujo?
„Kubernetes“ ir panašios platformos iš tikrųjų derina abu metodus. Konteinerių paleidimo iš naujo politikos automatiškai tvarko gedimų atvejus, kai konteineriai uždaromi, o replikų rinkiniai, paslaugos su keliais konteineriais ir įėjimo valdikliai užtikrina perjungimą, nukreipdami aplink nesveikus konteinerius. Šis sluoksniuotas metodas reiškia, kad konteinerinės programos dažnai naudojasi abiem mechanizmais be aiškaus atskiro įgyvendinimo.
Kas yra „splied brain“ scenarijus atsarginėse sistemose?
„Smegenų skaidymas“ įvyksta, kai tinklo skaidiniai priverčia kelis mazgus manyti, kad jie yra pagrindinė institucija, ir tai gali priimti prieštaringus įrašus. Tai ypač pavojinga duomenų bazėms ir būsenos paslaugoms. Norint to išvengti, reikalingi kvorumu pagrįsti konsensuso mechanizmai, tokie kaip „Raft“ ar „Paxos“, arba trečiųjų šalių liudijimų mazgai, kurie sprendžia, kuri skaidinio dalis turėtų likti aktyvi.
Kaip patikrinti atsparumą gedimams nepaveikiant gamybos aplinkos vartotojų?
Chaoso inžinerijos praktikos, tokios kaip „Netflix“ „Chaos Monkey“, sąmoningai įterpia gedimus į produkciją, kad patikrintų atsparumą, nors tam reikalingas brandus stebimumas ir atšaukimo galimybės. Saugesnės alternatyvos apima šešėlinio srauto testavimą, kai produkcijos užklausos yra atspindimos į gedimų perjungimo kelius be vartotojui matomo poveikio, ir suplanuotas žaidimo dienas testavimo aplinkoje, kuri imituoja realius gedimų scenarijus.
Ar duomenų bazių sistemoms pakanka paleidimo iš naujo?
Duomenų bazių sistemos paprastai negali tiesiog paleisti iš naujo ir atnaujinti paslaugų neatsižvelgdamos į duomenų patvarumą ir nuoseklumą. Nors duomenų bazės procesus galima sukonfigūruoti taip, kad jie būtų paleisti iš naujo automatiškai, atkūrimo procesas apima operacijų žurnalo pakartojimą, replikacijos pasivyjimą ir galimą perėjimą prie atsarginių kopijų, jei pagrindinė saugykla yra pažeista. Vien paleidimas iš naujo po gedimo nėra pakankamas duomenų bazės atsparumui užtikrinti.
Kokius rodiklius reikėtų stebėti, norint įvertinti kiekvieno metodo efektyvumą?
Perkrovimo sistemoms stebėkite vidutinį aptikimo laiką, vidutinį laiką iki perkrovimo, klaidingai teigiamų rezultatų rodiklį ir atkūrimo taško tikslų laikymąsi. Sistemoms po gedimų stebėti paleidimo iš naujo dažnumą, laiką iki visiško pasirengimo po paleidimo iš naujo, išsprendžiamų paleidimų procentą, palyginti su ciklu, ir poveikio verslui trukmę. Abu metodai naudingi vertinant bendrą prieinamumo procentą, matuojamą pagal prasmingas vartotojų keliones, o ne paprastą procesų veikimo laiką.

Nuosprendis

Rinkitės atsparumą gedimams klientų aptarnavimo paslaugoms, kur net ir kelios sekundės prastovų turi verslo pasekmių, priimdami tam reikalingas infrastruktūros investicijas. Rinkitės gedimų sukeltą paleidimą iš naujo, kai pakanka greito būsenos neturinčių arba vidinių darbo krūvių atkūrimo, tačiau atidžiai stebėkite paleidimo iš naujo dažnumą, kad pastebėtumėte sistemines problemas, kol jos neiškilo.

Susiję palyginimai

„Kafka“ ir „Flink“ palyginti su apdorojimu atmintyje

„Kafka“ ir „Flink“ sudaro paskirstytą srautinio apdorojimo ekosistemą realaus laiko duomenų srautams, o apdorojimas atmintyje pagreitina analizę, nes duomenys saugomi tik RAM atmintyje – kiekvienas iš jų tenkina iš esmės skirtingus architektūrinius greičio, mastelio ir tvarumo poreikius.

„Netflix“ mašininio mokymosi platforma ir nepriklausomi mašininio mokymosi įrankiai

„Netflix“ vidinė mašininio mokymosi platforma siūlo glaudžiai integruotus, didelio masto įrankius, skirtus transliacijų suasmeninimui, o nepriklausomi mašininio mokymosi įrankiai suteikia mažesnėms komandoms lankstumo ir kontrolės. Pasirinkimas priklauso nuo masto, pritaikymo poreikių ir esamų investicijų į infrastruktūrą.

Adaptyvioji infrastruktūra ir statinė infrastruktūros projektavimas

Adaptyvi infrastruktūra dinamiškai prisitaiko prie kintančių darbo krūvių, naudodama automatizavimą ir mastelio keitimą realiuoju laiku, o statinės infrastruktūros projektavimas remiasi fiksuotais, iš anksto sukonfigūruotais ištekliais. Pasirinkimas priklauso nuo darbo krūvio kintamumo, biudžeto nuspėjamumo ir veikimo brandos jūsų debesijos aplinkoje.

Apkrovos balansavimas mašininio mokymosi sistemose ir paprastas API užklausų tvarkymas

Apkrovos balansavimas mašininio mokymosi sistemose valdo GPU reikalaujančius išvadų ir mokymo darbo krūvius specializuotoje įrangoje, o paprastas API užklausų apdorojimas paskirsto nedidelį HTTP srautą bendrosios paskirties serveriuose. Jie labai skiriasi sudėtingumu, išteklių poreikiu ir maršruto parinkimo išmanumu.

AWS ir Google Cloud palyginimas

Ši palyginimo analizė nagrinėja „Amazon Web Services“ ir „Google Cloud“, vertindama jų paslaugų pasiūlą, kainodaros modelius, pasaulinę infrastruktūrą, našumą, kūrėjų patirtį ir optimalius naudojimo atvejus, padėdama organizacijoms pasirinkti debesų platformą, geriausiai atitinkančią jų techninius ir verslo poreikius.