Ako ste kontejnerizirali svoj radni tijek razvoja, složit ćete se da je Docker jedan od najboljih izbora za kontrolu verzija. Međutim, Docker Swarm jedna je od značajki Dockera koja se koristi za orkestriranje složenih aplikacija.

Radni mehanizam Docker Swarma isprva može biti teško razbiti. Ali bez brige, raščlanit ćemo to u ovom članku. Dakle, što je Docker Swarm? Zašto ga koristiti? I kako radi?

Što je Docker Swarm i kako radi?

Docker Swarm odnosi se na grupu Docker hostova (računala) umreženih kao klaster za isporuku određenih zadataka. Svaki Docker host u ovom klasteru je čvor, koji se naziva i radni čvor.

Kako biste osigurali učinkovitu raspodjelu zadataka, potreban vam je čvor upravitelja. U idealnom slučaju, inicijalizacija načina rada Docker Swarm počinje s čvorom upravitelja, a sljedeći čvorovi postaju radnici.

Kao operater, trebate samo komunicirati s upravljačkim čvorom, koji prosljeđuje upute radnicima. Uvijek radnički čvorovi primaju dodjelu zadataka od upraviteljskog čvora i izvršavaju ih u skladu s tim.

instagram viewer

Međutim, upravljački čvor također može sudjelovati u izvršavanju zadatka (kao radnik) ili direktno upravljati licem. Možete spriječiti raspoređivanje zadataka na upravitelju prebacivanjem njegovog stanja iz aktivan do odvoditi. Ali vaša odluka da dodijelite ovu dvostruku funkciju može ovisiti o nekoliko čimbenika. U biti, prije nego što to učinite, želite biti sigurni da ima dovoljno resursa za obradu nekoliko uloga.

Čvorovi ne uspijevaju. Dakle, upravljački čvor aktivno nadzire stanje svakog radnog čvora i aktivira mehanizam otporan na kvarove za ponovno planiranje zadatka s neuspjelog čvora na drugi.

Ali što ako se i upraviteljski čvor sruši? Zanimljivo, roj nastavlja trčati. Jedina zamka je da više nećete moći komunicirati s čvorom upravitelja kako biste kontrolirali klaster.

Uobičajeni sigurni pristup za sprječavanje ovoga je dodjeljivanje uloge upravitelja mnogim čvorovima (Docker preporučuje najviše sedam po klasteru). Zatim među njima možete odabrati čvor primarnog upravitelja. Kada se primarni upravitelj sruši, jedan od pripravnih upravitelja preuzima tu ulogu.

Međutim, ne morate brinuti o izmjeni uloga između čvorova ili održavanju stanja u klasteru. Algoritam konsenzusa splavi (metoda otporna na greške) ugrađen u Docker SwarmKit brine o tome.

Zašto koristiti Docker Swarm?

Docker Swarm je praktičan za implementaciju složenih aplikacija s visokim izgledima za skalabilnost. Jedan od njegovih primarnih slučajeva upotrebe je decentralizacija mikroservisa. Svaka mikrousluga tada dijeli sličan spremnik s onima na drugim radnim čvorovima.

Još jedan razlog za korištenje Docker Swarma je taj što više hostova istovremeno izvodi zadatke u klasteru. To je u suprotnosti s Docker Composeom, koji vam omogućuje samo pokretanje više spremnika na jednom Docker motoru.

Ovaj skalabilni atribut Docker Swarma omogućuje aplikacijama da budu dosljedno dostupne s nultom latencijom. To je čak jedan od razloga zašto to želite odaberite Docker umjesto drugih virtualizacijskih alata.

I što još? Za razliku od pojedinačnih Docker kontejnera, gdje se spremnik zaustavlja kada zakaže, Docker Swarm automatski redistribuira zadatke među dostupnim radnim čvorovima svaki put kada jedan zakaže.

Docker Swarm također čuva sigurnosnu kopiju svakog stanja. Tako da uvijek možete vratiti nove konfiguracije roja u stanje prijašnjeg. Recimo da upravljački čvor na prethodnom roju ne uspije; možete pokrenuti novi klaster s više čvorova upravitelja i vratiti ga kako biste prilagodili konfiguraciju prethodnog.

Također je važno spomenuti da je interakcija između čvora upravitelja i čvorova radnika sigurna.

Docker ima mnogo alternativa, a jedan od najbližih je Kubernetes. Međutim, Docker Swarm je jednostavan za korištenje i više je automatiziran. Na primjer, dok ćete možda trebati ručno balansirati opterećenje u nekim drugim alatima za orkestraciju kao što je Kubernetes, Docker Swarm ima automatsko balansiranje opterećenja, što DevOps-u olakšava život.

