Grup i dy nyjeve - djalli është në detaje

Përshëndetje, Habr! Unë paraqes në vëmendjen tuaj një përkthim të artikullit "Dy nyje - Djalli është në detaje" nga Andrew Beekhof.

Shumë njerëz preferojnë grupimet me dy nyje sepse duken konceptualisht më të thjeshta dhe janë gjithashtu 33% më të lira se homologët e tyre me tre nyje. Edhe pse është mjaft e mundur të bashkohet një grup i mirë i dy nyjeve, në shumicën e rasteve, për shkak të skenarëve të pashqyrtuar, një konfigurim i tillë do të krijojë shumë probleme të padukshme.

Hapi i parë për krijimin e çdo sistemi me disponueshmëri të lartë është gjetja dhe përpjekje për të eliminuar pikat individuale të dështimit, shpesh të shkurtuara si SPoF (pika e vetme e dështimit).

Vlen të kihet parasysh se është e pamundur të eliminohen të gjitha rreziqet e mundshme të ndërprerjes në çdo sistem. Kjo rrjedh nga fakti se një mbrojtje tipike kundër rrezikut është futja e disa tepricave, gjë që çon në rritjen e kompleksitetit të sistemit dhe shfaqjen e pikave të reja të dështimit. Prandaj, ne fillimisht bëjmë një kompromis dhe fokusohemi në ngjarjet që lidhen me pikat individuale të dështimit, dhe jo në zinxhirët e ngjarjeve të lidhura dhe, për rrjedhojë, gjithnjë e më pak të mundshme.

Duke pasur parasysh kompromiset, ne jo vetëm që kërkojmë SPoF, por edhe balancojmë rreziqet dhe pasojat, si rezultat i të cilave përfundimi i asaj që është kritike dhe çfarë jo mund të ndryshojë për çdo vendosje.

Jo të gjithë kanë nevojë për furnizues alternativë të energjisë elektrike me linja të pavarura të energjisë elektrike. Edhe pse paranoja u shpagua për të paktën një klient kur monitorimi i tyre zbuloi një transformator të dëmtuar. Klienti bëri telefonata duke u përpjekur të lajmëronte kompaninë energjetike derisa transformatori me defekt shpërtheu.

Një pikënisje e natyrshme është që të ketë më shumë se një nyje në sistem. Megjithatë, përpara se sistemi të mund të zhvendosë shërbimet në nyjen e mbijetuar pas një dështimi, në përgjithësi duhet të sigurohet që shërbimet që zhvendosen nuk janë aktive diku tjetër.

Nuk ka asnjë dobësi për një grup me dy nyje nëse një dështim rezulton në të dy nyjet që shërbejnë të njëjtën faqe interneti statike. Megjithatë, gjërat ndryshojnë nëse rezultati është që të dyja palët menaxhojnë në mënyrë të pavarur një radhë pune të përbashkët ose ofrojnë qasje të pakoordinuar të shkrimit në një bazë të dhënash të përsëritur ose në sistemin e skedarëve të përbashkët.

Prandaj, për të parandaluar korrupsionin e të dhënave si rezultat i dështimit të një nyje të vetme - ne mbështetemi në diçka që quhet "shkëputje" (skermë).

Parimi i disociimit

Në zemër të parimit të disociimit është pyetja: a mundet një nyje konkurruese të shkaktojë korrupsion të të dhënave? Në rast se korrupsioni i të dhënave është një skenar i mundshëm, një zgjidhje e mirë do të ishte izolimi i nyjes si nga kërkesat hyrëse ashtu edhe nga ruajtja e vazhdueshme. Qasja më e zakonshme ndaj shkëputjes është shkëputja e nyjeve me defekt.

Ekzistojnë dy kategori të metodave të ndarjes, të cilat unë do t'i quaj i drejtpërdrejtë и indirekt, por ato mund të quhen njësoj aktive и pasive. Metodat e drejtpërdrejta përfshijnë veprime nga ana e kolegëve të mbijetuar, të tilla si ndërveprimi me një pajisje IPMI (Inteligjente për Menaxhimin e Platformës) ose iLO (një mekanizëm për menaxhimin e serverëve në mungesë të aksesit fizik në to), ndërkohë që metodat indirekte mbështeten në dështimin. nyje për të njohur disi se është në një gjendje jo të shëndetshme (ose të paktën duke parandaluar anëtarët e tjerë që të shërohen) dhe sinjalizojnë roje harduerike për nevojën për të shkëputur nyjen e dështuar.

