Docker Swarm vir houer-orkestrasie

Alles oor die Docker Swarm en hoe dit al die houers in ‘n tros bestuur en orkestreer.


Wat is Docker Swarm?

Docker-swerm is ‘n manier om ‘n groep Docker-enjins te hanteer, vandaar die naam Swarm. Die groep Docker-gashere loop in ‘n swermmodus wat bestaan ​​uit bestuurders en werkers. Die docker-motor-gevalle wat aan die swerm deelneem, word nodes genoem.

‘N Swerm-ontplooiing op produksievlak bestaan ​​uit docking-knope wat oor verskeie bedieners versprei is.

Waarom gebruik dit? – Houerorkestrasie

As u in ‘n produksie-omgewing werk, sal 100s van die houer van docking verskeie toepassings hê. Die bestuur van al hierdie houers kan ‘n groot pyn wees vir al die DevOps-ingenieurs; dit is hier waar Docker Swarm jou help. Dit bestuur en orkestreer die cluster wat verskeie dockerhouers bevat, maklik.

Hier is ‘n paar kenmerke:

  • Hoë beskikbaarheid – beoog om geen stilstand of stilstand te bied nie.
  • Vrag balansering – ken die bronne en versoeke outomaties toe op ander nodes in die groep as enige nodus misluk.
  • Gedesentraliseer – verskeie bestuursknooppunte in ‘n produksie-omgewing; die groep is dus nooit afhanklik van ‘n enkele bestuurderknoop nie.
  • Skaalbaarheid – met behulp van ‘n enkele docker-swerm-opdrag, kan u houers in die cluster maklik op- of afskaal.

Orkestreer Docker-houers

Noudat u die basiese beginsels van Docker Swarm ken, laat ons kyk na ‘n voorbeeld van die implementering daarvan.

In hierdie voorbeeld het ek drie masjiene wat in ‘n groep saamgevat is met die onderstaande besonderhede:

bestuurder1: 192.168.56.104

werker1: 192.168.56.105

werker2: 192.168.56.102

Voer die onderstaande opdrag op die bestuurderknoop in om die swermmodus in docker te initialiseer. Die vlag – advertise-addr word gebruik om homself te adverteer na die nodusse wat by die groep kan aansluit.

[Email protected]: ~ $ docker swarm init – advertise-addr 192.168.56.104

Swerm geïnitialiseer: huidige node (lssbyfzuiuh3sye1on63eyixf) is nou ‘n bestuurder.

Voer die volgende opdrag uit om ‘n werker by hierdie swerm te voeg:

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

Om ‘n bestuurder by hierdie swerm te voeg, voer ‘docker swarm join-token manager’ uit en volg die instruksies.

Bogenoemde opdrag sal ‘n teken opwek wat deur ander nodes gebruik sal word om by hierdie groep aan te sluit. Kopieer die opdrag met die gegenereerde token en voer dit op die werkerknope.

Gebruik die token op die werker-knoop.

[Email protected]: ~ $ docker swarm join – token SWMTKN-1-3h3d8qgvdlxi8tl1oqpfho9khx7i1t5nq7562s9gzojbcm9kr6-azy4rffrzou0nem9hxq4ro5am 192.168.56.104:2377

Hierdie node het as werker by ‘n swerm aangesluit.

Gebruik die token op die werker2-knoop.

[Email protected]: ~ $ docker swarm join – token SWMTKN-1-3h3d8qgvdlxi8tl1oqpfho9khx7i1t5nq7562s9gzojbcm9kr6-azy4rffrzou0nem9hxq4ro5am 192.168.56.104:2377

Hierdie node het as werker by ‘n swerm aangesluit.

Op die bestuursknooppunt kan u nou kyk watter nodes in die groep saamwerk.

[Email protected]: ~ $ dockerknoop ls

ID HOOSNAME STATUS BESKIKBAARHEIDSBESTUURDER STATUS MOTORVERSIE

lssbyfzuiuh3sye1on63eyixf * bestuurder1 Gereed Aktiewe leier 18.09.6

utdr3dnngqf1oy1spupy1qlhu werker1 Ready Active 18.09.6

xs6jqp95lw4cml1i1npygt3cg werker2 Ready Active 18.09.6

