Երկու հանգույցների կլաստեր - սատանան մանրամասների մեջ է

Հե՜յ Հաբր։ Ձեր ուշադրությանն եմ ներկայացնում հոդվածի թարգմանությունը «Երկու հանգույց - սատանան մանրամասների մեջ է» Էնդրյու Բեքհոֆի կողմից:

Շատ մարդիկ նախընտրում են երկու հանգույցներից բաղկացած կլաստերներ, քանի որ դրանք հայեցակարգային առումով ավելի պարզ են թվում և նաև 33%-ով ավելի էժան են, քան իրենց երեք հանգույցների գործընկերները: Թեև միանգամայն հնարավոր է միավորել երկու հանգույցների լավ կլաստեր, շատ դեպքերում, չմտածված սցենարների պատճառով, նման կոնֆիգուրացիան կստեղծի բազմաթիվ աննկատ խնդիրներ:

Ցանկացած բարձր հասանելիության համակարգ ստեղծելու առաջին քայլը խափանման առանձին կետեր գտնելն ու վերացնելու փորձն է, որոնք հաճախ կրճատվում են որպես SPoF (ձախողման մեկ կետ):

Արժե նկատի ունենալ, որ ցանկացած համակարգում անհնար է վերացնել պարապուրդի բոլոր հնարավոր ռիսկերը: Սա բխում է այն փաստից, որ ռիսկի դեմ տիպիկ պաշտպանությունը որոշակի ավելորդության ներդրումն է, ինչը հանգեցնում է համակարգի բարդության ավելացման և խափանման նոր կետերի առաջացմանը: Հետևաբար, մենք ի սկզբանե գնում ենք փոխզիջման և կենտրոնանում իրադարձությունների վրա, որոնք կապված են ձախողման առանձին կետերի հետ, այլ ոչ թե առնչվող և, հետևաբար, ավելի քիչ հավանական իրադարձությունների շղթաների վրա:

Հաշվի առնելով փոխզիջումները՝ մենք ոչ միայն փնտրում ենք SPoF, այլև հավասարակշռում ենք ռիսկերն ու հետևանքները, ինչի արդյունքում եզրակացությունը, թե ինչն է կարևոր և ինչը՝ ոչ, կարող է տարբերվել յուրաքանչյուր տեղակայման համար:

Ոչ բոլորն են կարիք ունեն այլընտրանքային էլեկտրաէներգիայի մատակարարների՝ անկախ էլեկտրահաղորդման գծերով: Չնայած պարանոյան վճարեց առնվազն մեկ հաճախորդի համար, երբ նրանց մոնիտորինգը հայտնաբերեց անսարք տրանսֆորմատոր: Հաճախորդը հեռախոսազանգեր է կատարել՝ փորձելով ահազանգել էլեկտրաէներգիայի ընկերությանը, քանի դեռ անսարք տրանսֆորմատորը չի պայթել:

Բնական մեկնարկային կետը համակարգում մեկից ավելի հանգույց ունենալն է: Այնուամենայնիվ, նախքան համակարգը կարող է ծառայությունները տեղափոխել գոյատևող հանգույց ձախողումից հետո, այն սովորաբար պետք է ապահովի, որ տեղափոխվող ծառայություններն այլուր ակտիվ չեն:

Երկու հանգույցներից բաղկացած կլաստերի թերություն չկա, եթե ձախողման արդյունքում երկու հանգույցներն էլ սպասարկում են նույն ստատիկ կայքը: Այնուամենայնիվ, ամեն ինչ փոխվում է, եթե արդյունքն այն է, որ երկու կողմերն էլ ինքնուրույն կառավարում են ընդհանուր աշխատանքի հերթը կամ տրամադրում են չհամակարգված գրելու մուտք դեպի կրկնօրինակված տվյալների բազա կամ համօգտագործվող ֆայլային համակարգ:

Հետևաբար, մեկ հանգույցի ձախողման հետևանքով տվյալների կոռուպցիան կանխելու համար մենք հիմնվում ենք մի բանի վրա, որը կոչվում է «տարանջատում» (սուսերամարտ):

Դիսոցիացիայի սկզբունքը