Kuorumi ndihmon kur përdoren metoda direkte dhe indirekte.

Shkëputja e drejtpërdrejtë

Në rastin e shkëputjes së drejtpërdrejtë, ne mund të përdorim kuorumin për të parandaluar garat e disociimit në rast të një dështimi të rrjetit.

Me konceptin e kuorumit, ka mjaft informacion në sistem (edhe pa u lidhur me kolegët e tij) që nyjet të dinë automatikisht nëse duhet të iniciojnë shkëputjen dhe/ose rikuperimin.

Pa një kuorum, të dyja palët e ndarjes së rrjetit me të drejtë do të supozojnë se pala tjetër ka vdekur dhe do të kërkojë të shkëputë tjetrën. Në rastin më të keq, të dyja palët arrijnë të mbyllin të gjithë grupin. Një skenar alternativ është një ndeshje vdekjeje, një lak i pafund nyjesh që shfaqen, duke mos parë kolegët e tyre, duke i rindezur ata dhe duke filluar rikuperimin vetëm për të rindezur kur bashkëmoshatari i tyre ndjek të njëjtën logjikë.

Problemi me shkëputjen është se pajisjet më të përdorura bëhen të padisponueshme për shkak të të njëjtave ngjarje dështimi që duam të synojmë për rikuperim. Shumica e kartave IPMI dhe iLO janë instaluar në hostet që ata kontrollojnë dhe, si parazgjedhje, përdorin të njëjtin rrjet, gjë që bën që hostet e synuar të besojnë se hostet e tjerë janë jashtë linje.

Fatkeqësisht, tiparet e funksionimit të pajisjeve IPMI dhe iLo rrallë merren parasysh në kohën e blerjes së pajisjeve.

Shkëputja indirekte

Kuorumi është gjithashtu i rëndësishëm për menaxhimin e shkëputjes indirekte; nëse bëhet si duhet, kuorumi mund t'u lejojë të mbijetuarve të supozojnë se nyjet e humbura do të kalojnë në një gjendje të sigurt pas një periudhe të caktuar kohe.

Me këtë konfigurim, kohëmatësi i monitorimit të harduerit rivendoset çdo N sekonda nëse kuorumi nuk humbet. Nëse kohëmatësi (zakonisht disa shumëfisha të N) skadon, atëherë pajisja kryen një fikje të pahijshme (jo fikje).

Kjo qasje është shumë efektive, por pa një kuorum nuk ka informacion të mjaftueshëm brenda grupit për ta menaxhuar atë. Nuk është e lehtë të dallosh dallimin midis një ndërprerjeje të rrjetit dhe një dështimi të një nyje homologe. Arsyeja që kjo ka rëndësi është se pa aftësinë për të bërë dallimin midis dy rasteve, ju jeni të detyruar të zgjidhni të njëjtën sjellje në të dyja rastet.

Problemi me zgjedhjen e një regjimi është se nuk ka asnjë mënyrë veprimi që maksimizon disponueshmërinë dhe parandalon humbjen e të dhënave.

  • Nëse zgjidhni të supozoni se një nyje peer është aktive, por në fakt dështon, grupi do të ndalojë në mënyrë të panevojshme shërbimet që do të ekzekutoheshin për të kompensuar humbjen e shërbimeve nga nyja e dështuar peer.
  • Nëse vendosni të supozoni se një nyje nuk funksionon, por ishte thjesht një dështim i rrjetit dhe në fakt nyja e largët është funksionale, atëherë në rastin më të mirë po regjistroheni për një rakordim manual në të ardhmen të grupeve të të dhënave që rezultojnë.

Pavarësisht se çfarë heuristike përdorni, është e parëndësishme të krijosh një dështim që ose do të shkaktojë dështimin e të dyja palëve ose do të bëjë që grupi të mbyllë nyjet e mbijetuara. Mospërdorimi i kuorumit me të vërtetë e privon grupin nga një prej mjeteve më të fuqishme në arsenalin e tij.

Nëse nuk ka alternativë tjetër, qasja më e mirë është të sakrifikosh disponueshmërinë (këtu autori i referohet teoremës CAP). Disponueshmëria e lartë e të dhënave të korruptuara nuk i ndihmon askujt dhe rakordimi manual i grupeve të ndryshme të të dhënave nuk është gjithashtu argëtues.

