Екі түйіннің кластері - шайтан бөлшектерде

Эй Хабр! Назарларыңызға мақаланың аудармасын ұсынамын «Екі түйін - Ібіліс егжей-тегжейде» Эндрю Бекхоф.

Көптеген адамдар екі түйінді кластерлерді қалайды, өйткені олар тұжырымдамалық тұрғыдан қарапайым болып көрінеді және сонымен қатар үш түйінді әріптестерінен 33% арзанырақ. Екі түйіннің жақсы кластерін біріктіру әбден мүмкін болса да, көп жағдайда ойластырылмаған сценарийлерге байланысты мұндай конфигурация көптеген түсініксіз мәселелерді тудырады.

Кез келген жоғары қолжетімділік жүйесін құрудың бірінші қадамы жиі қысқартылған сәтсіздіктердің жекелеген нүктелерін табу және жоюға әрекет жасау болып табылады. SPoF (бір сәтсіздік нүктесі).

Кез келген жүйеде тоқтап қалудың барлық ықтимал тәуекелдерін жою мүмкін емес екенін есте ұстаған жөн. Бұл тәуекелге қарсы типтік қорғаныс жүйенің күрделілігінің артуына және жаңа сәтсіздік нүктелерінің пайда болуына әкелетін кейбір резервтерді енгізу болып табылатындығынан туындайды. Сондықтан, біз бастапқыда ымыраға келеміз және байланысты және, демек, ықтималдығы азырақ оқиғалар тізбегіне емес, жеке сәтсіздік нүктелеріне байланысты оқиғаларға назар аударамыз.

Сәйкестіктерді ескере отырып, біз тек SPoF іздеп қана қоймаймыз, сонымен қатар тәуекелдер мен салдарды теңестіреміз, нәтижесінде не маңызды және не маңызды емес деген қорытынды әр орналастыру үшін әр түрлі болуы мүмкін.

Барлығына тәуелсіз электр желілері бар балама электр жеткізушілер қажет емес. Паранойя кем дегенде бір тұтынушыға төледі, бірақ олардың мониторингі ақаулы трансформаторды анықтаған кезде. Тұтынушы ақаулы трансформатор жарылғанға дейін электр компаниясына ескертуге тырысып телефон соқты.

Жүйеде бірнеше түйіннің болуы табиғи бастапқы нүкте болып табылады. Дегенмен, жүйе ақаулықтан кейін қызметтерді аман қалған түйінге жылжытпас бұрын, ол әдетте жылжытылатын қызметтер басқа жерде белсенді емес екеніне көз жеткізуі керек.

Сәтсіздік екі түйіннің бірдей статикалық веб-сайтқа қызмет көрсетуіне әкелсе, екі түйінді кластердің кемшілігі жоқ. Дегенмен, нәтиже екі тарап ортақ жұмыс кезегін дербес басқарса немесе қайталанатын дерекқорға немесе ортақ файл жүйесіне келісілмеген жазу рұқсатын берсе, бәрі өзгереді.

Сондықтан, бір түйіннің істен шығуы нәтижесінде деректердің бүлінуін болдырмау үшін - біз аталған нәрсеге сүйенеміз «диссоциация» (семсерлесу).

Диссоциациялану принципі

Диссоциация принципінің негізінде сұрақ тұрады: бәсекелес түйін деректердің бүлінуін тудыруы мүмкін бе? Деректердің бүлінуі ықтимал сценарий болған жағдайда, жақсы шешім түйінді кіріс сұраулардан да, тұрақты сақтаудан да оқшаулау болады. Ажыратудың ең көп тараған тәсілі – ақаулы түйіндерді ажырату.

Диссоциация әдістерінің екі категориясы бар, мен оларды шақырамын тікелей и жанама, бірақ оларды бірдей атауға болады белсенді и пассивті. Тікелей әдістерге IPMI (Интеллектуалды платформаны басқару интерфейсі) немесе iLO (оларға физикалық қол жеткізу болмаған кезде серверлерді басқару механизмі) құрылғысымен өзара әрекеттесу сияқты аман қалған құрдастардың әрекеттері кіреді, ал жанама әдістер сәтсіз әдістерге сүйенеді. түйін қандай да бір түрде оның сау емес күйде екенін (немесе кем дегенде басқа мүшелердің қалпына келуіне кедергі келтіретінін) тануға және сигнал беруге аппараттық бақылаушы сәтсіз түйінді ажырату қажеттілігі туралы.

