Če ste svoj razvojni tok delali v kontejnerje, se strinjate, da je Docker ena najboljših izbir za nadzor različic. Vendar pa je Docker Swarm ena od Dockerjevih funkcij, ki se uporablja za orkestriranje kompleksnih aplikacij.

Delovni mehanizem Docker Swarm je sprva težko razbiti. A brez skrbi, v tem članku ga bomo razčlenili. Kaj je torej Docker Swarm? Zakaj ga uporabljati? In kako deluje?

Kaj je Docker Swarm in kako deluje?

Docker Swarm se nanaša na skupino gostiteljev (računalnikov) Docker, povezanih v gručo za izvajanje določenih nalog. Vsak gostitelj Dockerja v tej gruči je vozlišče, imenovano tudi delovno vozlišče.

Da bi zagotovili učinkovito porazdelitev nalog, potrebujete upravljalno vozlišče. V idealnem primeru se inicializacija načina Docker Swarm začne z vozliščem upravitelja, naslednja vozlišča pa postanejo delavca.

Kot operater morate samo komunicirati z vozliščem upravitelja, ki posreduje navodila delavcem. Delavska vozlišča vedno prejmejo dodelitev nalog od upravljavskega vozlišča in jih ustrezno izvedejo.

instagram viewer

Vendar pa lahko upravljalno vozlišče sodeluje tudi pri izvajanju nalog (kot delavec) ali neposredno upravlja obraz. Načrtovanje opravil v upravitelju lahko preprečite tako, da preklopite njegovo stanje iz aktivna do odtok. Toda vaša odločitev o dodelitvi te dvojne funkcije je lahko odvisna od več dejavnikov. V bistvu se morate prepričati, da ima dovolj sredstev za obravnavanje več vlog, preden to storite.

Vozlišča ne uspejo. Tako upravljalno vozlišče aktivno spremlja stanje vsakega delavskega vozlišča in aktivira mehanizem, ki je toleranten na napake, za prerazporeditev naloge iz okvarjenega vozlišča v drugo.

Kaj pa, če se zruši tudi vozlišče upravitelja? Zanimivo je, da roj kar naprej teče. Edina past je, da ne boste mogli več komunicirati z vozliščem upravitelja za nadzor gruče.

Običajen varen pristop za preprečevanje tega je dodelitev vloge upravitelja številnim vozliščem (Docker priporoča največ sedem na gručo). Nato lahko med njimi izberete vozlišče primarnega upravitelja. Ko se primarni upravitelj zruši, vlogo prevzame eden od rezervnih upraviteljev.

Vendar vam ni treba skrbeti za zamenjavo vlog med vozlišči ali vzdrževanje stanja v gruči. Za to poskrbi konsenzni algoritem raft (metoda, odporna na napake), ki je vgrajen v Docker SwarmKit.

Zakaj uporabljati Docker Swarm?

Docker Swarm je priročen za uvajanje kompleksnih aplikacij z visoko možnostjo razširljivosti. Eden njegovih primarnih primerov uporabe je decentralizacija mikrostoritev. Vsaka mikrostoritev si nato deli podoben vsebnik s tistimi v drugih delovnih vozliščih.

Drug razlog za uporabo Docker Swarm je, da več gostiteljev hkrati izvaja naloge v gruči. To je v nasprotju z Docker Compose, ki vam omogoča samo izvajanje več vsebnikov na enem Dockerjevem mehanizmu.

Ta razširljivi atribut Docker Swarm omogoča, da so aplikacije dosledno na voljo z ničelno zakasnitvijo. To je celo eden od razlogov, da želite izberite Docker namesto drugih orodij za virtualizacijo.

In kaj je več? Za razliko od posameznih vsebnikov Docker, kjer se vsebnik ustavi, ko odpove, Docker Swarm samodejno prerazporedi naloge med razpoložljivimi delovnimi vozlišči, kadar koli odpove eno.

Docker Swarm hrani tudi varnostno kopijo vsakega stanja. Tako lahko nove konfiguracije roja vedno povrnete v stanje prejšnjega. Recimo, da upraviteljsko vozlišče na prejšnjem roju odpove; lahko začnete novo gručo z več vozlišči upravitelja in jo razveljavite, da prilagodite konfiguracijo prejšnje.

Pomembno je tudi omeniti, da je interakcija med vozliščem upravitelja in vozlišči delavcev varna.

Docker ima veliko alternativ, eden najbližjih pa je Kubernetes. Vendar je Docker Swarm enostaven za uporabo in bolj avtomatiziran. Na primer, medtem ko boste morda morali ročno uravnotežiti obremenitev v nekaterih drugih orodjih za orkestracijo, kot je Kubernetes, ima Docker Swarm samodejno uravnovešanje obremenitve, kar olajša življenje za DevOps.