Տարանջատման սկզբունքի հիմքում դրված է այն հարցը, թե արդյոք մրցակցող հանգույցը կարող է տվյալների կոռուպցիա առաջացնել: Այն դեպքում, երբ տվյալների կոռուպցիան հավանական սցենար է, լավ լուծում կլինի հանգույցը մեկուսացնել ինչպես մուտքային հարցումներից, այնպես էլ մշտական ​​պահեստից: Տարանջատման ամենատարածված մոտեցումը անսարք հանգույցների անջատումն է:

Գոյություն ունեն տարանջատման մեթոդների երկու կատեգորիա, որոնք ես կանվանեմ ուղիղ и անուղղակի, բայց դրանք հավասարապես կարելի է անվանել ակտիվ и պասիվ. Ուղղակի մեթոդները ներառում են գոյատևած հասակակիցների գործողությունները, ինչպիսիք են փոխազդեցությունը IPMI (Խելացի պլատֆորմի կառավարման ինտերֆեյս) սարքի կամ iLO (սերվերների կառավարման մեխանիզմ՝ դրանց ֆիզիկական հասանելիության բացակայության դեպքում), մինչդեռ անուղղակի մեթոդները հիմնվում են ձախողման վրա։ հանգույց՝ ինչ-որ կերպ ճանաչելու, որ այն գտնվում է անառողջ վիճակում (կամ գոնե կանխել այլ անդամների ապաքինումը) և ազդանշան տալ ապարատային պահակ ձախողված հանգույցն անջատելու անհրաժեշտության մասին։

Քվորումն օգնում է ինչպես ուղղակի, այնպես էլ անուղղակի մեթոդներ կիրառելիս:

Ուղղակի տարանջատում

Ուղղակի տարանջատման դեպքում մենք կարող ենք օգտագործել քվորումը՝ ցանցի խափանման դեպքում դիսոցման մրցավազքը կանխելու համար:

Քվորումի հայեցակարգով համակարգում բավականաչափ տեղեկատվություն կա (նույնիսկ առանց իր հասակակիցների հետ միանալու), որպեսզի հանգույցները ավտոմատ կերպով իմանան, թե արդյոք նրանք պետք է նախաձեռնեն տարանջատում և/կամ վերականգնում:

Առանց քվորումի, ցանցային պառակտման երկու կողմերն էլ իրավացիորեն կենթադրեն, որ մյուս կողմը մեռած է և կձգտի անջատել մյուսին: Վատագույն դեպքում երկու կողմերին էլ հաջողվում է փակել ամբողջ կլաստերը։ Այլընտրանքային սցենարը մահվան համընկնումն է, հանգույցների անվերջանալի ցիկլը, որը ծնվում է, չի տեսնում իրենց հասակակիցներին, վերագործարկում է դրանք և սկսում է վերականգնումը միայն վերագործարկման համար, երբ նրանց հասակակիցը հետևում է նույն տրամաբանությանը:

Անջատման խնդիրն այն է, որ առավել հաճախ օգտագործվող սարքերը անհասանելի են դառնում նույն ձախողման դեպքերի պատճառով, որոնք մենք ցանկանում ենք թիրախավորել վերականգնման համար: IPMI և iLO քարտերի մեծ մասը տեղադրվում են իրենց կողմից վերահսկվող հոսթների վրա և, ըստ լռելյայն, օգտագործում են նույն ցանցը, ինչը ստիպում է թիրախային հոսթներին հավատալ, որ մյուս հոսթները անցանց են:

Ցավոք սրտի, IPMI և iLo սարքերի գործառնական առանձնահատկությունները հազվադեպ են դիտարկվում սարքավորումների գնման ժամանակ:

Անուղղակի դիսոցացիա

Քվորումը կարևոր է նաև անուղղակի տարանջատումը կառավարելու համար, եթե ճիշտ արվի, ապա քվորումը կարող է թույլ տալ վերապրածներին ենթադրել, որ կորցրած հանգույցները որոշակի ժամանակահատվածից հետո կանցնեն անվտանգ վիճակի:

Այս կոնֆիգուրացիայի դեպքում ապարատային հսկիչ ժմչփը զրոյացվում է ամեն N վայրկյանը մեկ, եթե քվորումը չկորցնի: Եթե ​​ժմչփը (սովորաբար N-ի մի քանի բազմապատիկ) սպառվում է, ապա սարքը կատարում է անբարեխիղճ անջատում (ոչ անջատում):

