Areto de du nodoj - la diablo estas en la detaloj

Hej Habr! Mi prezentas al via atento la tradukon de la artikolo "Du Nodoj - La diablo estas en la Detaloj" de Andreo Beekhof.

Multaj homoj preferas du-nodajn aretojn ĉar ili ŝajnas koncipe pli simplaj kaj ankaŭ estas 33% pli malmultekostaj ol siaj tri-nodaj ekvivalentoj. Kvankam estas sufiĉe eble kunmeti bonan areton de du nodoj, en la plej multaj kazoj, pro nekonsideritaj scenaroj, tia agordo kreos multajn neevitajn problemojn.

La unua paŝo por krei ajnan altan haveblecsistemon estas trovi kaj provi elimini individuajn punktojn de fiasko, ofte mallongigitaj kiel SPoF (ununura punkto de fiasko).

Indas memori, ke estas neeble forigi ĉiujn eblajn riskojn de malfunkcio en iu ajn sistemo. Ĉi tio devenas de la fakto, ke tipa defendo kontraŭ risko estas enkonduki iun redundon, kio kondukas al pliigita sistema komplekseco kaj la apero de novaj punktoj de fiasko. Tial ni komence faras kompromison kaj koncentriĝas pri eventoj asociitaj kun individuaj punktoj de fiasko, kaj ne ĉe ĉenoj de rilataj kaj, sekve, ĉiam pli malpli probablaj eventoj.

Konsiderante la kompromisojn, ni ne nur serĉas SPoF, sed ankaŭ ekvilibrigas riskojn kaj sekvojn, rezulte de kiuj la konkludo de kio estas kritika kaj kio ne estas povas diferenci por ĉiu deplojo.

Ne ĉiuj bezonas alternativajn elektroprovizantojn kun sendependaj kurentkonduktiloj. Kvankam la paranojo pagis por almenaŭ unu kliento kiam ilia monitorado detektis misan transformilon. La kliento faris telefonvokojn provante alarmi la elektrokompanion ĝis la misa transformilo eksplodis.

Natura deirpunkto estas havi pli ol unu nodon en la sistemo. Tamen, antaŭ ol la sistemo povas movi servojn al la pluviva nodo post fiasko, ĝi ĝenerale devas certigi ke la servoj estantaj movitaj ne estas aktivaj aliloken.

Ne estas malavantaĝo al du-noda areto se malsukceso rezultigas ambaŭ nodojn servante la saman senmovan retejon. Tamen, aferoj ŝanĝiĝas se la rezulto estas, ke ambaŭ partioj sendepende administras komunan laborvicon aŭ disponigas nekunordigan skribaliron al reproduktita datumbazo aŭ komuna dosiersistemo.

Tial, por malhelpi datuman korupton kiel rezulto de ununura noda fiasko - ni fidas je io nomata "disiĝo" (skermado).

La principo de disociiĝo

Ĉe la koro de la principo de disociiĝo estas la demando: ĉu konkuranta nodo povas kaŭzi datuman korupton? En la okazo, ke datuma korupto estas verŝajna scenaro, bona solvo estus izoli la nodon de ambaŭ envenantaj petoj kaj konstanta stokado. La plej ofta aliro al malasociiĝo estas malkonekti la misajn nodojn.

Estas du kategorioj de disociaj metodoj, kiujn mi nomos rekta и nerekta, sed ili egale povas esti nomataj aktiva и pasiva. Rektaj metodoj inkludas agojn flanke de pluvivaj kunuloj, kiel ekzemple interagado kun IPMI (Inteligenta Platform Management Interface) aŭ iLO (mekanismo por administrado de serviloj en la foresto de fizika aliro al ili) aparato, dum nerektaj metodoj dependas de la malsukcesa. nodo por iel rekoni ke ĝi estas en malsana stato (aŭ almenaŭ malhelpas aliajn membrojn resaniĝi) kaj signali aparataro gardisto pri la bezono malkonekti la malsukcesan nodon.