Arhitektura Docker Swarm

Arhitektura Docker Swarm se vrti okoli storitev, vozlišč in nalog. Vendar ima vsak svojo vlogo pri uspešnem vodenju sklada.

Storitve

Storitev Docker Swarm podrobno opisuje konfiguracijo slike Docker, ki poganja vse vsebnike v roju. Vključuje informacije o nalogah v gruči. Na primer, storitev lahko opisuje a Dockerizirana nastavitev strežnika SQL.

Ko zaženete storitev, ta prisili vozlišče upravitelja, da se sinhronizira z njegovimi konfiguracijami. Vozlišče upravitelja nato zažene preostala delovna vozlišča na podlagi navedenih nastavitev v storitvi.

Storitve v Docker Swarm so lahko globalne ali podvojene.

Razlika med njima je v tem, da medtem ko globalne storitve definirajo samo eno nalogo za vsa vozlišča v gruči, podvojene storitve določajo število nalog na vozlišče.

Vozlišča

Vozlišče v Docker Swarm je primerek celotnega izvajalnega okolja Docker, znanega tudi kot motor Docker. Vozlišča roja so lahko fizični ali virtualni stroji. Predstavljajte si to kot omrežje računalnikov, ki izvajajo podobne procese (vsebnike).

Običajno pa vozlišča obsegajo več računalnikov in strežnikov, ki poganjajo motor Docker v aplikacijah v resničnem življenju. In kot smo že omenili, je lahko vozlišče upraviteljsko ali delavsko vozlišče, odvisno od vloge.

Upravljalno vozlišče posluša srčni utrip roja in nadzoruje delavska vozlišča, ki izvajajo naloge, ki jim jih dodeli upravljalno vozlišče. Kot smo že omenili, imate lahko v roju več kot eno vozlišče upravitelja. Toda v idealnem primeru poskusite število omejiti na manj kot sedem, saj lahko dodajanje preveč upravljalnih vozlišč zmanjša zmogljivost roja.

Naloge

Naloga definira delo, dodeljeno vsakemu vozlišču v Docker Swarmu. V ozadju se razporejanje opravil v Docker Swarm začne, ko orkestrator ustvari opravila in jih posreduje razporejevalniku, ki ustvari vsebnik za vsako opravilo.

Vozlišče upravitelja nato uporabi razporejevalnik za dodeljevanje in ponovno dodeljevanje nalog vozliščem, kot je zahtevano in določeno v storitvi Docker.

Docker Swarm vs. Docker Compose: kakšne so razlike?

Ljudje pogosto uporabljajo izmenično Docker Compose in Docker Swarm. Čeprav oba vključujeta izvajanje več vsebnikov, sta različna.

Medtem ko vam Docker Compose omogoča zagon več vsebnikov na enem gostitelju, jih Docker Swarm razdeli po več Dockerjevih motorjih v gruči.

Docker Compose uporabljate, ko morate zavrteti ločene vsebnike za vsako storitev v vaši aplikaciji. Tako, ko se ena komponenta zruši, ne moti drugih. Ko pa gostiteljski stroj odpove, se zruši tudi celotna aplikacija.

Docker Swarm pa vam pomaga zagnati številne vsebnike na vozliščih v gručah. Vsaka komponenta vaše aplikacije je torej na več vozliščih. In ko se eno vozlišče, ki obravnava komponento aplikacije, zruši, roj svojo nalogo dodeli drugemu vozlišču znotraj gruče in prerazporedi izvajajoče naloge, s čimer prepreči izpade.

Torej, medtem ko imate morda izpade na Docker Compose, Docker Swarm zagotavlja, da vaša aplikacija še naprej deluje s pomočjo rezervnih strežnikov (delovnih vozlišč). Vendar pa Docker 1.13 podpira uvajanje Docker Compose v način Swarm z uporabo uvedba sklada docker ukaz.

Docker Swarm vam pomaga uvesti zapletene aplikacije

Kontejnerizacija je premagala virtualne stroje pri načrtovanju programske opreme za stalno integracijo in neprekinjeno dostavo (CI/CD). Zato je razumevanje potankosti mehanizma Docker Swarm dodatna veščina, če želite postati neprecenljiv strokovnjak za DevOps.

Verjetno veste, kako zavrteti vsebnik Docker ali celo zagnati Docker Compose za več vsebnikov v enem gostitelju. Toda Docker Swarm je bolj priročen za uvajanje aplikacij s kompleksno arhitekturo. Procese razdeli na enote, izboljša dostop do časa izvajanja in zmanjša ali celo odpravi možnosti izpadov.