Кворум тікелей және жанама әдістерді қолданғанда көмектеседі.

Тікелей диссоциация

Тікелей диссоциация жағдайында, желі ақаулығы жағдайында диссоциация жарыстарының алдын алу үшін кворумды пайдалана аламыз.

Кворум концепциясымен жүйеде түйіндер диссоциацияны және/немесе қалпына келтіруді бастау керек пе, жоқ па, соны автоматты түрде білу үшін жүйеде жеткілікті ақпарат бар (тіпті оның құрдастарына қосылмай да).

Кворум болмаса, желілік бөлінудің екі жағы да екінші тарапты өлі деп есептейді және екіншісін ажыратуға тырысады. Ең нашар жағдайда екі тарап кластерді түгел жауып үлгереді. Балама сценарий - өлім матч, уылдырық шашатын түйіндердің шексіз циклі, олардың құрдастарын көрмеу, оларды қайта жүктеу және олардың теңдесі бірдей логикаға сүйенген кезде ғана қайта жүктеу үшін қалпына келтіруді бастау.

Ажырату мәселесі мынада, ең жиі қолданылатын құрылғылар қалпына келтіруге бағытталған бірдей сәтсіздік оқиғаларына байланысты қолжетімсіз болады. Көптеген IPMI және iLO карталары олар басқаратын хосттарға орнатылады және әдепкі бойынша бір желіні пайдаланады, бұл мақсатты хосттардың басқа хосттардың желіден тыс екеніне сенуіне себеп болады.

Өкінішке орай, жабдықты сатып алу кезінде IPMI және iLo құрылғыларының жұмыс мүмкіндіктері сирек ескеріледі.

Жанама диссоциация

Кворум жанама диссоциацияны басқару үшін де маңызды; егер дұрыс орындалса, кворум тірі қалғандарға белгілі бір уақыт кезеңінен кейін жоғалған түйіндер қауіпсіз күйге өтеді деп болжауға мүмкіндік береді.

Бұл конфигурациямен, егер кворум жоғалмаса, аппараттық бақылау таймері N секунд сайын қайта орнатылады. Таймердің (әдетте N санының бірнеше еселігі) мерзімі бітсе, құрылғы қуатсыз өшіру (өшіру емес) орындалады.

Бұл тәсіл өте тиімді, бірақ кворум болмаса, оны басқару үшін кластер ішінде ақпарат жеткіліксіз. Желінің үзілуі мен тең дәрежелі түйіннің істен шығуы арасындағы айырмашылықты айту оңай емес. Мұның маңызды себебі екі жағдайды ажырата алмасаңыз, сіз екі жағдайда да бірдей мінез-құлықты таңдауға мәжбүрсіз.

Бір режимді таңдаудағы мәселе қол жетімділікті барынша арттыратын және деректердің жоғалуын болдырмайтын әрекет жолы жоқ.

  • Бірдей түйін белсенді, бірақ іс жүзінде сәтсіз деп болжауды таңдасаңыз, кластер сәтсіз теңдік түйінінен қызметтерді жоғалтуды өтеу үшін іске қосылатын қызметтерді қажетсіз тоқтатады.
  • Егер сіз түйінді жұмыс істемей қалды деп болжауды шешсеңіз, бірақ бұл жай ғана желідегі ақаулық болды және іс жүзінде қашықтағы түйін жұмыс істейді, ең жақсы жағдайда сіз алынған деректер жиынын болашақта қолмен салыстыруға тіркелесіз.

Қандай эвристиканы пайдалансаңыз да, екі жақтың да сәтсіздікке ұшырауына немесе кластердің аман қалған түйіндерді жабуына әкелетін сәтсіздікті жасау маңызды емес. Кворумды пайдаланбау кластерді өз арсеналындағы ең қуатты құралдардың бірінен айырады.

Егер басқа балама болмаса, ең жақсы әдіс қол жетімділікті құрбан ету болып табылады (мұнда автор CAP теоремасына сілтеме жасайды). Бұзылған деректердің жоғары қолжетімділігі ешкімге көмектеспейді және әртүрлі деректер жиынын қолмен салыстыру да қызық емес.