Docker Swarm arhitektura

Arhitektura Docker Swarm vrti se oko usluga, čvorova i zadataka. Međutim, svaki ima svoju ulogu u uspješnom vođenju stoga.

Usluge

Usluga Docker Swarm detaljno opisuje konfiguraciju Docker slike koja pokreće sve spremnike u roju. Sadrži informacije o zadacima u klasteru. Na primjer, usluga može opisati a Postavljanje dockeriziranog SQL poslužitelja.

Kada pokrenete uslugu, ona prisiljava čvor upravitelja da se sinkronizira s njegovim konfiguracijama. Upravljački čvor zatim pokreće ostale radne čvorove na temelju navedenih postavki u usluzi.

Usluge u Docker Swarmu mogu biti globalne ili replicirane.

Razlika između njih je u tome što dok globalne usluge definiraju samo jedan zadatak za sve čvorove u klasteru, replicirane usluge određuju broj zadataka po čvoru.

Čvorovi

Čvor u Docker Swarmu je instanca cijelog Docker runtimea, također poznatog kao Docker engine. Swarm čvorovi mogu biti fizički ili virtualni strojevi. Zamislite ovo kao mrežu računala koja pokreću slične procese (spremnike).

Međutim, obično se čvorovi protežu na nekoliko računala i poslužitelja koji pokreću Docker mehanizam u stvarnim aplikacijama. I kao što je ranije spomenuto, čvor može biti upravitelj ili radnički čvor, ovisno o ulozi.

Čvor upravitelja sluša otkucaje srca roja i kontrolira radničke čvorove koji izvršavaju zadatke koje im je dodijelio čvor upravitelja. Kao što je ranije rečeno, možete imati više od jednog upraviteljskog čvora u roju. Ali u idealnom slučaju, pokušajte ograničiti broj na manje od sedam, jer bi dodavanje previše čvorova upravitelja moglo smanjiti performanse roja.

Zadaci

Zadatak definira posao dodijeljen svakom čvoru u Docker Swarmu. U pozadini, raspoređivanje zadataka u Docker Swarmu počinje kada orkestrator kreira zadatke i proslijedi ih planeru, koji instancira spremnik za svaki zadatak.

Čvor upravitelja zatim koristi planer za dodjelu i preraspodjelu zadataka čvorovima prema potrebi i navedenim u usluzi Docker.

Docker Swarm vs. Docker Compose: Koje su razlike?

Ljudi često koriste Docker Compose i Docker Swarm naizmjenično. Iako oba uključuju pokretanje više spremnika, razlikuju se.

Dok vam Docker Compose omogućuje pokretanje više spremnika na jednom hostu, Docker Swarm ih distribuira na nekoliko Docker motora u klasteru.

Docker Compose koristite kada trebate pokrenuti zasebne spremnike za svaku uslugu u svojoj aplikaciji. Dakle, kada se jedna komponenta sruši, to ne ometa druge. Međutim, kada glavno računalo zakaže, cijela se aplikacija također ruši.

Međutim, Docker Swarm vam pomaže pokrenuti mnoge spremnike na klasteriranim čvorovima. Dakle, svaka komponenta vaše aplikacije nalazi se na nekoliko čvorova. A kada se jedan čvor koji upravlja komponentom aplikacije sruši, roj svoj zadatak dodjeljuje drugom čvoru unutar klastera i ponovno raspoređuje zadatke koji se izvode, sprječavajući prekid rada.

Stoga, iako biste mogli imati zastoj na Docker Composeu, Docker Swarm osigurava da vaša aplikacija nastavi raditi uz pomoć rezervnih poslužitelja (radni čvorovi). Međutim, Docker 1.13 podržava implementaciju Docker Compose u Swarm način rada pomoću docker stack implementacija naredba.

Docker Swarm vam pomaže implementirati složene aplikacije

Kontejnerizacija je nadmašila virtualne strojeve u dizajnu kontinuirane integracije i kontinuirane isporuke (CI/CD). Stoga je razumijevanje sitnica Docker Swarm mehanizma plus vještina ako želite postati neprocjenjivi stručnjak za DevOps.

Vjerojatno znate kako pokrenuti Docker spremnik ili čak pokrenuti Docker Compose za više spremnika na jednom hostu. Ali Docker Swarm je praktičniji za implementaciju aplikacija sa složenom arhitekturom. Rastavlja procese u jedinice, poboljšava pristup vremenu izvođenja i smanjuje ili čak uklanja šanse zastoja.