Përshëndetje, Habr! Po ju prezantoj një përkthim të artikullit autori Andrew Beekhof.
Shumë njerëz preferojnë klasterët me dy nyje sepse ata duken konceptualisht më të thjeshtë, për më tepër janë 33% më të lirë se homologët e tyre me tre nyje. Edhe pse është krejtësisht e mundur të krijosh një klaster të mirë me dy nyje, në shumicën e rasteve, për shkak të skenarëve të paqenësuar, një konfigurim i tillë do të krijojë shumë probleme të paqarta.
Hapi i parë drejt krijimit të çdo sistemi meDisponueshmëri të Lartë është identifikimi dhe përpjekja për të eliminuar piketat e vetme të dështimit, shpesh të përmbledhura si SPoF (pikë e vetme dështimi).
Duhet të mbahet mend se në çdo sistem nuk është e mundur të eliminohen të gjitha rreziqet e mundshme të ndërprerjes. Kjo rrjedh së paku nga fakti se mbrojtja tipike kundër rrezikut është futja e ndonjë redundance, që çon në rritjen e kompleksitetit të sistemit dhe krijimin e pikave të reja të dështimit. Prandaj, ne në fillim pranojmë një kompromis dhe përqendrohemi në ngjarjet që lidhen me pikë e vetme dështimi, në vend të lidhjeve të ngjarjeve dhe, për rrjedhojë, gjithnjë e më pak të mundshme.
Duke pasur parasysh kompromiset, ne jo vetëm që kërkojmë SPoF, por gjithashtu realizojmë një ekuilibër mezi për rreziqet dhe pasojat, si rezultat, përfundimi se çfarë është kritik dhe çfarë jo mund të ndryshojë për çdo implementim.
Nuk i nevojiten të gjithëve ofrues alternativë energjie me linja elektrike të pavarura. Megjithatë, paranoia ia doli për një klient, kur monitorimi i tyre zbuloi një transformator të defekt. Klienti telefonoi duke u përpjekur të paralajmërojë kompaninë e energjisë, derisa transformatori i defekt nuk shpërtheu.
Një pikë fillestare natyrale është të kesh më shumë se një nyje në sistem. Megjithatë, para se sistemi të jetë në gjendje të transferojë shërbimet në nyjën e mbetur pas dështimit, në përgjithësi, është e nevojshme të sigurohemi që shërbimet e transferuara nuk janë aktive në ndonjë vend tjetër.
Një klaster me dy nyje nuk ka disavantazhe nëse si rezultat i dështimit të dy nyjet shërbejnë të njëjtin faqe statike. Megjithatë, gjithçka ndryshon nëse të dyja palët menaxhojnë në mënyrë të pavarur një radhë të përbashkët të punëve ose ofrojnë akses të paorganizuar për të shkruar në një bazë të dhënash të replikuar ose në një sistem të përbashkët skedarësh.
Prandaj, për të parandaluar dëmtimin e të dhënave si rezultat i dështimit të një nyje – ne mbështetemi në atë që quhet «ndarje» (fencing).
Principi i ndarjes
Në thelb të principit të ndarjes qëndron pyetja: a mund të dëmtojë një nyje konkurruese të dhënat? Nëse dëmtimi i të dhënave është një skenar i mundshëm – një zgjidhje e mirë do të ishte izolimi i nyjes nga kërkesat e ardhshme, si dhe nga ruajtja e qëndrueshme. Qasja më e zakonshme ndaj ndarjes – është shkëputja e nyjeve problematike.
Ka dy kategori metodash ndarjeje që unë do t'i quaja direkte dhe të tërthorta, por njëlloj mund të quhen aktive dhe pasive. Metodat direkte përfshijnë veprime nga nyjet e mbijetuar të barabarta, të tilla si ndërveprimi me pajisjen IPMI (Interface për Menaxhimin e Platformës Inteligjente) ose iLO (mekanizmi i menaxhimit të serverëve në kushte mungesë fizike të qasjes në to), ndërsa metodat e tërthorta mbështeten te nyja e dështuar për të njohur ndonjë mënyrë se është në një gjendje të keqe (ose, të paktën, e pengon pjesën tjetër të rikuperohet) dhe sinjalizimin e rreth nevojës për të shkëputur nyjen e dështuar.
Kvorumi ndihmon në rastin e përdorimit të metodave si direkte ashtu edhe të tërthorta.
Ndarje direkte
Në rastin e ndarjes direkte ne mund të përdorim kvorumin për të parandaluar garat e ndarjes në rast të dështimit të rrjetit.
Duke pasur konceptin e kvorumit, sistemi ka informacion të mjaftueshëm (edhe pa u lidhur me partnerët e tij), për sa i përket nëse nyjet duhet të nisin ndarjen dhe / ose rikuperimin.
Pa kvorum, të dyja palët e ndarjes së rrjetit të supozojnë për drejtë se pala tjetër është e vdekur dhe do të përpiqen të ndajnë tjetrin. Në rastin më të keq, të dy palët arrijnë të shkëputin të gjithë klasterin. Skenari alternativ – deathmatch, një cikël përjetësisht nyjesh që shfaqen, nuk i shohin pirunët e tyre, i rikthejnë dhe nisin rikuperimin vetëm për t'u rikthyer, kur piru i tyre kalon në të njëjtin logic.
Problemi me ndarjen qëndron në faktin se pajisjet më të përdorura bëhen të paarritshme për shkak të të njëjtave ngjarjeve të dështimit, për të cilat ne duam të orientoheshim për të rimarrë. Shumica e kartave IPMI dhe iLO janë instaluar në host-et që ata kontrollojnë dhe, sipas parazgjedhjes, përdorin të njëjtin rrjet, që e bën që nodet për qëllim të mendojnë se nodet e tjera janë offline.
Fatkeqësisht, karakteristikat e funksionimit të pajisjeve IPMI dhe iLO rrallë shqyrtohen në momentin e blerjes së pajisjeve.
Ndarje e shkallëzuar
Kvorumi është gjithashtu i rëndësishëm për menaxhimin e ndarjeve të shkallëzuara, nëse gjithçka bëhet si duhet, kvorumi mund të lejojë mbijetuesit të supozojnë se nodet e humbura do të kalojnë në një gjendje të sigurt pas një periudhe të caktuar.
Me një konfigurim të tillë, timer-i i hardware watchdog reset-et çdo N sekonda, nëse kvorumi nuk është humbur. Nëse timer-i (zakonisht disa herë N) skadon, pajisja kryen një fikje të papritur të energjisë (jo shutdown).
Ky qasje është shumë efikase, por pa një kvorum për ta menaxhuar, informacioni brenda grupit është i pamjaftueshëm. Nuk është e lehtë të përcaktosh diferencën midis ndalimit të rrjetit dhe dështimit të nodit partner. Arsyeja pse kjo ka rëndësi është se pa aftësinë për të dalluar këto dy raste, jeni të detyruar të zgjidhni të njëjtin mënyrë veprimi në të dyja rastet.
Problemi me zgjedhjen e një mënyre veprimi është se nuk ka një procedurë veprimi që maksimizon disponueshmërinë dhe parandalon humbjen e të dhënave.
- Nëse vendosni të supozoni se nodi partner është aktiv, por në të vërtetë ka ndodhur një dështim, grupi do të ndalojë tepër shërbimet që do të duhej të funksiononin për të kompensuar humbjen e shërbimeve të nodit partner që ka rënë.
- Nëse vendosni të supozoni se nodi nuk funksionon, por ishte thjesht një dështim i rrjetit dhe në të vërtetë nodi në distancë po funksionon, atëherë, në më të mirën, ju po nënshkruani një kontroll manual të ardhshëm të grupeve të të dhënave të rezultuar.
Pavarësisht se çfarë heuristik do të përdorni, është triviale të krijoni një dështim që do të detyrojë të dyja anët të punojnë, ose do të detyrojë grupin të fikë nodet e mbetura. Mos përdorimi i kvorumit vërtet i heq grupit një nga mjetet më të fuqishme në arsenalin e tij.
Nëse nuk ka alternativë tjetër, qasja më e mirë do të jetë të hiqni dorë nga disponueshmëria (këtu autori i referohet teoremës CAP). Disponueshmëria e lartë e të dhënave të prishura nuk ndihmon askënd, dhe verifikimi manual i grupeve të ndryshme të të dhënave gjithashtu nuk sjell kënaqësi.
Kvorumi
Kvorumi tingëllon bukur, a nuk është?
E vetmja mangësi është se për ta pasur atë në një grup me N anëtarë, ju nevojitet që të mbetet lidhja midis N / 2 + 1 nga nyjat tuaja. Kjo është e pamundur në një grup me dy nyje pas dështimit të një nyje.
Çka përfundimisht na çon në problemin themelor me dy nyje:
kvorumi nuk ka kuptim në grupet me dy nyje, dhe pa atë është e pamundur të përcaktohet besueshëm kursi i veprimit që maksimizon disponueshmërinë dhe parandalon humbjen e të dhënave.
Edhe në një sistem me dy nyje, të lidhura me një kabllo ndërkufitare, është e pamundur të bëhet një dallim përfundimtar midis çaktivizimit të rrjetit dhe dështimit të një nyje tjetër. Çaktivizimi i njërës skaj (probabiliteti i të cilit, pa dyshim, është proporcionale me distancën midis nyjeve) do të ishte e mjaftueshme për të hedhur poshtë çdo supozim se funksionimi i kanalit është i barabartë me shëndetin e nyjës partner.
Të bëjmë të funksionojë një grup me dy nyje
Ndonjëherë, klienti nuk mund ose nuk dëshiron të blejë një nyje të tretë, dhe ne jemi të detyruar të kërkojmë një alternativë.
Opsioni 1 – Metoda e dyfishimit të ndarjes
Dispositivi i iLO ose IPMI i nyjes është një pikë dështimi, pasi, në rast dështimi, ato që mbijetojnë nuk mund ta përdorin atë për të rikthyer nyjen në një gjendje të sigurt. Në një grup me 3 ose më shumë nyje, mund të mitikojmë këtë përmes llogaritjes së kvorumit dhe përdorimit të watch dog hardware (mekanizmi i ndarjes së tërthortë, siç është diskutuar më parë). Në rastin e dy nyjeve, ne duhet të përdorim në vend të kësaj switch-e rrjeti të furnizimit me energji (power distribution units ose PDUs).
Pas dështimit, ajo që mbijetoi së pari përpiqet të lidhet me dispozitivin kryesor të ndarjes (iLO ose IPMI i integruar). Nëse ia del, rikuperimi vazhdon si zakonisht. Vetëm në rast dështimi të pajisjes iLO / IPMI ndodh lidhja me PDU-në, dhe nëse lidhja është e suksesshme, rikuperimi mund të vazhdojë.
Sigurohuni që të vendosni PDU-në në një rrjet të ndryshëm nga trafiku i klasës, përndryshe një dështim i vetëm në rrjet do të bllokojë aksesin si në pajisjet e ndara ashtu edhe do të bllokojë rikuperimin e shërbimeve.
Këtu mund të pyesni – a nuk është pajisja PDU një pikë e vetme dështimi? Përgjigja është – sigurisht që është.
Nëse ky rrezik është i rëndësishëm për ju – nuk jeni vetëm: lidhni të dy nodet me dy PDU dhe caktoni softuerin e klasës të përdorë të dyja gjatë ndezjes dhe fikjes së nodëve. Tani klasa mbetet aktive nëse një PDU vdes, dhe për të bllokuar rikuperimin nevojitet një dështim tjetër ose i një PDU tjetër, ose i pajisjes IPMI.
Opsioni 2 – Shtimi i një arbitri
Në disa skenarë, ndonëse teknikisht metoda e ndarjes së dyfishtë është e mundur, ajo është politikisht e komplikuar. Shumë kompani pëlqejnë të kenë një ndarje të qartë midis administratorëve dhe pronarëve të aplikacioneve, dhe administratorët e rrjeteve që shqetësohen për sigurinë nuk janë gjithmonë entuziastë për të kaluar askujt parametrat e qasjes në PDU.
Në këtë rast, alternativa e rekomanduar është krijimi i një pale të tretë neutrale, e cila mund të plotësojë llogaritjen e kuorumit.
Në rast dështimi, nodi duhet të ketë mundësinë të shohë eterin e partnerit të tij ose arbitrit për të rikuperuar shërbimet. Arbitri gjithashtu përfshin një funksion ndërprerjeje, nëse të dy nodet mund të shohin arbitrin, por nuk shohin njëri-tjetrin.
Ky opsion duhet të përdoret në çift me metodën e tërthortë të ndarjes, siç është një timer hardware watchdog, i cili është i vendosur për të fikur makinën nëse humbet lidhjen me partnerin e saj dhe arbitrin. Në këtë mënyrë, ai që mbijetoi mund të supozojë me mjaft siguri se nodi i tij partner do të jetë në një gjendje të sigurt pas skadimit të timerit hardware watchdog.
Dallimi praktik midis arbitrit dhe nodit të tretë është se arbitri kërkon shumë më pak burime për funksionimin e tij dhe, potencialisht, mund të shërbejë më shumë se një klasë.
Opsioni 3 – Faktori njerëzor
Qashti fundit është që të mbijetuarit vazhdojnë të kryejnë çdo shërbim që ata tashmë po kryenin, por nuk fillojnë të reja derisa problemet të zgjidhin vetë (rikuperimi i rrjetit, ribashkimi i një nyje), ose një individ merr përgjegjësinë për të konfirmuar dorazi se pala tjetër është e vdekur.
Opsioni bonus
A e kam thënë që mund ta shtoni një nyje të tretë?
Dy raftë
Për qëllim argumenti, le të imagjinojmë se ju kam bindur në meritat e nyjës së tretë, tani duhet të marrim në konsideratë vendndodhjen fizike të nyjave. Nëse ato janë vendosur (dhe furnizohen me energji) në të njëjtin raft, kjo gjithashtu paraqet një SPoF, dhe një që nuk mund të zgjidhet duke shtuar një raft të dytë.
Nëse kjo është e habitshme, mendoni se çfarë do të ndodhte nëse rafti me dy nyje dështon dhe si nyja e mbijetuar do ta dallonte këtë rast nga dështimi i rrjetit.
Përgjigja e shkurtër: kjo është e pamundur, dhe ne përsëri kemi të bëjmë me të gjitha problemet e rastit me dy nyje. Ose mbijetuesi:
- injoron kuorumin dhe gabimisht përpiqet të niste rikuperimin gjatë ndërprerjeve të rrjetit (mundësia e përfundimit të ndarjes – kjo është një histori e veçantë dhe varet nga nëse PDU është e angazhuar dhe ndajnë energjinë me ndonjë nga raftet), ose
- respekton kuorumin dhe shkëputet përpara kohe kur nyja e tij partnere dështon
Në çdo rast, dy raftë nuk janë më të mirë se një, dhe nyjat duhet ose të marrin burime të pavarura energjie, ose të shpërndahen në tre (ose më shumë, në varësi të numrit të nyjave që keni) raftë.
Dy qendra të të dhënave
Në këtë pikë, lexuesit që nuk janë më të prirë për rrezik mund të mendojnë për rikuperimin pas katastrofës. Çfarë ndodh kur një asteroid godet një qendër të të dhënave me tre nyjat tona, të shpërndara në tre raftë të ndryshëm? Sigurisht, ndodhin gjëra të këqija, por në varësi të nevojave tuaja, shtimi i një qendre të dytë të të dhënave mund të jetë i pamjaftueshëm.
Nëse gjithçka është bërë siç duhet, qendra e dytë e të dhënave ju ofron (dhe kjo është e arsyeshme) një kopje të azhurnuar dhe të sinkronizuar të shërbimeve dhe të dhënave tuaja. Megjithatë, ashtu si në skenarët me dy nyje dhe dy raftet, sistemi nuk ka informacion të mjaftueshëm për të siguruar disponueshmërinë maksimale dhe për të parandaluar dëmtimin (ose përçarjen e grupeve të të dhënave). Edhe nëse ka tre nyje (ose rafte), shpërndarja e tyre vetëm në dy qendra të të dhënave lë sistemin të paaftë të marrë një vendim të saktë në rastin e një ngjarjeje (tani shumë më të mundshme) që të dy palët nuk mund ta lidhin.
Kjo nuk do të thotë se zgjidhja me dy qendra të të dhënave nuk është ndonjëherë e përshtatshme. Kompanitë shpesh dëshirojnë që dikush të jetë në dijeni përpara se të marrë një hap të jashtëzakonshëm në procesin e kalimit në qendrën rezervë të të dhënave. Thjesht mbani parasysh se nëse dëshironi të automatizoni dështimin, do t'ju duhej një qendër e tretë e të dhënave që kuorumi të kishte kuptim (drejt për drejt ose përmes një arbitri), ose do të duhet të gjeni një mënyrë për të çaktivizuar në mënyrë të besueshme tërë qendrën e të dhënave.
Burimi: habr.com