Laat ons die geekflare_mongodb-dokkerprent bou wat ons in Dockerfile-tutoriaal gebruik het.

docker build -t geekflare_mongodb .

Begin ‘n houer met die MongoDB-docker-beeld deur ‘n swermdiens te skep. 27017 is die hawe nommer waarop MongoDB blootgestel is.

[Email protected]: ~ $ docker diens skep – naam "Mongo-Container" -p 27017: 27017 geekflare_mongodb

image geekflare_mongodb: die nuutste kon nie op ‘n register verkry word om die vertering daarvan op te neem nie. Elke node kry toegang tot geekflare_mongodb: onafhanklik nuut, moontlik lei dit tot verskillende nodes wat verskillende weergawes van die beeld bevat.

kok58xa4zi05psh3uy6s5x9e6

algehele vordering: 1 uit 1 take

1/1: hardloop

verifieer: diens konvergeer

Kontroleer of die swermdiens vir docker begin het. MODE-gerepliseer beteken dat die houer op al die nodusse in die cluster gerepliseer is en REPLICAS 1/1 beteken dat slegs een swermdiens tans werk.

[Email protected]: ~ $ docker diens ls

ID NAAM MODE REPLICAS BEELDPORTE

kok58xa4zi05 Mongo-Container herhaal 1/1 geekflare_mongodb: nuutste *: 27017->27017 / tcp

Kom ons kyk na watter node in die groep hierdie enkele diens loop. Dit loop op bestuurder1-nodus.

[Email protected]: ~ $ docker-diens ps Mongo-Container

ID NAAM BEELD NODE GEWENDE STAAT HUIDIGE STAAT ERROR PORTS

jgqjo92rbq23 Mongo-Container.1 geekflare_mongodb: nuutste bestuurder1 Hardloop hardloop ongeveer ‘n minuut gelede

Voer docker ps opdrag uit om meer besonderhede te kry oor die houer wat hierdie swermdiens bestuur.

[Email protected]: ~ $ docker ps

HOUER-ID BEELDBESTUUR GEMAAKTE STATUS-PORTERNAME

05d77e7b4850 geekflare_mongodb: nuutste   "/ bin / sh -c usr / bin / …"   2 minute gelede Op 2 minute 27017 / tcp Mongo-Container.1.jgqjo92rbq23sv01hrufdigtx

U kan die swermdiens in “Globale” af ook in plaas van standaardmodus vir ‘gerepliseer’. Die globale modus voer een taak van die swermdiens op al die nodusse in die groep.

Laat ek die bestaande lopende houer verwyder voordat ek die diens in die globale modus bedryf.

[Email protected]: ~ $ docker diens rm Mongo-Container

Mongo-Container

Begin die swermdiens in ‘n dockerhouer in die globale modus met behulp van –mode vlag.

[Email protected]: ~ $ docker diens skep – naam "Mongo-Container" -p 27017: 27017 – modus globale geekflare_mongodb

image geekflare_mongodb: die nuutste kon nie op ‘n register verkry word om die vertering daarvan op te neem nie. Elke node kry toegang tot geekflare_mongodb: onafhanklik nuut, moontlik lei dit tot verskillende nodes wat verskillende weergawes van die beeld bevat.

mfw8dp0zylffppkllkcjl8391

algehele vordering: 3 uit 3 take

utdr3dnngqf1: hardloop

lssbyfzuiuh3: hardloop

xs6jqp95lw4c: loop

verifieer: diens konvergeer

Kyk of die swermdiens in die globale modus begin is. Aangesien drie knope (1 bestuurder, 2 werkers) in die groep saamwerk, is dit die rede waarom die aantal replikas 3 is.

[Email protected]: ~ $ docker diens ls

ID NAAM MODE REPLICAS BEELDPORTE

mfw8dp0zylff Mongo-Container global 3/3 geekflare_mongodb: nuutste *: 27017->27017 / tcp

3 dienste loop nou oor 3 nodes, kyk dit deur die onderstaande opdrag uit te voer.

[Email protected]: ~ $ docker-diens ps Mongo-Container

ID NAAM BEELD NODE GEWENDE STAAT HUIDIGE STAAT ERROR PORTS