Kvorumo helpas kiam oni uzas kaj rektajn kaj nerektajn metodojn.

Rekta disociiĝo

En la kazo de rekta disociado, ni povas uzi kvorumon por malhelpi disociajn vetkurojn en la okazaĵo de reto-malsukceso.

Kun la koncepto de kvorumo, ekzistas sufiĉe da informoj en la sistemo (eĉ sen konektiĝi al ĝiaj kunuloj) por nodoj por aŭtomate scii ĉu ili devus iniciati disiĝon kaj/aŭ reakiron.

Sen kvorumo, ambaŭ flankoj de reta disiĝo prave supozos, ke la alia flanko estas morta kaj klopodos malasocii la alian. En la plej malbona kazo, ambaŭ partioj sukcesas fermi la tutan areton. Alternativa scenaro estas mortmatĉo, senfina buklo de nodoj generantaj, ne vidante siajn kunulojn, rekomencante ilin kaj iniciatante reakiron nur por rekomenci kiam ilia samulo sekvas la saman logikon.

La problemo kun disiĝo estas, ke la plej ofte uzataj aparatoj fariĝas neatingeblaj pro la samaj malsukcesaj eventoj, kiujn ni volas celi por reakiro. Plej multaj IPMI kaj iLO-kartoj estas instalitaj sur la gastigantoj kiujn ili kontrolas kaj, defaŭlte, uzas la saman reton, kio igas la celajn gastigantojn kredi ke aliaj gastigantoj estas eksterrete.

Bedaŭrinde, la funkciaj funkcioj de IPMI kaj iLo-aparatoj malofte estas konsiderataj dum la aĉeto de ekipaĵo.

Nerekta disociiĝo

Kvorumo ankaŭ estas grava por administrado de nerekta disocio; se farite ĝuste, kvorumo povas permesi al pluvivantoj supozi ke perditaj nodoj transiros al sekura stato post certa tempodaŭro.

Kun ĉi tiu agordo, la hardvara gardohundo tempigilo estas rekomencigita ĉiujn N sekundojn se kvorumo ne estas perdita. Se la tempigilo (kutime pluraj obloj de N) eksvalidiĝas, tiam la aparato elfaras malgracian malŝalton (ne malŝalton).

Ĉi tiu aliro estas tre efika, sed sen kvorumo ne estas sufiĉe da informoj ene de la areto por administri ĝin. Ne estas facile konstati la diferencon inter reta malfunkcio kaj fiasko de samnodo. La kialo, ke ĉi tio gravas, estas, ke sen la kapablo diferenci inter la du kazoj, vi estas devigita elekti la saman konduton en ambaŭ kazoj.

La problemo kun elektado de unu reĝimo estas, ke ne ekzistas procedo, kiu maksimumigas haveblecon kaj malhelpas datumojn.

  • Se vi elektas supozi, ke samranga nodo estas aktiva sed fakte malsukcesas, la areto senbezone haltigos servojn, kiuj ruliĝus por kompensi la perdon de servoj de la malsukcesa kunula nodo.
  • Se vi decidas supozi, ke nodo malfunkcias, sed ĝi estis nur fiasko de reto kaj fakte la fora nodo funkcias, tiam en la plej bona kazo vi subskribas por iu estonta mana repaciĝo de la rezultaj datumaj aroj.

Sendepende de kia heŭristiko vi uzas, estas bagatela krei malsukceson, kiu aŭ kaŭzos ambaŭ flankojn malsukcesi aŭ kaŭzos la areton malŝalti la pluvivajn nodojn. Ne uzi kvorumon vere senigas la areton de unu el la plej potencaj iloj en ĝia arsenalo.

Se ne ekzistas alia alternativo, la plej bona aliro estas oferi haveblecon (ĉi tie la verkinto rilatas al la CAP-teoremo). Alta havebleco de koruptitaj datumoj ne helpas al iu ajn, kaj mane akordigi malsamajn datumajn arojn ankaŭ ne estas amuza.