Kuorumi

Kuorumi tingëllon mirë, apo jo?

E vetmja negative është se për ta pasur atë në një grup me N anëtarë, duhet të keni një lidhje midis N/2+1 të nyjeve tuaja të mbetura. Gjë që nuk është e mundur në një grup me dy nyje pasi një nyje dështon.

E cila përfundimisht na sjell te problemi themelor me dy nyje:
Kuorumi nuk ka kuptim në dy grupime nyjesh dhe pa të është e pamundur të përcaktohet me besueshmëri kursi i veprimit që maksimizon disponueshmërinë dhe parandalon humbjen e të dhënave
Edhe në një sistem prej dy nyjesh të lidhur me një kabllo kryqëzimi, është e pamundur të bëhet dallimi përfundimtar midis një ndërprerjeje të rrjetit dhe një dështimi të nyjes tjetër. Çaktivizimi i njërit skaj (probabiliteti i të cilit është, natyrisht, proporcional me distancën midis nyjeve) do të jetë i mjaftueshëm për të zhvlerësuar çdo supozim se shëndeti i lidhjes është i barabartë me shëndetin e nyjës partnere.

Bërja e funksionimit të një grupi 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 dyfishtë e ndarjes

Pajisja iLO ose IPMI e një nyje përfaqëson një pikë dështimi sepse, nëse dështon, të mbijetuarit nuk mund ta përdorin atë për ta sjellë nyjen në një gjendje të sigurt. Në një grup prej 3 ose më shumë nyjeve, ne mund ta zbusim këtë duke llogaritur kuorumin dhe duke përdorur një mbikëqyrës harduerësh (një mekanizëm i shkëputjes indirekte, siç u diskutua më parë). Në rastin e dy nyjeve, ne duhet të përdorim në vend të tyre njësitë e shpërndarjes së energjisë në rrjet (PDU).

Pas një dështimi, i mbijetuari fillimisht përpiqet të kontaktojë pajisjen kryesore të shkëputjes (iLO ose IPMI e integruar). Nëse kjo është e suksesshme, rikuperimi vazhdon si zakonisht. Vetëm nëse pajisja iLO/IPMI dështon, aksesohet PDU; nëse qasja është e suksesshme, rikuperimi mund të vazhdojë.

Sigurohuni që ta vendosni PDU-në në një rrjet të ndryshëm nga trafiku i grupit, përndryshe një dështim i vetëm i rrjetit do të bllokojë aksesin në të dy pajisjet e shkëputjes dhe do të bllokojë restaurimin e shërbimeve.

Këtu mund të pyesni - a është PDU një pikë e vetme dështimi? Për të cilën 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 nyjet me dy PDU dhe thuajini softuerit të grupimit që t'i përdorë të dyja kur ndezni dhe çaktivizoni nyjet. Grupimi tani mbetet aktiv nëse një PDU vdes dhe do të kërkohet një dështim i dytë ose i PDU-së tjetër ose i pajisjes IPMI për të bllokuar rikuperimin.

Opsioni 2 - Shtimi i një Arbitri

Në disa skenarë, ndërsa metoda e dyfishtë e shkëputjes është teknikisht e mundur, ajo është politikisht e vështirë. Shumë kompani pëlqejnë të kenë një ndarje midis administratorëve dhe pronarëve të aplikacioneve, dhe administratorët e rrjetit të ndërgjegjshëm për sigurinë nuk janë gjithmonë entuziastë për ndarjen e cilësimeve të aksesit PDU me këdo.

Në këtë rast, alternativa e rekomanduar është krijimi i një pale të tretë neutrale që mund të plotësojë llogaritjen e kuorumit.

Në rast të një dështimi, një nyje duhet të jetë në gjendje të shohë valët e transmetimit të homologut ose arbitrit të tij në mënyrë që të rivendosë shërbimet. Arbitri gjithashtu përfshin një funksion shkëputjeje nëse të dy nyjet mund ta shohin arbitrin, por nuk mund ta shohin njëri-tjetrin.

Ky opsion duhet të përdoret në lidhje me një metodë shkëputjeje indirekte, si p.sh. një kohëmatës i monitorimit të harduerit, i cili është konfiguruar për të vrarë një makinë nëse humbet lidhjen me nyjen e saj homologe dhe arbitrare. Kështu, një i mbijetuar mund të supozojë në mënyrë të arsyeshme se nyja e tij homologe do të jetë në një gjendje të sigurt pas skadimit të kohëmatësit të rojës së harduerit.

