Jei kūrimo darbo eigą išdėstėte konteineriuose, sutiksite, kad „Docker“ yra vienas geriausių versijų valdymo variantų. Tačiau „Docker Swarm“ yra viena iš „Docker“ funkcijų, naudojamų sudėtingoms programoms organizuoti.

„Docker Swarm“ veikimo mechanizmą iš pradžių gali būti sunku nulaužti. Bet nesijaudinkite, mes išskaidysime tai šiame straipsnyje. Taigi, kas yra Docker Swarm? Kodėl jį naudoti? Ir kaip tai veikia?

Kas yra Docker Swarm ir kaip jis veikia?

„Docker Swarm“ reiškia „Docker“ pagrindinių kompiuterių (kompiuterių), sujungtų į tinklą kaip klasterį, grupę, skirtą konkrečioms užduotims atlikti. Kiekvienas Docker pagrindinis kompiuteris šiame klasteryje yra mazgas, dar vadinamas darbuotojo mazgu.

Norint užtikrinti efektyvų užduočių paskirstymą, jums reikia vadovo mazgo. Idealiu atveju Docker Swarm režimo inicijavimas prasideda nuo valdytojo mazgo, o paskesni mazgai tampa darbuotojais.

Kaip operatoriui, jums tereikia bendrauti su vadovo mazgu, kuris perduoda nurodymus darbuotojams. Darbuotojo mazgai visada gauna užduočių paskirstymą iš vadovo mazgo ir atitinkamai jas vykdo.

Tačiau vadovo mazgas taip pat gali dalyvauti vykdant užduotį (kaip darbuotojas) arba tiesiogiai valdant. Galite užkirsti kelią užduočių planavimui valdytojui, perjungdami jo būseną aktyvus į nusausinti. Tačiau jūsų sprendimas priskirti šią dvigubą funkciją gali priklausyti nuo kelių veiksnių. Iš esmės, prieš tai darydami norite būti tikri, kad jis turi pakankamai išteklių, kad galėtų atlikti kelis vaidmenis.

Mazgai nepavyksta. Taigi valdytojo mazgas aktyviai stebi kiekvieno darbuotojo mazgo būseną ir suaktyvina gedimams atsparų mechanizmą, kad perplanuotų užduotį iš nepavykusio mazgo į kitą.

Bet ką daryti, jei sugenda ir valdytojo mazgas? Įdomu tai, kad spiečius vis bėga. Vienintelė klaida yra ta, kad nebegalėsite susisiekti su valdytojo mazgu, kad galėtumėte valdyti grupę.

Įprastas būdas to išvengti yra priskirti valdytojo vaidmenį daugeliui mazgų („Docker“ rekomenduoja ne daugiau kaip septynis viename klasteryje). Tada iš jų galite pasirinkti pagrindinį valdytojo mazgą. Kai sugenda pagrindinis vadybininkas, vienas iš budėjimo režimo valdytojų perima vaidmenį.

Tačiau jums nereikia jaudintis dėl vaidmenų perjungimo tarp mazgų ar būsenos priežiūros klasteryje. Tuo rūpinasi „Docker SwarmKit“ integruotas plausto sutarimo algoritmas (gedimams atsparus metodas).

Kodėl verta naudoti „Docker Swarm“?

„Docker Swarm“ patogu diegti sudėtingas programas, turinčias didelį mastelio keitimo potencialą. Vienas iš pagrindinių naudojimo atvejų yra mikropaslaugų decentralizavimas. Tada kiekviena mikro paslauga bendrina panašų konteinerį su esančiais kituose darbuotojo mazguose.

Kita priežastis naudoti „Docker Swarm“ yra ta, kad keli pagrindiniai kompiuteriai vienu metu vykdo užduotis klasteryje. Tai skiriasi nuo „Docker Compose“, kuri leidžia paleisti kelis konteinerius tik viename „Docker“ variklyje.

Šis keičiamo dydžio „Docker Swarm“ atributas leidžia programoms būti nuolat pasiekiamoms be nulinės delsos. Tai netgi viena iš priežasčių, kodėl to norisi pasirinkite Docker, o ne kitus virtualizacijos įrankius.

Ir kas daugiau? Skirtingai nuo pavienių „Docker Containers“, kur konteineris sustoja, kai sugenda, „Docker Swarm“ automatiškai perskirsto užduotis tarp galimų darbuotojų mazgų, kai tik vienas sugenda.

„Docker Swarm“ taip pat saugo kiekvienos būsenos atsarginę kopiją. Taigi visada galite grąžinti naujas spiečių konfigūracijas į buvusias. Tarkime, kad ankstesnio spiečiaus valdytojo mazgas sugenda; galite pradėti naują klasterį su daugiau valdytojo mazgų ir grąžinti jį, kad pritaikytumėte ankstesnės konfigūraciją.

Taip pat svarbu paminėti, kad sąveika tarp vadovo mazgo ir darbuotojo mazgų yra saugi.

Docker turi daug alternatyvų, o vienas artimiausių yra Kubernetes. Tačiau „Docker Swarm“ yra paprasta naudoti ir labiau automatizuota. Pavyzdžiui, kai kuriuose kituose orkestravimo įrankiuose, pvz., „Kubernetes“ gali reikėti subalansuoti apkrovą rankiniu būdu, „Docker Swarm“ turi automatinį apkrovos balansavimą, kuris palengvina „DevOps“ gyvenimą.