Kvorumo

Kvorumo sonas bonege, ĉu ne?

La sola malavantaĝo estas, ke por havi ĝin en areto kun N membroj, vi devas havi konekton inter N/2+1 el viaj restantaj nodoj. Kio ne eblas en du noda areto post kiam unu nodo malsukcesas.

Kiu finfine alportas nin al la fundamenta problemo kun du nodoj:
Kvorumo ne havas sencon en du nodaj aretoj, kaj sen ĝi estas neeble fidinde determini la procedon, kiu maksimumigas haveblecon kaj malhelpas datumperdon.
Eĉ en sistemo de du nodoj ligitaj per interkruciĝokablo, estas neeble definitive distingi inter reto-malfunkcio kaj fiasko de la alia nodo. Malebligi unu finon (kies probableco estas, kompreneble, proporcia al la distanco inter la nodoj) sufiĉos por nuligi ajnan supozon, ke la sano de la ligo estas egala al la sano de la partnera nodo.

Funkcii du-nodan areton

Kelkfoje la kliento ne povas aŭ ne volas aĉeti trian nodon, kaj ni estas devigitaj serĉi alternativon.

Opcio 1 - Duplikata disocia metodo

La iLO aŭ IPMI-aparato de nodo reprezentas punkton de fiasko ĉar, se ĝi malsukcesas, pluvivantoj ne povas uzi ĝin por alporti la nodon al sekura stato. En areto de 3 aŭ pli da nodoj, ni povas mildigi ĉi tion kalkulante kvorumon kaj uzante aparatan gardhundon (nerekta disociigmekanismo, kiel diskutite antaŭe). En la kazo de du nodoj, ni devas uzi retajn distribuajn unuojn (PDU) anstataŭe.

Post malsukceso, la pluvivanto unue provas kontakti la primaran disociigaparaton (enigita iLO aŭ IPMI). Se ĉi tio sukcesas, reakiro daŭras kiel kutime. Nur se la iLO/IPMI-aparato malsukcesas, la PDU estas alirita; se la aliro estas sukcesa, reakiro povas daŭri.

Nepre metu la PDU sur malsaman reton ol la aretotrafiko, alie ununura reto-malsukceso blokos aliron al ambaŭ disigaj aparatoj kaj blokos restarigon de servoj.

Ĉi tie vi povas demandi - ĉu la PDU estas ununura fiasko? Al kiu la respondo estas, kompreneble ĝi estas.

Se ĉi tiu risko estas grava por vi, vi ne estas sola: konektu ambaŭ nodojn al du PDU-oj kaj diru al la grupiga programaro uzi ambaŭ kiam ŝaltas kaj malŝaltas la nodojn. La areto nun restas aktiva se unu PDU mortas, kaj dua fiasko de aŭ la alia PDU aŭ la IPMI-aparato estos postulata por bloki reakiron.

Opcio 2 - Aldono de Arbitranto

En kelkaj scenaroj, dum la duplikata diasocia metodo estas teknike ebla, ĝi estas politike malfacila. Multaj kompanioj ŝatas havi iom da apartigo inter administrantoj kaj aplikaĵposedantoj, kaj sekurec-konsciaj retaj administrantoj ne ĉiam entuziasmas pri kunhavigo de PDU-aliragordoj kun iu ajn.

En ĉi tiu kazo, la rekomendita alternativo estas krei neŭtralan trian partion kiu povas kompletigi la kvoruman kalkulon.

Okaze de fiasko, nodo devas povi vidi la sendondojn de sia samulo aŭ arbitracianto por restarigi servojn. La arbitracianto ankaŭ inkluzivas malkonekti funkcion se ambaŭ nodoj povas vidi la arbitraciiston sed ne povas vidi unu la alian.

Ĉi tiu opcio devas esti uzata kune kun nerekta malasociiga metodo, kiel hardvara gardohundo tempigilo, kiu estas agordita por senvivigi maŝinon se ĝi perdas konekton al sia kunulo kaj arbitracianto. Tiel, pluvivanto povas racie supozi ke ĝia kunula nodo estos en sekura stato post kiam la hardvara gardohundo tempigilo eksvalidiĝas.

