Ինչ է Docker Swarm ռեժիմը և ինչպես է այն աշխատում:


Docker Swarm-ի աշխատանքային մեխանիզմը դժվար է հասկանալ: Այնուամենայնիվ, մենք այս հոդվածում ձեզ համար ամեն ինչ բաժանեցինք:

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

Docker Swarm աշխատանքային մեխանիզմը սկզբում դժվար է կոտրել: Բայց մի անհանգստացեք, մենք կխոսենք այս հոդվածում: Այսպիսով, ինչ է Docker Swarm-ը: Ինչու՞ օգտագործել այն: Իսկ ինչպե՞ս է դա աշխատում։

Ինչ է Docker Swarm-ը և ինչպես է այն աշխատում:

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

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

Որպես օպերատոր՝ դուք միայն պետք է շփվեք մենեջերի հանգույցի հետ, որը հրահանգներ է փոխանցում աշխատողներին։ Անփոփոխորեն, աշխատող հանգույցները ստանում են առաջադրանքների բաշխում մենեջերի հանգույցից և համապատասխանաբար կատարում դրանք:

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

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

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

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

Այնուամենայնիվ, դուք չպետք է անհանգստանաք հանգույցների միջև դերերի փոփոխման կամ կլաստերի մեջ վիճակի պահպանման մասին: Docker SwarmKit-ում ներկառուցված Raft Consensus ալգորիթմը (անսարքության հանդուրժող մեթոդ) հոգում է դա:

Ինչու՞ օգտագործել Docker Swarm-ը:

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

Docker Swarm-ն օգտագործելու ևս մեկ պատճառն այն է, որ մի քանի հոսթորդներ միաժամանակ առաջադրանքներ են կատարում կլաստերի մեջ: Սա ի տարբերություն Docker Compose-ի, որը թույլ է տալիս գործարկել մի քանի կոնտեյներ միայն մեկ Docker շարժիչով:

Docker Swarm-ի այս ընդլայնելի հատկանիշը թույլ է տալիս հավելվածներին հետևողականորեն հասանելի լինել զրոյական ուշացումով: Դա նույնիսկ պատճառներից մեկն է, որ ցանկանում եք ընտրել Docker-ը այլ վիրտուալացման գործիքների փոխարեն:

Եվ ինչն ավելին: Ի տարբերություն միայնակ Docker Containers-ի, որտեղ կոնտեյները կանգ է առնում, երբ այն ձախողվում է, Docker Swarm-ը ավտոմատ կերպով վերաբաշխում է առաջադրանքները հասանելի աշխատող հանգույցների միջև, երբ որևէ մեկը ձախողվում է:

Docker Swarm-ը նաև պահում է յուրաքանչյուր նահանգի կրկնօրինակը: Այսպիսով, դուք միշտ կարող եք վերադարձնել երամի նոր կազմաձևերը նախկինի վիճակին: Ասեք, որ նախորդ երամի կառավարչի հանգույցը ձախողվել է. դուք կարող եք սկսել նոր կլաստեր ավելի շատ կառավարիչ հանգույցներով և այն ետ վերադարձնել՝ նախորդի կոնֆիգուրացիան հարմարեցնելու համար:

Կարևոր է նաև նշել, որ կառավարչի և աշխատող հանգույցների միջև փոխազդեցությունն ապահով է:

Docker-ն ունի բազմաթիվ այլընտրանքներ, և ամենամոտներից մեկը Kubernetes-ն է: Այնուամենայնիվ, Docker Swarm-ը հեշտ է օգտագործել և ավելի ավտոմատացված: Օրինակ, եթե ձեզ հարկավոր է ձեռքով հավասարակշռել բեռը որոշ այլ նվագախմբային գործիքներում, ինչպիսիք են Kubernetes-ը, Docker Swarm-ն ունի ավտոմատ բեռների հավասարակշռում, ինչը հեշտացնում է DevOps-ի կյանքը:

The Docker Swarm Architecture

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

Ծառայություններ

