Docker Swarm za orkestraciju kontejnera

Sve o Docker Swarmu i kako on upravlja i orkestrira sve spremnike u klasteru.


Što je Docker Swarm?

Docker swarm je način rukovanja grupom Docker motora, otuda i naziv Swarm. Grozd Dockerovih domaćina pokreće se u načinu roj koji se sastoji od menadžera i radnika. Primjeri motornih uređaja koji sudjeluju u roju nazivaju se čvorovi.

Uvođenje roja na razini proizvodnje sastoji se od docker čvorova raspoređenih na više poslužitelja.

Zašto ga koristiti? – Orkestracija kontejnera

Kada radite u proizvodnom okruženju, 100 stotina docker spremnika pokrenut će više aplikacija u njemu. Upravljanje svim tim spremnicima može biti velika bol za sve DevOps inženjere; ovdje vam pomaže Docker Swarm. S lakoćom upravlja i orkestrira klaster koji pokreće više docker spremnika.

Ispod su neke od njegovih karakteristika:

  • Visoka dostupnost – ima za cilj da nema prekida rada ili prekida rada.
  • Balansiranje opterećenja – automatski raspoređuje resurse i zahtjeve na druge čvorove u klasteru ako bilo koji čvor ne uspije.
  • Decentralizirano – više čvorova upravitelja rade u proizvodnom okruženju; stoga klaster nikada ne ovisi o jednom čvoru upravitelja.
  • Skalabilnost – Korištenjem jedne naredbe roj docker-a, možete jednostavno povećati ili smanjiti spremnike u klasteru.

Orkestrirajte spremnike za dockere

Sada kada znate osnove Docker Swarma, pogledajmo primjer njegove primjene.

U ovom primjeru imam tri stroja koja rade u klasteru sa sljedećim detaljima:

menadžer1: 192.168.56.104

radnik1: 192.168.56.105

radnik2: 192.168.56.102

Da biste inicijalizirali način rojeva u dockeru, pokrenite donju naredbu na čvoru upravitelja. Oznaka – advertise-add koristi se za reklamiranje na čvorove koji se mogu pridružiti klasteru.

[E zaštićeni]: ~ $ docker swarm init –advertise-addr 192.168.56.104

Swarm inicijalizirano: trenutni čvor (lssbyfzuiuh3sye1on63eyixf) je sada upravitelj.

Za dodavanje radnika ovom roju pokrenite sljedeću naredbu:

docker swarm join –pokretanje SWMTKN-1-3h3d8qgvdlxi8tl1oqpfho9khx7i1t5nq7562s9gzojbcm9kr6-azy4rffrzou0nem9hxq4ro5am 192.168.56.104:2377

Da biste dodali upravitelja u ovaj roj, pokrenite “upravitelj dokerskog roja pridruživanja-tokena” i slijedite upute.

Gornja naredba generirat će token koji će drugi čvorovi koristiti za pridruživanje ovom klasteru. Kopirajte naredbu s generiranim tokenom i pokrenite je na radničkim čvorovima.

Izvođenje tokena na čvoru radnik1.

[E zaštićeni]: ~ $ pridruživanje rovu docker -token SWMTKN-1-3h3d8qgvdlxi8tl1oqpfho9khx7i1t5nq7562s9gzojbcm9kr6-azy4rffrzou0nem9hxq4ro5am 192.168.56.104:2377

Taj se čvor pridružio roj kao radnik.

Izvođenje tokena na čvoru radnik2.

[E zaštićeni]: ~ $ pridruživanje rovu docker -token SWMTKN-1-3h3d8qgvdlxi8tl1oqpfho9khx7i1t5nq7562s9gzojbcm9kr6-azy4rffrzou0nem9hxq4ro5am 192.168.56.104:2377

Taj se čvor pridružio roj kao radnik.

Sada na čvoru upravitelja možete provjeriti koji se čvorovi izvode u klasteru.

[E zaštićeni]: ~ $ docker čvor ls

ID HOSTNAME STATUS RASPOLOŽIVOST UPRAVLJAČA STATUS MOTORNA VERSIJA

lssbyfzuiuh3sye1on63eyixf * manager1 Spreman aktivni vođa 18.09.6

utdr3dnngqf1oy1spupy1qlhu radnik1 Spreman Aktivno 18.09.6

xs6jqp95lw4cml1i1npygt3cg radnik2 Spremno aktivno 18.09.6

Izradimo geekflare_mongodb sliku doktora koju smo koristili u Dockerfile Tutorialu.

docker build -t geekflare_mongodb .

Pokrenite spremnik slike MongoDB doktora stvaranjem usluge roj. 27017 je broj porta na kojem je izložen MongoDB.

[E zaštićeni]: ~ $ docker usluga create –name "Mongo-kontejnera" -p 27017: 27017 geekflare_mongodb

image geekflare_mongodb: najnovijim nije bilo moguće pristupiti u registru kako bi se zabilježio njegov popis. Svaki će čvor pristupiti geekflare_mongodb: najnovije neovisno, što može dovesti do različitih čvorova koji izvode različite verzije slike.

kok58xa4zi05psh3uy6s5x9e6

ukupni napredak: 1 od 1 zadatka

1/1: trčanje

potvrdi: usluga konvergirana

Provjerite je li započela služba rojeva za brodice. MODE repliciran znači da je spremnik repliciran na sve čvorove u klasteru, a REPLICAS 1/1 znači da se trenutno pokreće samo jedna usluga roja.

[E zaštićeni]: ~ $ docker usluga ls

ID NAZIVA NAČIN REPLIKASA IMAGE PORTS

kok58xa4zi05 Mongo-Container je replicirao 1/1 geekflare_mongodb: najnovije *: 27017->27.017 / TCP

Provjerimo na kojem čvoru u klasteru se pokreće ovaj pojedinačni servis. Radi na čvoru manager1.

[E zaštićeni]: ~ $ docker usluga ps Mongo-Container

ID IME IMAGE NODE ŽELJENE DRŽAVE TEKUĆE DRŽAVE GREŠKE PORTS

jgqjo92rbq23 Mongo-Container.1 geekflare_mongodb: najnoviji manager1 Trčanje Trčanje prije otprilike minute

Pokrenite naredbu docker ps da biste dobili više pojedinosti o spremniku koji izvodi ovu roj uslugu.

[E zaštićeni]: ~ $ docker ps

NAZIVA IDEJNOG KONTEJNERA NARUČITE NAMENE STATUSNOG PORTA

05d77e7b4850 geekflare_mongodb: najnovije   "/ bin / sh -c usr / bin /…"   Prije 2 minute gore 2 minute 27017 / tcp Mongo-Container.1.jgqjo92rbq23sv01hrufdigtx

Možete pokrenuti roj uslugu u “globalno” mod također umjesto zadanog “repliciranog” načina. Globalni način pokreće jedan zadatak usluge rojeva na svim čvorovima u klasteru.

Prije pokretanja usluge u globalnom načinu, dopustite mi da uklonim postojeći spremnik.

[E zaštićeni]: ~ $ docker usluga rm Mongo-Container

Mongo-kontejnera

Pokrenite roj uslugu unutar docker spremnika u globalnom načinu pomoću zastave modusa.

[E zaštićeni]: ~ $ docker usluga create –name "Mongo-kontejnera" -p 27017: 27017 –mode globalni geekflare_mongodb

image geekflare_mongodb: najnovijim nije bilo moguće pristupiti u registru kako bi se zabilježio njegov popis. Svaki će čvor pristupiti geekflare_mongodb: najnovije neovisno, što može dovesti do različitih čvorova koji izvode različite verzije slike.

mfw8dp0zylffppkllkcjl8391

ukupni napredak: 3 od 3 zadatka

utdr3dnngqf1: trčanje

lssbyfzuiuh3: trčanje

xs6jqp95lw4c: trčanje

potvrdi: usluga konvergirana

Provjerite je li roj usluga pokrenuta u globalnom načinu. Budući da u klasteru rade tri čvora (1 upravitelj, 2 radnika), zbog toga je broj replika 3.

[E zaštićeni]: ~ $ docker usluga ls

ID NAZIVA NAČIN REPLIKASA IMAGE PORTS

mfw8dp0zylff Mongo-Container global 3/3 geekflare_mongodb: najnovije *: 27017->27.017 / TCP

3 usluge se sada pokreću kroz 3 čvora, provjerite izvršavanjem naredbene naredbe.

[E zaštićeni]: ~ $ docker usluga ps Mongo-Container

ID IME IMAGE NODE ŽELJENE DRŽAVE TEKUĆE DRŽAVE GREŠKE PORTS

zj2blvptkvj6 Mongo-Container.xs6jqp95lw4cml1i1npygt3cg geekflare_mongodb: najnoviji radnik2 Trčanje trčanje prije otprilike minute

3eaweijbbutf Mongo-Container.utdr3dnngqf1oy1spupy1qlhu geekflare_mongodb: najnoviji radnik1 Trčanje trčanje prije otprilike minutu

yejg1o2oyab7 Mongo-Container.lssbyfzuiuh3sye1on63eyixf geekflare_mongodb: najnoviji manager1 Running Running prije otprilike minute

Zatim dopusti da pokažem kako možete odrediti broj replika. Prije toga izvadit ću trenutni spremnik, koji radi.

[E zaštićeni]: ~ $ docker usluga rm Mongo-Container

Mongo-kontejnera

U naredbi upotrijebite zastavicu -replike i navedite broj replika koje želite u roj službi. Na primjer, želim imati dvije replike službe rojeva:

[E zaštićeni]: ~ $ docker usluga create –name "Mongo-kontejnera" -p 27017: 27017 –replicas = 2 geekflare_mongodb

image geekflare_mongodb: najnovijim nije bilo moguće pristupiti u registru kako bi se zabilježio njegov popis. Svaki će čvor pristupiti geekflare_mongodb: najnovije neovisno, što može dovesti do različitih čvorova koji izvode različite verzije slike.

4yfl41n7sfak65p6zqwwjq82c

ukupni napredak: 2 od 2 zadatka

1/2: trčanje

2/2: trčanje

potvrdi: usluga konvergirana

Provjerite usluge rojeva koje trenutno rade. Možete vidjeti da se jedna replika izvodi na čvoru manager1, a druga na čvoru radnik1.

[E zaštićeni]: ~ $ docker usluga ps Mongo-Container

ID IME IMAGE NODE ŽELJENE DRŽAVE TEKUĆE DRŽAVE GREŠKE PORTS

xukodj69h79q Mongo-Container.1 geekflare_mongodb: najnoviji radnik1 Trčanje Trčanje prije 9 sekundi

e66zllm0foc8 Mongo-Container.2 geekflare_mongodb: najnoviji manager1 Trčanje Trčanje prije 9 sekundi

Otiđite na čvor Working1 i provjerite radi li spremnik docker-a.

[E zaštićeni]: ~ $ docker ps

NAZIVA IDEJNOG KONTEJNERA NARUČITE NAMENE STATUSNOG PORTA

5042b7f161cb geekflare_mongodb: najnovije   "/ bin / sh -c usr / bin /…"   Prije otprilike minute Gore Oko minute 27017 / tcp Mongo-Container.1.xukodj69h79q3xf0pouwm7bwv

Da biste zaustavili ovaj spremnik, pokrenite naredbu ispod.

[E zaštićeni]: ~ $ docker stop 5042b7f161cb

5042b7f161cb

Sada iz čvora manager1 ako provjerite koji čvorići pokreću uslugu, vidjet ćete da se to radi na čvoru manager1 i na radniku2 čvoru. Trenutačno stanje čvora radnika1 je Isključivanje (dok smo zaustavili spremnik koji pokreće uslugu). Ali kako ove replike moraju pokrenuti dvije replike, na radniku 2 pokrenuta je druga usluga.

Ovako postižete visoku dostupnost koristeći roj dokera.

[E zaštićeni]: ~ $ docker usluga ps Mongo-Container

ID IME IMAGE NODE ŽELJENE DRŽAVE TEKUĆE DRŽAVE GREŠKE PORTS

cd2rlv90umej Mongo-Container.1 geekflare_mongodb: najnoviji radnik2 Trčanje trčanje prije 30 sekundi

xukodj69h79q \ _ Mongo-Container.1 geekflare_mongodb: najnoviji radnik1 Isključenje nije uspjelo prije 38 sekundi    "zadatak: ne-nulta izlaz (137)"

e66zllm0foc8 Mongo-Container.2 geekflare_mongodb: najnoviji manager1 trčanje trčanje prije 3 minute

Vrlo je lako smanjiti ili smanjiti spremnike za dockere. Naredba ispod će povećati spremnik mongo na 5.

[E zaštićeni]: ~ $ usluga ljestvice docker Mongo-Container = 5

Mongo-kontejner se skalirao na 5

ukupni napredak: 5 od 5 zadataka

1/5: trčanje

2/5: trčanje

3/5: trčanje

4/5: trčanje

5/5: trčanje

potvrdi: usluga konvergirana

Provjerite koliko replika spremnika mongo trenutno radi, mora biti 5.

[E zaštićeni]: ~ $ docker usluga ls

ID NAZIVA NAČIN REPLIKASA IMAGE PORTS

4yfl41n7sfak Mongo-Container je ponovio 5/5 geekflare_mongodb: najnovije *: 27017->27.017 / TCP

Provjerite gdje se ovih 5 replika trči u klasteru. 1 replika radi na čvoru manager1 i 2 replike na oba radnička čvora.

[E zaštićeni]: ~ $ docker usluga ps Mongo-Container

ID IME IMAGE NODE ŽELJENE DRŽAVE TEKUĆE DRŽAVE GREŠKE PORTS

cd2rlv90umej Mongo-Container.1 geekflare_mongodb: najnoviji radnik2 Trčanje trčanje prije 2 minute

xukodj69h79q \ _ Mongo-Container.1 geekflare_mongodb: najnoviji radnik1 Isključenje nije uspjelo prije 2 minute     "zadatak: ne-nulta izlaz (137)"

e66zllm0foc8 Mongo-Container.2 geekflare_mongodb: najnoviji manager1 trčanje trčanje prije 5 minuta

qmp0gqr6ilxi Mongo-Container.3 geekflare_mongodb: najnoviji radnik2 Trčanje trčanje prije 47 sekundi

9ddrf4tsvnu2 Mongo-Container.4 geekflare_mongodb: najnoviji radnik1 Trčanje Trčanje prije 46 sekundi

e9dhoud30nlk Mongo-Container.5 geekflare_mongodb: najnoviji radnik1 Trčanje trčanje prije 44 sekunde

Ako u svojem klasteru ne želite da se vaše usluge prikazuju na čvorima (upraviteljima) upravitelja, a želite ih zadržati samo za upravljanje čvorovima, možete iscrpiti upravljački čvor iz.

[E zaštićeni]: ~ $ docker čvor ažuriranje – dostupnost upravitelj odvoda1

Manager1

Provjerite dostupnost čvora upravitelja.

[E zaštićeni]: ~ $ docker čvor ls

ID HOSTNAME STATUS RASPOLOŽIVOST UPRAVLJAČA STATUS MOTORNA VERSIJA

lssbyfzuiuh3sye1on63eyixf * manager1 Spremnik za odvodnjavanje 18.09.6

utdr3dnngqf1oy1spupy1qlhu radnik1 Spreman Aktivno 18.09.6

xs6jqp95lw4cml1i1npygt3cg radnik2 Spremno aktivno 18.09.6

Vidjet ćete da se usluge više ne pokreću na čvoru upravitelja; raširene su po radničkim čvorovima u klasteru.

[E zaštićeni]: ~ $ docker usluga ps Mongo-Container

ID IME IMAGE NODE ŽELJENE DRŽAVE TEKUĆE DRŽAVE GREŠKE PORTS

cd2rlv90umej Mongo-Container.1 geekflare_mongodb: najnoviji radnik2 Trčanje trčanje prije 5 minuta

xukodj69h79q \ _ Mongo-Container.1 geekflare_mongodb: najnoviji radnik1 Isključenje nije uspjelo prije 5 minuta      "zadatak: ne-nulta izlaz (137)"

qo405dheuutj Mongo-Container.2 geekflare_mongodb: najnoviji radnik1 Trčanje trčanje prije 41 sekundu

e66zllm0foc8 \ _ Mongo-Container.2 geekflare_mongodb: najnoviji manager1 Shutdown Shutdown prije 44 sekunde

qmp0gqr6ilxi Mongo-Container.3 geekflare_mongodb: najnoviji radnik2 Trčanje trčanje prije 3 minute

9ddrf4tsvnu2 Mongo-Container.4 geekflare_mongodb: najnoviji radnik1 Trčanje Trčanje prije 3 minute

e9dhoud30nlk Mongo-Container.5 geekflare_mongodb: najnoviji radnik1 Trčanje trčanje prije 3 minute

To se odnosilo na Docker Swarm i kako orkestrirati kontejnere u docker swarm modu. Isprobajte to u svom neprodukcijskom okruženju da biste dobili predstavu o tome kako to funkcionira.

OZNAKE:

  • Lučki radnik

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map