Кворум

Кворум керемет естіледі, солай ма?

Жалғыз кемшілігі - N мүшелері бар кластерде болуы үшін қалған түйіндердің N/2+1 арасында байланыс болуы керек. Бір түйін сәтсіз болғаннан кейін екі түйінді кластерде бұл мүмкін емес.

Бұл бізді екі түйінмен негізгі мәселеге әкеледі:
Кворум екі түйін кластерінде мағынасы жоқ және онсыз қолжетімділікті барынша арттыратын және деректердің жоғалуын болдырмайтын әрекет бағытын сенімді түрде анықтау мүмкін емес
Тіпті кроссовер кабелімен қосылған екі түйін жүйесінде желінің үзілуі мен басқа түйіннің істен шығуын біржола ажырату мүмкін емес. Бір ұшын өшіру (оның ықтималдығы, әрине, түйіндер арасындағы қашықтыққа пропорционалды) сілтеменің денсаулығы серіктес түйінінің денсаулығына тең деген болжамды жоққа шығару үшін жеткілікті болады.

Екі түйінді кластердің жұмысын жасау

Кейде клиент үшінші түйінді сатып ала алмайды немесе сатып алғысы келмейді, ал біз балама іздеуге мәжбүрміз.

1-нұсқа – Қайталанатын диссоциация әдісі

Түйіннің iLO немесе IPMI құрылғысы сәтсіздік нүктесін білдіреді, себебі ол сәтсіз болса, аман қалғандар оны түйінді қауіпсіз күйге келтіру үшін пайдалана алмайды. 3 немесе одан да көп түйіннен тұратын кластерде біз кворумды есептеу және аппараттық бақылау құралын (бұрын талқыланғандай жанама ажырату механизмі) пайдалану арқылы оны азайта аламыз. Екі түйін жағдайында біз оның орнына желілік қуатты тарату құрылғыларын (PDU) пайдалануымыз керек.

Сәтсіздіктен кейін аман қалған адам алдымен негізгі ажырату құрылғысымен (ендірілген iLO немесе IPMI) байланысуға әрекет жасайды. Бұл сәтті болса, қалпына келтіру әдеттегідей жалғасады. iLO/IPMI құрылғысы сәтсіз болған жағдайда ғана PDU қол жетімді болады; егер кіру сәтті болса, қалпына келтіру жалғасуы мүмкін.

PDU модулін кластер трафигінен басқа желіге орналастыруды ұмытпаңыз, әйтпесе бір желі ақаулығы ажырату құрылғыларының екеуіне де кіруді бұғаттап, қызметтерді қалпына келтіруді блоктайды.

Бұл жерде сіз сұрай аласыз - PDU бір сәтсіздік нүктесі ме? Бұған жауап, әрине, солай.

Бұл қауіп сіз үшін маңызды болса, сіз жалғыз емессіз: екі түйінді екі PDU құрылғысына қосыңыз және кластерлік бағдарламалық құралға түйіндерді қосу және өшіру кезінде екеуін де пайдалануды айтыңыз. Бір PDU өлсе, кластер енді белсенді болып қалады және қалпына келтіруді блоктау үшін басқа PDU немесе IPMI құрылғысының екінші ақаулығы қажет болады.

2-нұсқа – Төреші қосу

Кейбір сценарийлерде қайталанатын диссоциация әдісі техникалық мүмкін болғанымен, саяси тұрғыдан қиын. Көптеген компаниялар әкімшілер мен қолданба иелерінің арасында біршама алшақтық болғанды ​​ұнатады және қауіпсіздікті ескеретін желі әкімшілері PDU қатынасу параметрлерін ешкіммен бөлісуге әрқашан құлшыныс таныта бермейді.

Бұл жағдайда ұсынылатын балама кворумды есептеуді толықтыра алатын бейтарап үшінші тарапты құру болып табылады.

Ақаулық болған жағдайда, қызметтерді қалпына келтіру үшін түйін өз теңінің немесе арбитрдің эфир толқындарын көре алуы керек. Төреші екі түйін де арбитрді көре алса, бірақ бірін-бірі көре алмаса, ажырату функциясын қамтиды.

