Docker Swarm za doseganje visoke razpoložljivosti



Ta blog o Docker Swarm razlaga moč nastavitve grozda Dockerjevih motorjev prek konfiguriranega Docker Swarma za doseganje visoke razpoložljivosti.

Katera je najpomembnejša značilnost katere koli spletne aplikacije? Veliko jih je, ampak zame visoka dostopnost je najpomembnejše. To nam pomaga doseči Docker Swarm! Pomaga, da je aplikacija zelo dostopna.

V mojem prejšnji spletni dnevnik , Razložil sem, kako deluje Docker Compose. Ta spletni dnevnik o Docker Swarmu je nadaljevanje prejšnjega in tukaj so bile razložene prednosti uporabe Docker Swarma za kontejnerje katere koli aplikacije z več vsebniki.





V tem blogu gre samo za aplikacijo Angular, ki bo Docker Swarm’ed.
Opomba : Metoda za zadrževanje aplikacije MEAN Stack je enaka.

Torej, kaj je Docker Swarm?

Docker Swarm je tehnika za ustvarjanje in vzdrževanje grozda Docker motorji . Docker-jeve motorje lahko gostujemo na različnih vozliščih, ta vozlišča, ki so na oddaljenih lokacijah, pa tvorijo Grozd ko je povezan v načinu Swarm.



Zakaj uporabljati Docker Swarm?

Iz že omenjenih razlogov! Doseganje visoka dostopnost brez izpadov je prednostna naloga vsakega ponudnika storitev. Ali bo visoka razpoložljivost navdušila vaše stranke? No, ne bodo navdušeni, če se bodo soočili z zastoji. To ni nič pametnega.

Druge prednosti Docker Swarma

Tako kot številne druge storitve tudi Docker Swarm deluje samodejno uravnoteženje obremenitve za nas. Zato inženirjem DevOps ni treba usmerjati zahtev za obdelavo na druga vozlišča, ko eno ne uspe. Upravitelj grozda bo za nas samodejno izvedel uravnoteženje obremenitve.

Decentraliziran dostop je še ena prednost. Kaj to pomeni? To pomeni, da je do vseh vozlišč enostavno dostopati prek upravitelja. Upravitelj bo vozlišča tudi redno pozival in si zapisoval njegovo zdravstveno stanje / stanje za obvladovanje izpadov. Vendar vozlišča ne morejo dostopati do storitev, ki se izvajajo v drugih vozliščih / upraviteljih, ali jim slediti.



Lahko preverite št. vsebnikov, ki se izvajajo v vozlišču, povečanje št. zabojnikov oz pomanjšati št. na podlagi naše zahteve, in sicer s samo izvajanjem enega samega ukaza.

Tudi po uvedbi aplikacije lahko izdamo tekoče posodobitve in se prepričajte, da je dosežen CI (nenehna integracija). Tekoče posodobitve se izdajo enemu vozlišču za drugim, s čimer se zagotovi, da ni izpadov in se obremenitev porazdeli med druga vozlišča v gruči.

In kaj potem? Da naredim očitno. Začnite z Docker Swarm, če ste že delali na Dockerju ali če želi vaša organizacija vsebovati zanesljivo spletno storitev.

Opomba : Dockerjevi motorji so nameščeni na neodvisnih gostiteljih / strežnikih ali v več VM-jih v gostitelju.

Uvod v način roja

kakšna je razlika med html in xml

Docker Swarm sproži upravitelj, ali naj se izrazim tako, primerek, ki zažene grozd Swarm, postane upravitelj. Ukaz za zagon gruče je:

$ docker swarm init --advertise-addr ip-naslov

Tu se zastavica ‘–advertise-addr’ uporablja za oglaševanje drugim vozliščem, ki se želijo pridružiti gruči. Skupaj z zastavico je treba navesti naslov IP upravitelja. Spodaj je primer posnetka zaslona.

docker init ukaz - docker roj - edureka

Ko se sproži grozd Swarm, se na koncu upravitelja generira žeton. Ta žeton morajo uporabiti druga vozlišča, da se pridružijo grozdu rojev.