„Docker Swarm“ architektūra

„Docker Swarm“ architektūra sukasi aplink paslaugas, mazgus ir užduotis. Tačiau kiekvienas iš jų turi atlikti savo vaidmenį sėkmingai valdant krūvą.

Paslaugos

„Docker Swarm“ paslauga išsamiai apibūdina „Docker“ vaizdo konfigūraciją, kuri paleidžia visus spiečiaus konteinerius. Tai apima informaciją apie užduotis grupėje. Pavyzdžiui, paslauga gali apibūdinti a Dockerizuotas SQL serverio sąranka.

Kai paleidžiate paslaugą, ji verčia valdytojo mazgą sinchronizuoti su jo konfigūracijomis. Tada valdytojo mazgas paleidžia likusius darbuotojo mazgus pagal nurodytus paslaugos parametrus.

„Docker Swarm“ paslaugos gali būti pasaulinės arba kartotinės.

Skirtumas tarp jų yra tas, kad nors pasaulinės paslaugos apibrėžia tik vieną užduotį visiems klasterio mazgams, kartotinės paslaugos nurodo užduočių skaičių viename mazge.

Mazgai

„Docker Swarm“ mazgas yra viso „Docker“ vykdymo laiko, dar žinomo kaip „Docker“ variklis, pavyzdys. Spiečio mazgai gali būti fizinės arba virtualios mašinos. Pagalvokite apie tai kaip apie kompiuterių tinklą, kuriame vykdomi panašūs procesai (konteineriai).

Tačiau paprastai mazgai apima kelis kompiuterius ir serverius, kuriuose veikia Docker variklis realiose programose. Ir, kaip minėta anksčiau, mazgas gali būti vadovo arba darbuotojo mazgas, atsižvelgiant į vaidmenį.

Vadovo mazgas klauso spiečiaus širdies plakimo ir kontroliuoja darbuotojų mazgus, kurie vykdo vadovo mazgo jiems priskirtas užduotis. Kaip minėta anksčiau, būryje galite turėti daugiau nei vieną valdytojo mazgą. Tačiau idealiu atveju pabandykite apriboti skaičių iki mažiau nei septyni, nes pridėjus per daug valdytojo mazgų gali sumažėti spiečių našumas.

Užduotys

Užduotis apibrėžia kiekvienam „Docker Swarm“ mazgui priskirtą darbą. Fone užduočių planavimas „Docker Swarm“ prasideda, kai orkestrantas sukuria užduotis ir perduoda jas planuokliui, kuris kiekvienai užduočiai sukuria konteinerį.

Tada valdytojo mazgas naudoja planavimo priemonę, kad priskirtų ir iš naujo priskirtų užduotis mazgams, kaip reikalaujama ir nurodyta Docker tarnyboje.

Docker Swarm vs. „Docker Compose“: kokie yra skirtumai?

Žmonės dažnai naudoja „Docker Compose“ ir „Docker Swarm“ pakaitomis. Nors abu apima kelis konteinerius, jie skiriasi.

Nors „Docker Compose“ leidžia paleisti kelis konteinerius viename pagrindiniame kompiuteryje, „Docker Swarm“ paskirsto juos keliuose „Docker“ varikliuose grupėje.

Naudojate „Docker Compose“, kai reikia sukurti atskirus konteinerius kiekvienai programos paslaugai. Taigi, kai vienas komponentas sugenda, jis netrukdo kitiems. Tačiau sugedus pagrindiniam kompiuteriui, sugenda ir visa programa.

Tačiau „Docker Swarm“ padeda paleisti daugybę konteinerių sugrupuotuose mazguose. Taigi, kiekvienas programos komponentas yra keliuose mazguose. Ir kai vienas mazgas, tvarkantis programos komponentą, sugenda, spiečius paskiria savo užduotį kitam klasterio mazgui ir iš naujo suplanuoja vykdomas užduotis, taip užkertant kelią prastovoms.

Taigi, nors „Docker Compose“ gali trūkti, „Docker Swarm“ užtikrina, kad jūsų programa ir toliau veiktų naudodama atsarginius serverius (darbuotojo mazgus). Tačiau „Docker 1.13“ palaiko „Docker Compose“ diegimą „Swarm“ režimu naudojant dokerių kamino diegimas komandą.

„Docker Swarm“ padeda įdiegti sudėtingas programas

Konteinerių kūrimas nugalėjo virtualias mašinas nuolatinio integravimo ir nuolatinio pristatymo (CI / CD) programinės įrangos projektavimo srityje. Todėl norint tapti neįkainojamu „DevOps“ ekspertu, „Docker Swarm“ mechanizmo supratimas yra puikus įgūdis.

Tikriausiai žinote, kaip sukurti „Docker“ konteinerį ar net paleisti „Docker Compose“ keliems konteineriams viename pagrindiniame kompiuteryje. Tačiau „Docker Swarm“ yra patogiau diegti sudėtingos architektūros programas. Jis suskaido procesus į vienetus, pagerina prieigą prie vykdymo laiko ir sumažina arba net pašalina prastovų tikimybę.