Бұл опцияны жанама ажырату әдісімен бірге пайдалану керек, мысалы, аппараттық бақылау таймері, ол өзінің тең және төрелік түйініне қосылымын жоғалтқан жағдайда машинаны жоюға теңшелген. Осылайша, аман қалған адам аппараттық бақылау таймерінің мерзімі аяқталғаннан кейін оның теңдік түйіні қауіпсіз күйде болады деп орынды болжауы мүмкін.

Төреші мен үшінші түйіннің практикалық айырмашылығы - төреші жұмыс істеу үшін әлдеқайда аз ресурстарды қажет етеді және бір кластерден көп қызмет ете алады.

3-нұсқа – Адам факторы

Ақырғы тәсіл - аман қалғандар бұрыннан іске қосылған қызметтерді іске қосуды жалғастырады, бірақ мәселе өздігінен шешілмейінше (желі қалпына келтіру, түйінді қайта жүктеу) немесе адам екінші тараптың өлгенін қолмен растау үшін жауапкершілікті өз мойнына алғанша жаңаларын бастамау.

Бонус опциясы

Үшінші түйінді қосуға болатынын айттым ба?

Екі сөре

Дәлел үшін мен сізді үшінші түйіннің артықшылығына сендірдім деп алайық, енді түйіндердің физикалық орналасуын қарастыру керек. Егер олар бір тірекке орналастырылса (және қуаттандырылса), бұл да SPoF болып табылады және оны екінші тірек қосу арқылы шешу мүмкін емес.

Егер бұл таңқаларлық болса, екі түйіні бар тірек сәтсіз болған жағдайда не болатынын және аман қалған түйін желідегі ақауды қалай ажырататынын қарастырыңыз.

Қысқа жауап - бұл мүмкін емес, және біз қайтадан екі түйін жағдайында барлық мәселелермен айналысамыз. Немесе аман қалған:

  • кворумды елемейді және желі үзілістері кезінде қалпына келтіруді бастауға қате әрекет жасайды (диссоциацияны аяқтау мүмкіндігі басқа әңгіме және PDU қосылғанына және олардың кез келген тіректермен қуатты бөлісуіне байланысты) немесе
  • кворумды құрметтейді және оның тең түйіні сәтсіз болғанда өзін мерзімінен бұрын ажыратады

Кез келген жағдайда, екі тірек біреуден жақсы емес және түйіндер тәуелсіз қуат көздерін алуы немесе үш (немесе сізде қанша түйін бар екеніне байланысты одан да көп) тірекке таратылуы керек.

Екі деректер орталығы

Осы сәтте қауіп-қатерге қарсы емес оқырмандар апатты қалпына келтіруді қарастырғысы келуі мүмкін. Астероид бір деректер орталығына үш түрлі тірекке таралған үш түйінмен соқтығысқанда не болады? Әлбетте, жаман нәрселер, бірақ қажеттіліктеріңізге байланысты екінші деректер орталығын қосу жеткіліксіз болуы мүмкін.

Егер дұрыс орындалса, екінші деректер орталығы сізге қызметтеріңіздің және олардың деректерінің жаңартылған және дәйекті көшірмесін береді (және солай). Дегенмен, екі түйінді, екі тірек сценарийлеріндегідей, жүйеде максималды қолжетімділікті қамтамасыз ету және сыбайлас жемқорлықты (немесе деректер жиынтығының сәйкессіздіктерін) болдырмау үшін ақпарат жеткіліксіз. Тіпті үш түйін (немесе сөре) болса да, оларды тек екі деректер орталығына тарату екі тарап байланыса алмайтын (қазір әлдеқайда ықтимал) оқиға болған жағдайда жүйені сенімді түрде дұрыс шешім қабылдай алмайды.

Бұл қос деректер орталығының шешімі ешқашан қолайлы емес дегенді білдірмейді. Компаниялар сақтық көшірме деректер орталығына көшудің ерекше қадамын жасамас бұрын адамның хабардар болуын қалайды. Есіңізде болсын, егер сіз тоқтауды автоматтандыруды қаласаңыз, сізге кворум мағынасын беру үшін үшінші деректер орталығы қажет (тікелей немесе арбитр арқылы) немесе сіз бүкіл деректерді сенімді түрде өшіру жолын табасыз. орталық.

Ақпарат көзі: www.habr.com

пікір қалдыру