Kako je točno? Kopirajte celoten žeton, ustvarjen v upraviteljskem priklopnem mehanizmu, ga prilepite v priklopni stroj vozlišča in ga zaženite. Označeni del zgornjega posnetka zaslona je žeton. Ko je žeton izveden na delovnem vozlišču, bo videti kot spodnji posnetek zaslona.

Vsako vozlišče, ki se pridruži gruči, lahko pozneje poviša v upravitelja. Če želite, da se motor dockerja pridruži kot upravitelj, na koncu upravitelja izvedite spodnji ukaz:

$ docker swarm manager pridružitvenih žetonov

Če želite, da se žeton za vozlišče pridruži gruči, pozneje zaženite spodnji ukaz:

Vozlišče pridružitvenega žetona $ docker swarm

Pojdite naprej in izvedite žeton na vsakem vozlišču, ki ga želite, da se pridružite gruči. Ko je vse opravljeno, lahko z ukazom seznama vozlišč docker preverite, koliko vozlišč se je pridružilo gruči skupaj s svojim stanjem. Ukaz je:

$ docker vozlišče ls

Posnetek zaslona je spodaj:

Ustvarjanje slike Docker za kotno aplikacijo

Če je vse v redu, lahko začnemo s storitvijo Swarm, če je zgrajena Docker Image. Slika Dockerja je mogoče izdelati iz datoteke Docker. Dockerfile, ki se uporablja za izdelavo aplikacij, je spodaj:

OD vozlišča: 6 RUN mkdir -p / usr / src / app WORKDIR / usr / src / app COPY package.json / usr / src / app RUN npm cache clean RUN npm install COPY. / usr / src / app IZPOSTAVLJA 4200 CMD ['npm', 'start']

Datoteka Docker se uporablja za skupno izvajanje nabora ukazov za izdelavo slike Docker po meri iz osnovne slike. Kot lahko vidite, je osnovna slika, ki sem jo uporabil, 'Node: 6'. NodeJS je slika I iz Docker Hub, ki je označena z različico 6.

Nato ustvarim nov imenik Docker v vsebniku in ga spremenim v delovni imenik znotraj vsebnika.

Datoteko 'package.json' kopiram iz svojega lokalnega računalnika v delovni imenik vsebnika. Nato določim ukaza 'RUN npm cache clean' in 'RUN npm install'. npm namestite ukaz prenese različico odvisnosti, omenjeno v datoteki package.json.

Nato kopiram vse projektne kode iz lokalnega računalnika v vsebnik, izpostavljam številko vrat 4200 za dostop do aplikacije Angular v brskalniku in na koncu določim ukaz npm start, ki zajema aplikacijo.

Zdaj, da ustvarite sliko Dockerja na podlagi te datoteke Docker, zaženite spodnji ukaz:

$ docker build -t kotna slika.

Opomba: Slike Docker je treba vgraditi v vsa vozlišča v gruči. Brez tega posod ni mogoče vrteti v drugih Dockerjevih motorjih.

globoko učenje vs strojno učenje vs prepoznavanje vzorcev

Zagon storitve Docker Swarm

Glede na to, da je naša Dockerjeva slika zgrajena, lahko iz te slike zavrtimo posodo. Ampak, naredili bomo nekaj boljšega: iz njega ustvarimo storitev Docker Swarm. Ukaz za ustvarjanje storitve roja je:

$ docker storitev create --name 'Angular-App-Container' -p 4200: 4200 kotna slika

Tu se zastava ‘name’ uporablja za dajanje imena moji storitvi, zastavica ‘p’ pa za izpostavljanje vrat kontejnerja gostiteljskim vratom. V datoteki package.json sem določil vrata vsebnika, na katerih naj gostuje aplikacija Angular. In 4200 v tem ukazu pomaga preslikati vrata vsebnika 4200 na vrata gostitelja 4200. 'angular-image' je ime slike, ki sem jo prej zgradil.

Ne pozabite : Ko ustvarimo storitev, jo lahko gosti na katerem koli priklopnem mehanizmu v gruči. Upravitelj roja se bo odločil, kje ga bo gostil. Ne glede na to, v katerem vozlišču gostuje, je do aplikacije mogoče dostopati na localhost: 4200 iz katerega koli vozlišča, povezanega v gruči.

Kako je to mogoče? Ker Swarm interno izpostavlja številke vrat, tako da jih lahko dostopa vsako drugo vozlišče v gruči. To pomeni, pristanišče št. 4200 na katerem koli vozlišču / upravitelju v gruči bi upodobil aplikacijo Angular.

Kaj pa zdaj? Ali je posoda aktivna?

Če zaženete storitev, lahko preverite, če zaženete ukaz seznama storitev docker. Ampak, lahko traja minuto, da bo posoda nameščena. Spodaj je ukaz:

$ docker storitev ls

Ta ukaz bo pokazal vse storitve, ki jih upravlja grozd Swarm. V našem primeru bi moral prikazati en aktivni vsebnik. Za referenco si oglejte spodnji posnetek zaslona.

Tu 'REPLICAS = 1/1' pomeni, da je v gruči ena sama 'storitev' tega vsebnika. In »MODE = replicirano« pomeni, da je storitev podvojena na vseh vozliščih v gruči.

Da bi ugotovili, na katerem vozlišču / upravitelju gostuje aplikacija, lahko zaženemo ukaz ps docker service ps, ki mu sledi ime vsebnika. Ukaz je:

$ docker storitev ps Angular-App-Container

Posnetek zaslona za isto je spodaj.

Tu so omenjene podrobnosti o vozlišču, na katerem gostuje aplikacija, skupaj z ukazom, ki se uporablja za zagon storitve.

Ukaz ‘docker ps’ osvetli podrobnosti o aktivnem vsebniku. Ukaz je:

$ docker ps

Za referenco si oglejte spodnji posnetek zaslona.

Toda ta ukaz bo deloval samo na upravitelju gruče in vozlišču, kjer je storitev dejansko gostila.

Če želite preveriti, koliko vozlišč se izvaja, zaženite ukaz seznama vozlišč. Ukaz je:

$ docker vozlišče ls

Če želite preveriti vsebnike, ki se izvajajo v določenem gostitelju, zaženite ukaz vozlišče ps. Ukaz je:

$ docker vozlišče ps

Če se spomnite, sem prej omenil, da se storitev trenutno izvaja v ponovljenem načinu MODE. To pomeni, da se storitev podvaja po vseh vozliščih v grozdih. Mislite, da obstaja alternativa?

Vsekakor! Obstaja nekaj, kar se imenuje Global MODE. V tem načinu se storitev tega vsebnika izvaja pri vsakem posameznemu upravitelju v gruči. Ne pozabite ustaviti trenutne storitve / kontejnerja, preden zavrtite drug niz vsebnikov.

Ukaz za to je:

$ docker storitev rm Angular-App-Container

Ukaz za vrtenje vsebnika v globalnem načinu je:

$ docker storitev create --name 'Angular-App-Container' -p 4200: 4200 --mode global angular-image

To bi ustvarilo 3 storitve na treh vozliščih v naši gruči. To lahko preverite z zagonom ukaza seznama storitev docker. Posnetek zaslona tega je spodaj.

Ko se izvrši ukaz storitve docker ps, boste videli nekaj takega:

Kot lahko vidite, piše, da je način repliciran, replike tega vsebnika pa 3. Zdaj prihaja najboljši del tega spletnega dnevnika.

Če želimo, da se med tremi vsebniki izvajata dve kopiji storitev, lahko uporabimo zastavico replik. Oglejte si spodnji ukaz:

$ docker storitev create --name 'Angular-App-Container' -p 4200: 4200 --replicas = 2 angular-image

Opazili boste, da sta ti dve storitvi uravnoteženi med obremenitvami med tremi vozlišči v gruči. Zaženite ukaz procesa storitve docker, da preverite, v katerih vozliščih so aktivni vsebniki. Za referenco si oglejte spodnji posnetek zaslona. Vsebniki so aktivni v enem vozlišču upravitelja in enem vozlišču delavca.

V vozlišču Worker lahko preverite, ali se vsebnik izvaja, tako da izvedete ukaz ‘docker ps’.