Dallimi praktik midis një arbitri dhe një nyje të tretë është se një arbitër kërkon shumë më pak burime për të vepruar dhe potencialisht mund të shërbejë më shumë se një grup.

Opsioni 3 - Faktori njerëzor

Qasja përfundimtare është që të mbijetuarit të vazhdojnë të ekzekutojnë çfarëdo shërbimi që përdornin tashmë, por të mos fillojnë të reja derisa problemi të zgjidhet vetë (rivendosja e rrjetit, rindezja e nyjeve) ose një person të marrë përgjegjësinë për të konfirmuar manualisht se pala tjetër ka vdekur.

Opsioni i bonusit

A përmenda se mund të shtoni një nyje të tretë?

Dy rafte

Për hir të argumentit, le të pretendojmë se ju kam bindur për meritat e nyjës së tretë, tani duhet të marrim parasysh rregullimin fizik të nyjeve. Nëse ato vendosen (dhe fuqizohen) në të njëjtin raft, kjo gjithashtu përbën SPoF, dhe një që nuk mund të zgjidhet duke shtuar një raft të dytë.

Nëse kjo është befasuese, merrni parasysh se çfarë do të ndodhte nëse një raft me dy nyje dështon dhe se si nyja e mbijetuar do të dallonte midis atij dhe një dështimi të rrjetit.

Përgjigja e shkurtër është se nuk është e mundur, dhe përsëri kemi të bëjmë me të gjitha problemet në rastin me dy nyje. Ose i mbijetuari:

  • injoron kuorumin dhe përpiqet gabimisht të fillojë restaurimin gjatë ndërprerjeve të rrjetit (aftësia për të përfunduar shkëputjen është një histori tjetër dhe varet nëse PDU është i përfshirë dhe nëse ata ndajnë energjinë me ndonjë nga raftet), ose
  • respekton kuorumin dhe shkëputet para kohe kur nyja e tij homologe dështon

Në çdo rast, dy rafte nuk janë më të mirë se një, dhe nyjet duhet ose të marrin furnizime të pavarura me energji elektrike ose të shpërndahen në tre (ose më shumë, në varësi të numrit të nyjeve që keni).

Dy qendra të dhënash

Në këtë pikë, lexuesit që nuk janë më të urryer ndaj rrezikut mund të dëshirojnë të marrin në konsideratë rikuperimin nga fatkeqësitë. Çfarë ndodh kur një asteroid godet të njëjtën qendër të dhënash me tre nyjet tona të shpërndara në tre rafte të ndryshëm? Natyrisht gjëra të këqija, por në varësi të nevojave tuaja, shtimi i një qendre të dytë të dhënash mund të mos jetë i mjaftueshëm.

Nëse bëhet si duhet, qendra e dytë e të dhënave ju ofron (dhe në mënyrë të arsyeshme) një kopje të përditësuar dhe të qëndrueshme të shërbimeve tuaja dhe të dhënave të tyre. Megjithatë, si në skenarët me dy nyje, me dy rafte, nuk ka informacion të mjaftueshëm në sistem për të siguruar disponueshmërinë maksimale dhe për të parandaluar korrupsionin (ose mospërputhjet e grupeve të të dhënave). Edhe me tre nyje (ose rafte), shpërndarja e tyre në vetëm dy qendra të dhënash e lë sistemin të paaftë për të marrë vendimin e duhur në mënyrë të besueshme në rast të një ngjarjeje (tani shumë më të mundshme) që të dyja palët nuk mund ta komunikojnë.

Kjo nuk do të thotë se një zgjidhje e dyfishtë e qendrës së të dhënave nuk është kurrë e përshtatshme. Kompanitë shpesh duan që një person të jetë i vetëdijshëm përpara se të ndërmarrë hapin e jashtëzakonshëm për të kaluar në një qendër të dhënash rezervë. Vetëm mbani në mend se nëse doni të automatizoni ndërprerjen, ose do t'ju duhet një qendër e tretë e të dhënave që kuorumi të ketë kuptim (qoftë drejtpërdrejt ose përmes një arbitri), ose do të gjeni një mënyrë për të mbyllur në mënyrë të besueshme të gjitha të dhënat qendër.

Burimi: www.habr.com

Shto një koment