La praktika diferenco inter arbitracianto kaj tria nodo estas ke arbitracianto postulas multe malpli da resursoj por funkciigi kaj eble povas servi pli ol unu areton.

Opcio 3 - Homa faktoro

La fina aliro estas, ke pluvivantoj daŭrigu prizorgi kiajn servojn, kiujn ili jam funkciis, sed ne komenci novajn ĝis aŭ la problemo solvas sin (retorestarigo, nodo rekomencas) aŭ persono prenas respondecon por permane konfirmi ke la alia flanko estas morta.

Bonusopcio

Ĉu mi menciis, ke vi povas aldoni trian nodon?

Du rakoj

Por argumento, ni ŝajnigu, ke mi konvinkis vin pri la meritoj de la tria nodo, nun ni devas konsideri la fizikan aranĝon de la nodoj. Se ili estas loĝigitaj (kaj funkciigitaj) en la sama rako, tio ankaŭ konsistigas SPoF, kaj unu kiu ne povas esti solvita aldonante duan rako.

Se ĉi tio estas surpriza, konsideru kio okazus se rako kun du nodoj malsukcesus, kaj kiel la pluviva nodo diferencigus inter tio kaj reto fiasko.

La mallonga respondo estas, ke tio ne eblas, kaj ni denove traktas ĉiujn problemojn en la kazo de du nodoj. Aŭ pluvivanto:

  • ignoras kvorumon kaj neĝuste provas iniciati restarigon dum retaj malfunkcioj (la kapablo kompletigi disiĝon estas malsama rakonto kaj dependas de ĉu la PDU estas implikita kaj ĉu ili partumas potencon kun iuj da la rakoj), aŭ
  • respektas kvorumon kaj malkonektas sin trofrue kiam ĝia samranga nodo malsukcesas

Ĉiukaze, du rakoj ne estas pli bonaj ol unu, kaj la nodoj devas aŭ ricevi sendependajn elektroprovizojn aŭ esti distribuitaj tra tri (aŭ pli, depende de kiom da nodoj vi havas) rakoj.

Du datumcentroj

Je ĉi tiu punkto, legantoj, kiuj ne plu kontraŭas riskon, eble volas konsideri katastrofan reakiron. Kio okazas kiam asteroido trafas la saman datumcentron kun niaj tri nodoj disvastigitaj tra tri malsamaj rakoj? Evidente Malbonaj Aferoj, sed depende de viaj bezonoj, aldoni duan datumcentron eble ne sufiĉas.

Se farite ĝuste, la dua datumcentro provizas al vi (kaj prudente) ĝisdatigitan kaj konsekvencan kopion de viaj servoj kaj iliaj datumoj. Tamen, kiel en du-nodaj, du-rakaj scenaroj, ekzistas ne sufiĉe da informoj en la sistemo por certigi maksimuman haveblecon kaj malhelpi korupton (aŭ datumseriajn diferencojn). Eĉ kun tri nodoj (aŭ rakoj), distribui ilin tra nur du datumcentroj lasas la sistemon nekapabla fidinde fari la ĝustan decidon en la okazaĵo de (nun multe pli verŝajna) okazaĵo kiun ambaŭ partioj ne povas komuniki.

Ĉi tio ne signifas, ke duobla datumcentra solvo neniam taŭgas. Firmaoj ofte volas, ke persono estu konscia antaŭ ol fari la eksterordinaran paŝon translokiĝi al rezerva datumcentro. Nur memoru, ke se vi volas aŭtomatigi la malfunkcion, vi aŭ bezonos trian datumcentron por ke kvorumo havu sencon (aŭ rekte aŭ per arbitraciisto), aŭ vi trovos manieron fidinde malŝalti la tutan datumon. centro.

fonto: www.habr.com

Aldoni komenton