Docker Swarm za visoko razpoložljivost

Da bi dejansko preverili, ali je v naši grozdi velika razpoložljivost, moramo izkusiti scenarij, ko se eno od vozlišč spusti, druga vozlišča v gruči pa to nadomestijo. Ta scenarij lahko dosežemo z ročnim zaustavitvijo vsebnika iz enega od vozlišč s tem ukazom:

$ docker stop Angular-App-Container

Zaženite zgornji ukaz na vozlišču: Worker-1, kjer se izvaja vsebnik.Iz upravitelja zaženite ukaz:

$ docker storitev ps Angular-App-Container

Zdaj boste opazili, da se vsebnik zdaj izvaja v vozlišču: Worker-2 in Manager. Vendar je bil izklopljen iz vozlišča: Worker-1. Enako je razvidno iz spodnjega posnetka zaslona.

Takole je Docker visoka razpoložljivost je doseženo. jazn kljub temu, da je vsebnik v Worker-1 neaktiven, lahko aplikacijo upodobite na številki vrat 4200 na tem vozlišču delavca. To je zato, ker je notranje povezan z drugimi vozlišči v gruči in lahko aplikacijo upodobi v brskalniku.

Visoka razpoložljivost po razširitvi storitev

Naj bo to v repliciranem ali globalnem načinu, lahko povečamo število storitev, ki se izvajajo v naši gruči. In tudi po razširitvi bomo lahko ohranili visoko razpoložljivost. Super, kajne?

Toda, ko se vrnemo k svoji točki, poglejmo, kako enostavno je povečati število storitev v naši skupini. Ob predpostavki, da imamo v svoji gruči 2 ali 3 replike, povečamo storitve na 5 tako, da zaženemo en sam ukaz. Ukaz je:

$ docker servisna lestvica Angular-App-Container = 5

Posnetek zaslona tega je spodaj.

Z zagonom ukaza docker service list lahko opazite, da je število replik zdaj 5. In z zagonom ukaza docker service ps skupaj z imenom storitve lahko vidite, kako je 5 storitev uravnoteženo in razporejeno na 3 vozlišča . Ukazi so:

$ docker service ls $ docker service ps Angular-App-Container

In končno, v nastavitvi Docker Swarm, če ne želite, da vaš upravitelj sodeluje v postopku in ga zaseda samo za upravljanje procesov, lahko skrbnika izpraznimo iz gostovanja katere koli aplikacije. Ker tako deluje v svetu, kajne? Menedžerji so namenjeni samo vodenju drugih delavcev. Kakorkoli že, ukaz za to je:

Posodobitev vozlišča $ docker - razpoložljivost odtok Manager-1

kako razvrstiti polje c ++

Če upravitelj zdaj sodeluje v gruči, lahko preverite tako, da zaženete ukaz seznama vozlišč docker in ukaz ps docker service:

$ docker vozlišče ls $ docker storitev ps Angular-App-Container

Zdaj lahko opazite, da so bile storitve vsebnika razdeljene med vozlišča Worker in da je bilo vozlišče Manager dejansko izpraznjeno iz vsebnikov katere koli storitve. Posnetek zaslona je spodaj.

S tem se ta blog na Docker Swarm konča. Upam, da je ta blog pojasnil, kako pomembno je, da se za doseganje visoke razpoložljivosti uporablja način Swarm. Spremljajte več blogov v tej vadnici Docker.

Lahko pa si ogledate tudi spodnji video, da razumete, kako deluje Docker Swarm. Vsi zgoraj razloženi pojmi so zajeti v videu.

Docker Swarm za visoko razpoložljivost | Dockerjeva vadnica | Vadnica za DevOps

Zdaj, ko ste izvedeli za Docker, si oglejte Edureka, zaupanja vredno podjetje za spletno učenje z mrežo več kot 250.000 zadovoljnih učencev, razširjenih po vsem svetu. Ta tečaj za certificiranje Edureka Docker pomaga učencem pridobiti strokovno znanje pri izvajanju Dockerja in njegovem obvladovanju.

Imate vprašanje za nas? Prosimo, omenite to v oddelku za komentarje in se vam bomo javili.