zj2blvptkvj6 Mongo-Container.xs6jqp95lw4cml1i1npygt3cg geekflare_mongodb: nuutste werker2 Hardloop hardloop ongeveer ‘n minuut gelede

3eaweijbbutf Mongo-Container.utdr3dnngqf1oy1spupy1qlhu geekflare_mongodb: nuutste werker1 Hardloop hardloop ongeveer ‘n minuut gelede

yejg1o2oyab7 Mongo-Container.lssbyfzuiuh3sye1on63eyixf geekflare_mongodb: nuutste bestuurder1 Hardloop hardloop ongeveer ‘n minuut gelede

Laat my volgende wys hoe u die aantal replikas kan definieer. Daarvoor sal ek die huidige houer, wat loop, verwyder.

[Email protected]: ~ $ docker diens rm Mongo-Container

Mongo-Container

Gebruik –replicas-vlag in die opdrag en noem die aantal replikas wat u van die swermdiens wil hê. Ek wil byvoorbeeld twee replieke van die swermdiens hê:

[Email protected]: ~ $ docker diens skep – naam "Mongo-Container" -p 27017: 27017 – replicas = 2 geekflare_mongodb

image geekflare_mongodb: die nuutste kon nie op ‘n register verkry word om die vertering daarvan op te neem nie. Elke node kry toegang tot geekflare_mongodb: onafhanklik nuut, moontlik lei dit tot verskillende nodes wat verskillende weergawes van die beeld bevat.

4yfl41n7sfak65p6zqwwjq82c

algehele vordering: 2 uit 2 take

1/2: hardloop

2/2: hardloop

verifieer: diens konvergeer

Kyk na die swermdienste wat tans werk. U kan sien dat die een replika op bestuurder1-knoop loop en die ander een op werker1-knooppunt.

[Email protected]: ~ $ docker-diens ps Mongo-Container

ID NAAM BEELD NODE GEWENDE STAAT HUIDIGE STAAT ERROR PORTS

xukodj69h79q Mongo-Container.1 geekflare_mongodb: nuutste werker1 Hardloop hardloop 9 sekondes gelede

e66zllm0foc8 Mongo-Container.2 geekflare_mongodb: nuutste bestuurder1 Hardloop hardloop 9 sekondes gelede

Gaan na die werker1-knoop en kyk of die houer van die docker die swermdiens bedryf.

[Email protected]: ~ $ docker ps

HOUER-ID BEELDBESTUUR GEMAAKTE STATUS-PORTERNAME

5042b7f161cb geekflare_mongodb: nuutste   "/ bin / sh -c usr / bin / …"   Ongeveer ‘n minuut gelede Up Ongeveer ‘n minuut 27017 / tcp Mongo-Container.1.xukodj69h79q3xf0pouwm7bwv

Voer die opdrag hieronder uit om hierdie houer te stop.

[Email protected]: ~ $ docker stop 5042b7f161cb

5042b7f161cb

As u nou van bestuurder1-knooppunt kyk of alle nodes wat die diens gebruik, u sien dat dit op bestuurder1-knooppunt en werker2-knoop loop. Die HUIDIGE STAAT van die werker1-knooppunt is afgeskakel (aangesien ons die houer met die diens stop) stop. Maar aangesien daar twee replikas van hierdie diens moet wees, is ‘n ander diens op werker 2 begin.

Dit is hoe u hoë beskikbaarheid met behulp van docker-swerm bereik.

[Email protected]: ~ $ docker-diens ps Mongo-Container

ID NAAM BEELD NODE GEWENDE STAAT HUIDIGE STAAT ERROR PORTS

cd2rlv90umej Mongo-Container.1 geekflare_mongodb: nuutste werker2 Hardloop hardloop 30 sekondes gelede

xukodj69h79q \ _ Mongo-Container.1 geekflare_mongodb: nuutste werker1 Afsluiting misluk 38 sekondes gelede    "taak: uitgang sonder nul (137)"

e66zllm0foc8 Mongo-Container.2 geekflare_mongodb: nuutste bestuurder1 Running Running 3 minute gelede

Dit is baie maklik om docker-houers op of af te skaal. Die opdrag hieronder sal die mongo-houer opskaal na 5.

[Email protected]: ~ $ docker-diensskaal Mongo-Container = 5

Mongo-houer is afgeskaal tot 5

algehele vordering: 5 uit 5 take

1/5: hardloop

2/5: hardloop

3/5: hardloop

4/5: hardloop

5/5: hardloop

verifieer: diens konvergeer

Kyk hoeveel replieke van die mongo-houer loop nou, dit moet 5 wees.

[Email protected]: ~ $ docker diens ls

ID NAAM MODE REPLICAS BEELDPORTE

4yfl41n7sfak Mongo-Container herhaal 5/5 geekflare_mongodb: nuutste *: 27017->27017 / tcp

Kyk waar hierdie 5 replikas in die groep saamwerk. 1 replika loop op bestuurder1-knooppunt en 2 replikas op beide werkerknope elk.

[Email protected]: ~ $ docker-diens ps Mongo-Container

ID NAAM BEELD NODE GEWENDE STAAT HUIDIGE STAAT ERROR PORTS

cd2rlv90umej Mongo-Container.1 geekflare_mongodb: nuutste werker2 Hardloop hardloop 2 minute gelede

xukodj69h79q \ _ Mongo-Container.1 geekflare_mongodb: nuutste werker1 Sluiting misluk 2 minute gelede     "taak: uitgang sonder nul (137)"

e66zllm0foc8 Mongo-Container.2 geekflare_mongodb: nuutste bestuurder1 Running Running 5 minute gelede

qmp0gqr6ilxi Mongo-Container.3 geekflare_mongodb: nuutste werker2 Hardloop hardloop 47 sekondes gelede

9ddrf4tsvnu2 Mongo-Container.4 geekflare_mongodb: nuutste werker1 Hardloop hardloop 46 sekondes gelede

e9dhoud30nlk Mongo-Container.5 geekflare_mongodb: nuutste werker1 Hardloop hardloop 44 sekondes gelede

As u in u groep nie wil hê dat u dienste op bestuursknooppunt (s) moet loop en dit net wil behou vir die bestuur van die nodusse nie, kan u die bestuursknooppunt dreineer.

[Email protected]: ~ $ opdatering van die dockernode – beskikbaarheidsafvoerbestuurder1

manager1

Kontroleer die beskikbaarheid van die bestuurderknoop.

[Email protected]: ~ $ dockerknoop ls

ID HOOSNAME STATUS BESKIKBAARHEIDSBESTUURDER STATUS MOTORVERSIE

lssbyfzuiuh3sye1on63eyixf * bestuurder1 Ready Drain Leader 18.09.6

utdr3dnngqf1oy1spupy1qlhu werker1 Ready Active 18.09.6

xs6jqp95lw4cml1i1npygt3cg werker2 Ready Active 18.09.6

U sal sien dat die dienste nie meer op die bestuursknooppunt loop nie; dit is versprei oor die werkerknope in die groep.

[Email protected]: ~ $ docker-diens ps Mongo-Container

ID NAAM BEELD NODE GEWENDE STAAT HUIDIGE STAAT ERROR PORTS

cd2rlv90umej Mongo-Container.1 geekflare_mongodb: nuutste werker2 Hardloop hardloop 5 minute gelede

xukodj69h79q \ _ Mongo-Container.1 geekflare_mongodb: nuutste werker1 Afsluiting misluk 5 minute gelede      "taak: uitgang sonder nul (137)"

qo405dheuutj Mongo-Container.2 geekflare_mongodb: nuutste werker1 Hardloop hardloop 41 sekondes gelede

e66zllm0foc8 \ _ Mongo-Container.2 geekflare_mongodb: nuutste bestuurder1 Afsluiting 44 sekondes gelede

qmp0gqr6ilxi Mongo-Container.3 geekflare_mongodb: nuutste werker2 Hardloop hardloop 3 minute gelede

9ddrf4tsvnu2 Mongo-Container.4 geekflare_mongodb: nuutste werker1 Hardloop hardloop 3 minute gelede

e9dhoud30nlk Mongo-Container.5 geekflare_mongodb: nuutste werker1 Hardloop hardloop 3 minute gelede

Dit het alles oor Docker Swarm gegaan en hoe om houers in docker-swerm-modus te orkestreer. Probeer dit op u nie-produksie-omgewing om ‘n idee te kry van hoe dit werk.

Tags:

  • Docker

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