Այս մոտեցումը շատ արդյունավետ է, բայց առանց քվորումի, կլաստերի ներսում բավարար տեղեկատվություն չկա այն կառավարելու համար: Հեշտ չէ տարբերակել ցանցի խափանումը և գործընկերային հանգույցի ձախողումը: Այս կարևոր պատճառն այն է, որ առանց երկու դեպքերը տարբերելու ունակության, դուք ստիպված եք ընտրել նույն վարքագիծը երկու դեպքում էլ:

Մեկ ռեժիմ ընտրելու խնդիրն այն է, որ չկա գործողության ընթացք, որն առավելագույնի հասցնի հասանելիությունը և կանխի տվյալների կորուստը:

  • Եթե ​​դուք ընտրում եք ենթադրել, որ գործընկերային հանգույցն ակտիվ է, բայց իրականում ձախողվում է, կլաստերը անհարկի կդադարեցնի ծառայությունները, որոնք կաշխատեն՝ փոխհատուցելու ձախողված գործընկերային հանգույցից ծառայությունների կորուստը:
  • Եթե ​​որոշեք ենթադրել, որ հանգույցն անջատված է, բայց դա պարզապես ցանցի խափանում էր, և իրականում հեռավոր հանգույցը գործում է, ապա լավագույն դեպքում դուք գրանցվում եք ստացված տվյալների հավաքածուների հետագա ձեռքով հաշտեցման համար:

Անկախ նրանից, թե ինչ էվրիստիկա եք օգտագործում, աննշան է ձախողում ստեղծելը, որը կամ կհանգեցնի երկու կողմերի ձախողմանը, կամ կհանգեցնի կլաստերի փակմանը գոյատևող հանգույցները: Քվորում չօգտագործելը իսկապես զրկում է կլաստերին իր զինանոցի ամենահզոր գործիքներից մեկից:

Եթե ​​այլ այլընտրանք չկա, լավագույն մոտեցումը հասանելիությունը զոհաբերելն է (այստեղ հեղինակը հղում է անում CAP թեորեմին): Կոռումպացված տվյալների բարձր հասանելիությունը ոչ մեկին չի օգնում, և տարբեր տվյալների հավաքածուների ձեռքով համատեղելը նույնպես զվարճալի չէ:

Քվորում

Քվորումը հիանալի է հնչում, չէ՞:

Միակ բացասական կողմն այն է, որ այն N անդամներով կլաստերում ունենալու համար անհրաժեշտ է կապ ունենալ ձեր մնացած հանգույցների N/2+1-ի միջև։ Ինչը հնարավոր չէ երկու հանգույցների կլաստերում մեկ հանգույցի ձախողումից հետո:

Ինչը, ի վերջո, բերում է մեզ երկու հանգույցների հիմնարար խնդրին.
Քվորումը իմաստ չունի երկու հանգույցների կլաստերներում, և առանց դրա անհնար է հուսալիորեն որոշել գործողության ընթացքը, որը առավելագույնի հասցնում է հասանելիությունը և կանխում տվյալների կորուստը:
Նույնիսկ խաչմերուկի մալուխով միացված երկու հանգույցներից բաղկացած համակարգում անհնար է վերջնականապես տարբերակել ցանցի անջատումը մյուս հանգույցի խափանումից: Մեկ ծայրի անջատումը (որի հավանականությունը, իհարկե, համաչափ է հանգույցների միջև եղած հեռավորությանը) բավական կլինի անվավեր դարձնելու ցանկացած ենթադրություն, որ կապի առողջությունը հավասար է գործընկեր հանգույցի առողջությանը:

Երկու հանգույցից բաղկացած կլաստերի աշխատանք կատարելը

Երբեմն հաճախորդը չի կարող կամ չի ցանկանում գնել երրորդ հանգույց, և մենք ստիպված ենք այլընտրանք փնտրել:

Տարբերակ 1 - Կրկնվող տարանջատման մեթոդ

Հանգույցի iLO կամ IPMI սարքը ներկայացնում է ձախողման կետ, քանի որ եթե այն ձախողվի, վերապրողները չեն կարող օգտագործել այն հանգույցը անվտանգ վիճակի բերելու համար: 3 կամ ավելի հանգույցներից բաղկացած կլաստերում մենք կարող ենք դա մեղմել՝ հաշվարկելով քվորումը և օգտագործելով ապարատային հսկիչ (անուղղակի տարանջատման մեխանիզմ, ինչպես քննարկվել է ավելի վաղ): Երկու հանգույցների դեպքում մենք պետք է փոխարենը օգտագործենք ցանցային էներգիայի բաշխման միավորներ (PDUs):