Docker Swarm ծառայությունը մանրամասնում է Docker պատկերի կոնֆիգուրացիան, որն աշխատում է բոլոր բեռնարկղերը եռամսով: Այն ներառում է տեղեկատվություն կլաստերի առաջադրանքների մասին: Օրինակ, ծառայությունը կարող է նկարագրել Dockerized SQL սերվերի կարգավորում:

Ծառայություն գործարկելիս այն ստիպում է կառավարչի հանգույցին համաժամեցնել իր կոնֆիգուրացիաների հետ: Այնուհետև կառավարիչ հանգույցը գործարկում է աշխատողների մնացած հանգույցները՝ ծառայության մեջ նշված կարգավորումների հիման վրա:

Docker Swarm-ի ծառայությունները կարող են լինել գլոբալ կամ կրկնվող:

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

Հանգույցներ

Docker Swarm-ի հանգույցը ամբողջ Docker գործարկման ժամանակի օրինակ է, որը նաև հայտնի է որպես Docker շարժիչ: Swarm հանգույցները կարող են լինել ֆիզիկական կամ վիրտուալ մեքենաներ: Մտածեք սա որպես համակարգիչների ցանց, որն իրականացնում է նմանատիպ գործընթացներ (կոնտեյներներ):

Սովորաբար, սակայն, հանգույցները տարածվում են մի քանի համակարգիչների և սերվերների վրա, որոնք աշխատում են Docker շարժիչով իրական կյանքի ծրագրերում: Եվ ինչպես նշվեց ավելի վաղ, հանգույցը կարող է լինել կամ կառավարիչ կամ աշխատող հանգույց՝ կախված դերից:

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

Առաջադրանքներ

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

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

Docker Swarm ընդդեմ Docker Compose. Որո՞նք են տարբերությունները:

Մարդիկ հաճախ օգտագործում են Docker Compose-ը և Docker Swarm-ը փոխադարձաբար: Թեև երկուսն էլ ներառում են մի քանի բեռնարկղերի գործարկում, դրանք տարբեր են:

Մինչ Docker Compose-ը թույլ է տալիս գործարկել բազմաթիվ կոնտեյներներ մեկ հոսթի վրա, Docker Swarm-ը դրանք բաշխում է մի քանի Docker շարժիչների վրա՝ կլաստերի մեջ:

Դուք օգտագործում եք Docker Compose-ը, երբ անհրաժեշտ է ձեր հավելվածի յուրաքանչյուր ծառայության համար առանձին բեռնարկղեր պտտել: Այսպիսով, երբ մի բաղադրիչ խափանում է, այն չի խանգարում մյուսներին: Այնուամենայնիվ, երբ հյուրընկալող մեքենան ձախողվում է, ամբողջ հավելվածը նույնպես խափանում է:

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

Հետևաբար, թեև Docker Compose-ում կարող եք ընդհատում ունենալ, Docker Swarm-ն ապահովում է, որ ձեր հավելվածը շարունակի աշխատել պահեստային սերվերների (աշխատող հանգույցների) օգնությամբ: Այնուամենայնիվ, Docker 1.13-ն աջակցում է Docker Compose-ի տեղակայումը Swarm ռեժիմում՝ օգտագործելով docker stack deploy հրամանը:

Docker Swarm-ն օգնում է ձեզ տեղակայել բարդ հավելվածներ

Containerization-ը գերազանցել է վիրտուալ մեքենաներին շարունակական ինտեգրման և շարունակական առաքման (CI/CD) ծրագրային ապահովման նախագծման մեջ: Հետևաբար, Docker Swarm մեխանիզմի խորամանկությունը հասկանալը լրացուցիչ հմտություն է, եթե ցանկանում եք դառնալ DevOps-ի անգնահատելի փորձագետ:

Դուք հավանաբար գիտեք, թե ինչպես պտտել Docker կոնտեյները կամ նույնիսկ գործարկել Docker Compose-ը մի քանի կոնտեյների համար մեկ հոսթում: Բայց Docker Swarm-ն ավելի հարմար է բարդ ճարտարապետությամբ հավելվածներ տեղակայելու համար: Այն բաժանում է գործընթացները ստորաբաժանումների, բարելավում է գործարկման ժամանակի հասանելիությունը և նվազեցնում կամ նույնիսկ վերացնում պարապուրդի հնարավորությունները: