Alles oor die Docker Swarm en hoe dit al die houers in ‘n tros bestuur en orkestreer.
1 Wat is Docker Swarm?
2 Waarom gebruik dit? – Houerorkestrasie
3 Orkestreer Docker-houers
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.
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:
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.
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.
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.
algehele vordering: 1 uit 1 take
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.
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
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
algehele vordering: 3 uit 3 take
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.
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.
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.
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
algehele vordering: 2 uit 2 take
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.
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.
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
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.
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
Kyk hoeveel replieke van die mongo-houer loop nou, dit moet 5 wees.
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.
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
Kontroleer die beskikbaarheid van die bestuurderknoop.
lssbyfzuiuh3sye1on63eyixf * bestuurder1 Ready Drain Leader 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.
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.
Totul despre Docker Swarm și cum gestionează și orchestrează toate containerele dintr-un cluster. Contents1
همه چیز در مورد Docker Swarm و نحوه مدیریت و ارکستر همه ظروف موجود