Անհաջողությունից հետո վերապրողը նախ փորձում է կապվել առաջնային տարանջատման սարքի հետ (ներկառուցված iLO կամ IPMI): Եթե ​​դա հաջողվի, ապա վերականգնումը շարունակվում է սովորականի պես: Միայն եթե iLO/IPMI սարքը ձախողվի, PDU-ն հասանելի է դառնում, եթե մուտքը հաջող է, վերականգնումը կարող է շարունակվել:

Համոզվեք, որ PDU-ն տեղադրեք այլ ցանցի վրա, քան կլաստերային տրաֆիկը, հակառակ դեպքում ցանցի մեկ խափանումը կփակի մուտքը դեպի անջատող սարքեր և արգելափակում է ծառայությունների վերականգնումը:

Այստեղ կարող եք հարցնել. Արդյո՞ք PDU-ն ձախողման միակ կետն է: Ինչի պատասխանը, իհարկե, այդպես է:

Եթե ​​այս ռիսկը նշանակալի է ձեզ համար, դուք միայնակ չեք. միացրեք երկու հանգույցները երկու PDU-ներին և ասեք կլաստերավորման ծրագրակազմին օգտագործել երկուսն էլ հանգույցները միացնելիս և անջատելիս: Կլաստերն այժմ մնում է ակտիվ, եթե PDU-ից մեկը մահանում է, և մյուս PDU-ի կամ IPMI սարքի երկրորդ ձախողումը կպահանջվի վերականգնումն արգելափակելու համար:

Տարբերակ 2 - Արբիտրի ավելացում

Որոշ սցենարներում, թեև տարանջատման կրկնակի մեթոդը տեխնիկապես հնարավոր է, քաղաքականապես դժվար է: Շատ ընկերություններ սիրում են որոշակի տարանջատում ունենալ ադմինիստրատորների և հավելվածների սեփականատերերի միջև, և անվտանգության հետ կապված ցանցային ադմինիստրատորները միշտ չէ, որ ոգևորված են PDU մուտքի կարգավորումները որևէ մեկի հետ կիսելու հարցում:

Այս դեպքում առաջարկվող այլընտրանքը չեզոք երրորդ կողմի ստեղծումն է, որը կարող է լրացնել քվորումի հաշվարկը:

Անհաջողության դեպքում հանգույցը պետք է կարողանա տեսնել իր գործընկերոջ կամ արբիտրի ալիքները՝ ծառայությունները վերականգնելու համար: Արբիտրը ներառում է նաև անջատման ֆունկցիա, եթե երկու հանգույցները կարող են տեսնել արբիտրին, բայց չեն կարող տեսնել միմյանց:

Այս տարբերակը պետք է օգտագործվի անուղղակի տարանջատման մեթոդի հետ միասին, ինչպիսին է ապարատային հսկիչ ժմչփը, որը կազմաձևված է սպանելու մեքենան, եթե այն կորցնի կապը իր գործընկերոջ և արբիտրի հանգույցի հետ: Այսպիսով, վերապրողը կարող է ողջամտորեն ենթադրել, որ իր հասակակից հանգույցը կլինի ապահով վիճակում այն ​​բանից հետո, երբ ապարատային հսկիչ ժամանակաչափը լրանա:

Արբիտրի և երրորդ հանգույցի գործնական տարբերությունն այն է, որ արբիտրը գործելու համար պահանջում է շատ ավելի քիչ ռեսուրսներ և կարող է պոտենցիալ սպասարկել մեկից ավելի կլաստեր:

Տարբերակ 3 - Մարդկային գործոն

Վերջնական մոտեցումն այն է, որ վերապրածները շարունակեն գործարկել այն ծառայությունները, որոնք արդեն իսկ աշխատում էին, բայց չսկսեն նորերը, քանի դեռ խնդիրն ինքնին չի լուծվել (ցանցի վերականգնում, հանգույցի վերագործարկում) կամ անձը պատասխանատվություն չի կրում ձեռքով հաստատել, որ մյուս կողմը մահացել է:

Բոնուսային տարբերակ

Ես նշեցի, որ կարող եք երրորդ հանգույց ավելացնել:

Երկու դարակ

Հանուն փաստարկի, եկեք ձևացնենք, որ ես ձեզ համոզել եմ երրորդ հանգույցի արժանիքների մեջ, այժմ մենք պետք է հաշվի առնենք հանգույցների ֆիզիկական դասավորությունը: Եթե ​​դրանք տեղակայված են (և սնուցվում են) միևնույն դարակում, սա նաև հանդիսանում է SPoF, և այն, որը հնարավոր չէ լուծել՝ ավելացնելով երկրորդ դարակ:

Եթե ​​դա զարմանալի է, մտածեք, թե ինչ տեղի կունենա, եթե երկու հանգույցներով դարակը ձախողվի, և ինչպես գոյատևող հանգույցը կտարբերի այդ և ցանցի խափանումը:

Կարճ պատասխանն այն է, որ դա հնարավոր չէ, և կրկին մենք գործ ունենք երկու հանգույցների դեպքում բոլոր խնդիրների հետ: Կամ վերապրող.

  • անտեսում է քվորումը և սխալ կերպով փորձում է սկսել վերականգնումը ցանցի ընդհատումների ժամանակ (տարանջատումն ավարտելու ունակությունը այլ պատմություն է և կախված է նրանից, թե արդյոք PDU-ն ներգրավված է և արդյոք նրանք կիսում են էներգիան դարակներից որևէ մեկի հետ), կամ
  • հարգում է քվորումը և ժամանակից շուտ անջատվում է, երբ իր գործընկերային հանգույցը ձախողվում է

Ամեն դեպքում, երկու դարակները մեկից լավը չեն, և հանգույցները պետք է կամ ստանան անկախ սնուցման աղբյուրներ, կամ բաշխվեն երեք (կամ ավելի, կախված նրանից, թե քանի հանգույց ունեք) դարակաշարերի վրա:

Երկու տվյալների կենտրոն

Այս պահին ընթերցողները, ովքեր այլևս ռիսկի չեն ենթարկվում, կարող են մտածել աղետի վերականգնման մասին: Ի՞նչ է տեղի ունենում, երբ աստերոիդը հարվածում է նույն տվյալների կենտրոնին, երբ մեր երեք հանգույցները տարածված են երեք տարբեր դարակների վրա: Ակնհայտորեն վատ բաներ են, բայց կախված ձեր կարիքներից, երկրորդ տվյալների կենտրոնի ավելացումը կարող է բավարար չլինել:

Եթե ​​ճիշտ է արվում, երկրորդ տվյալների կենտրոնը տրամադրում է ձեզ (և ողջամիտ կերպով) ձեր ծառայությունների և դրանց տվյալների արդի և հետևողական պատճենը: Այնուամենայնիվ, ինչպես երկու հանգույցների, երկու դարակ սցենարների դեպքում, համակարգում բավարար տեղեկատվություն չկա՝ առավելագույն հասանելիությունն ապահովելու և կոռուպցիան (կամ տվյալների հավաքածուի անհամապատասխանությունները) կանխելու համար: Նույնիսկ երեք հանգույցների (կամ դարակաշարերի) առկայության դեպքում, դրանք բաշխելով միայն երկու տվյալների կենտրոններում, համակարգը չի կարող հուսալիորեն ճիշտ որոշում կայացնել մի (այժմ շատ ավելի հավանական) իրադարձության դեպքում, որը երկու կողմերն էլ չեն կարող հաղորդակցվել:

Սա չի նշանակում, որ տվյալների կրկնակի կենտրոնի լուծումը երբեք հարմար չէ: Ընկերությունները հաճախ ցանկանում են, որ մարդը տեղյակ լինի՝ նախքան կրկնօրինակ տվյալների կենտրոն տեղափոխվելու արտասովոր քայլը: Պարզապես հիշեք, որ եթե ցանկանում եք ավտոմատացնել անջատումը, ապա ձեզ կամ անհրաժեշտ կլինի երրորդ տվյալների կենտրոն, որպեսզի քվորումը իմաստ ունենա (կա՛մ ուղղակիորեն, կա՛մ արբիտրի միջոցով), կամ դուք կգտնեք միջոց՝ հուսալիորեն անջատելու ամբողջ տվյալները: կենտրոն.

Source: www.habr.com

Добавить комментарий