Docker Swarm for Container Orchestration

Všetko o Docker Swarm a o tom, ako riadi a organizuje všetky kontajnery v klastri.


Čo je Docker Swarm?

Docker swarm je režim manipulácie so skupinou Docker Engines, odtiaľ názov Swarm. Klaster hostiteľov Docker beží v rojovom režime pozostávajúcom z manažérov a pracovníkov. Prípady, ktoré sa podieľajú na roji, sa nazývajú uzly.

Rozmiestnenie rojov na úrovni výroby pozostáva z uzlových dokov rozmiestnených na viacerých serveroch.

Prečo to používať? – Orchestrácia kontajnerov

Keď pracujete v produkčnom prostredí, v 100s kontajnerových kontajnerov sa v ňom spustí viacero aplikácií. Spravovanie všetkých týchto kontajnerov môže byť veľkou bolesťou pre všetkých inžinierov DevOps; Tu vám Docker Swarm pomôže. Ľahko riadi a organizuje klaster, na ktorom je spustené viac kontajnerových kontajnerov.

Nižšie sú uvedené niektoré z jeho funkcií:

  • Vysoká dostupnosť – si kladie za cieľ ponúknuť žiadne prestoje alebo výpadky.
  • Rozdelenie výkonu – v prípade zlyhania niektorého uzla automaticky prideliť prostriedky a žiadosti na iných uzloch v klastri.
  • Decentralizovaná – vo výrobnom prostredí beží viac uzlov manažéra; klaster preto nikdy nezávisí od jedného uzla správcu.
  • Škálovateľnosť – pomocou jediného príkazu roj doku môžete ľahko zväčšiť alebo zmenšiť objem kontajnerov v klastri.

Kontajnery pre dokovacie stanice

Teraz, keď poznáte základy Docker Swarm, pozrime sa na príklad jeho implementácie.

V tomto príklade mám tri počítače bežiace v klastri s podrobnosťami uvedenými nižšie:

manager1: 192.168.56.104

pracovník1: 192,166,56,105

pracovník2: 192,166,56,102

Ak chcete inicializovať režim roja v doku, spustite príkaz nižšie v uzle správcu. Vlajka –advertise-addr sa používa na samotnú reklamu na uzly, ktoré sa môžu pripojiť k klastru.

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

Inicializovaný roj: aktuálny uzol (lssbyfzuiuh3sye1on63eyixf) je teraz manažérom.

Ak chcete do tohto roja pridať pracovníka, spustite nasledujúci príkaz:

spojiť roj doku –token SWMTKN-1-3h3d8qgvdlxi8tl1oqpfho9khx7i1t5nq7562s9gzojbcm9kr6-azy4rffrzou0nem9hxq4ro5am 192.168.56.104:2377

Ak chcete pridať manažéra do tohto roja, spustite ‘Správca tokenov spoja roja doku’ a postupujte podľa pokynov.

Vyššie uvedený príkaz vygeneruje token, ktorý budú používať ostatné uzly na pripojenie sa k tomuto klastru. Skopírujte príkaz s vygenerovaným tokenom a spustite ho na pracovných uzloch.

Spustenie tokenu na uzle worker1.

[Email protected]: ~ $ pristátie roja dock –token SWMTKN-1-3h3d8qgvdlxi8tl1oqpfho9khx7i1t5nq7562s9gzojbcm9kr6-azy4rffrzou0nem9hxq4ro5am 192.168.56.104:2377

Tento uzol sa pripojil k roju ako pracovník.

Spustenie tokenu na uzle worker2.

[Email protected]: ~ $ pristátie roja dock –token SWMTKN-1-3h3d8qgvdlxi8tl1oqpfho9khx7i1t5nq7562s9gzojbcm9kr6-azy4rffrzou0nem9hxq4ro5am 192.168.56.104:2377

Tento uzol sa pripojil k roju ako pracovník.

Teraz v uzle manažéra môžete skontrolovať, ktoré uzly sú spustené v klastri.

[Email protected]: ~ $ dokovací uzol ls

ID HOSTNAME STATUS STATUS DOSTUPNOSŤ MANAGER STATUS VERSION MOTORA

lssbyfzuiuh3sye1on63eyixf * manager1 Ready Active Leader 18.09.6

utdr3dnngqf1oy1spupy1qlhu pracovník1 Pripravený aktívny 18.09.6

xs6jqp95lw4cml1i1npygt3cg worker2 Ready Active 18.09.6

Zostavme obrázok doku geekflare_mongodb, ktorý sme použili v príručke Dockerfile Tutorial.

zostavenie doku -t geekflare_mongodb .

Vytvorte rojovú službu a spustite kontajner obrazu doku MongoDB. 27017 je číslo portu, na ktorom je vystavený MongoDB.

[Email protected]: ~ $ docker služba create –name "Mongo-Container" -p 27017: 27017 geekflare_mongodb

image geekflare_mongodb: najnovší sa nepodarilo získať v registri na zaznamenanie jeho prehľadu. Každý uzol bude mať prístup k geekflare_mongodb: najnovšie nezávisle, čo môže viesť k tomu, že rôzne uzly budú spúšťať rôzne verzie obrázka..

kok58xa4zi05psh3uy6s5x9e6

celkový pokrok: 1 z 1 úloh

1/1: beží

overiť: Služba konvergovaná

Skontrolujte, či sa spustila rojová služba. REŽIM replikovaný znamená, že kontajner bol replikovaný na všetky uzly v klastri a REPLICAS 1/1 znamená, že v súčasnosti je spustená iba jedna služba roja.

[Email protected]: ~ $ dokovacia služba ls

ID NAME MODE REPLICAS IMAGE PORTS

kok58xa4zi05 Mongo-Container replicated 1/1 geekflare_mongodb: latest *: 27017->27017 / tcp

Pozrime sa, na ktorom uzle v klastri je spustená táto jediná služba. Beží na uzle manager1.

[Email protected]: ~ $ dokovacia služba ps Mongo-Container

ID NÁZOV OBRÁZKU OBRÁZOK NAVRHOVANÝ ŠTÁT PRÍPADY ŠTÁTNEHO ŠTÁTU

jgqjo92rbq23 Mongo-Container.1 geekflare_mongodb: posledný manažér1 Beh Beh asi pred minútou

Spustením príkazu docker ps získate viac podrobností o kontajneri, na ktorom je spustená táto služba roja.

[Email protected]: ~ $ docker ps

ID KONTAJNERU OBRÁZOK OBRÁZOK VYTVORENÝ ŠTATÚT NÁZOV PRÍSTAVOV

05d77e7b4850 geekflare_mongodb: najnovšie   "/ bin / sh -c usr / bin /…"   Pred 2 minútami Nahor 2 minútami 27017 / tcp Mongo-Container.1.jgqjo92rbq23sv01hrufdigtx

Službu roja môžete spustiť v “Globálne” režim namiesto štandardného „replikovaného“ režimu. Globálny režim spúšťa jednu úlohu služby roj na všetkých uzloch v klastri.

Pred spustením služby v globálnom režime mi dovoľte odstrániť existujúci bežiaci kontajner.

[Email protected]: ~ $ dokovacia služba rm Mongo-Container

Mongo-Container

Spustite rojovú službu vnútri kontajnerového kontajnera v globálnom režime pomocou príznaku –mode.

[Email protected]: ~ $ docker služba create –name "Mongo-Container" -p 27017: 27017 – mode global geekflare_mongodb

image geekflare_mongodb: najnovší sa nepodarilo získať v registri na zaznamenanie jeho prehľadu. Každý uzol bude mať prístup k geekflare_mongodb: najnovšie nezávisle, čo môže viesť k tomu, že rôzne uzly budú spúšťať rôzne verzie obrázka..

mfw8dp0zylffppkllkcjl8391

celkový pokrok: 3 z 3 úloh

utdr3dnngqf1: beží

lssbyfzuiuh3: beží

xs6jqp95lw4c: beží

overiť: Služba konvergovaná

Skontrolujte, či sa rojová služba spustila v globálnom režime. Pretože v klastri sú spustené tri uzly (1 manažér, 2 pracovníci), počet replík je preto 3.

[Email protected]: ~ $ dokovacia služba ls

ID NAME MODE REPLICAS IMAGE PORTS

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

Na 3 uzloch sú teraz spustené 3 služby, skontrolujte pomocou príkazu nižšie.

[Email protected]: ~ $ dokovacia služba ps Mongo-Container

ID NÁZOV OBRÁZKU OBRÁZOK NAVRHOVANÝ ŠTÁT PRÍPADY ŠTÁTNEHO ŠTÁTU

zj2blvptkvj6 Mongo-Container.xs6jqp95lw4cml1i1npygt3cg geekflare_mongodb: najnovší pracovník2 Beh Beh asi pred minútou

3eaweijbbutf Mongo-Container.utdr3dnngqf1oy1spupy1qlhu geekflare_mongodb: najnovší pracovník1 Beh Beh asi pred minútou

yejg1o2oyab7 Mongo-Container.lssbyfzuiuh3sye1on63eyixf geekflare_mongodb: posledný manažér1 Beh Beh pred minútou

Ďalej vám ukážem, ako môžete definovať počet replík. Predtým odstránim aktuálny kontajner, ktorý je v prevádzke.

[Email protected]: ~ $ dokovacia služba rm Mongo-Container

Mongo-Container

V príkaze použite príznak repliky a uveďte počet replík, ktoré chcete od služby roja. Napríklad chcem mať dve repliky rojovej služby:

[Email protected]: ~ $ docker služba create –name "Mongo-Container" -p 27017: 27017 –replicas = 2 geekflare_mongodb

image geekflare_mongodb: najnovší sa nepodarilo získať v registri na zaznamenanie jeho prehľadu. Každý uzol bude mať prístup k geekflare_mongodb: najnovšie nezávisle, čo môže viesť k tomu, že rôzne uzly budú spúšťať rôzne verzie obrázka..

4yfl41n7sfak65p6zqwwjq82c

celkový pokrok: 2 z 2 úloh

1/2: beží

2/2: beží

overiť: Služba konvergovaná

Skontrolujte aktuálne fungujúce rojové služby. Môžete vidieť, že jedna replika beží na uzle manager1 a druhá na uzle worker1.

[Email protected]: ~ $ dokovacia služba ps Mongo-Container

ID NÁZOV OBRÁZKU OBRÁZOK NAVRHOVANÝ ŠTÁT PRÍPADY CHYBY ŠTÁTU

xukodj69h79q Mongo-Container.1 geekflare_mongodb: najnovšie worker1 Running Running pred 9 sekundami

e66zllm0foc8 Mongo-Container.2 geekflare_mongodb: najnovšie manager1 Running Running pred 9 sekundami

Prejdite na uzol worker1 a skontrolujte, či v dokovom kontajneri je spustená služba rojov.

[Email protected]: ~ $ docker ps

ID KONTAJNERU OBRÁZOK OBRÁZOK VYTVORENÝ ŠTATÚT NÁZOV PRÍSTAVOV

5042b7f161cb geekflare_mongodb: najnovšie   "/ bin / sh -c usr / bin /…"   Asi pred minútou Nahor Približne za minútu 27017 / tcp Mongo-Container.1.xukodj69h79q3xf0pouwm7bwv

Ak chcete tento kontajner zastaviť, spustite príkaz uvedený nižšie.

[Email protected]: ~ $ docker stop 5042b7f161cb

5042b7f161cb

Teraz z uzla manager1, ak skontrolujete, ktoré všetky uzly prevádzkujú službu, uvidíte jeho spustenie na uzle manager1 a uzle worker2. Aktuálny uzol worker1 je Shutdown (zastavili sme kontajner, na ktorom bola služba spustená). Keďže však musia byť spustené dve repliky tejto služby, bola na pracovníkovi 2 spustená ďalšia služba.

Týmto spôsobom dosiahnete vysokú dostupnosť pomocou dokového roja.

[Email protected]: ~ $ dokovacia služba ps Mongo-Container

ID NÁZOV OBRÁZKU OBRÁZOK NAVRHOVANÝ ŠTÁT PRÍPADY ŠTÁTNEHO ŠTÁTU

cd2rlv90umej Mongo-Container.1 geekflare_mongodb: latest worker2 Running Running pred 30 sekundami

xukodj69h79q \ _ Mongo-Container.1 geekflare_mongodb: najnovší pracovník1 Vypnutie zlyhalo pred 38 sekundami    "úloha: nenulový východ (137)"

e66zllm0foc8 Mongo-Container.2 geekflare_mongodb: najnovšie manager1 Running Running pred 3 minútami

Je veľmi ľahké škálovať dokovacie kontajnery nahor alebo nadol. Príkaz uvedený nižšie zvýši objem kontajnera na 5.

[Email protected]: ~ $ dokovacia služba mierka Mongo-Container = 5

Mongo-Container zmenšený na 5

celkový pokrok: 5 z 5 úloh

1/5: beh

2/5: beh

3/5: beh

4/5: beh

5/5: beh

overiť: Služba konvergovaná

Skontrolujte, koľko replík mongo kontajnerov je spustených teraz, musí to byť 5.

[Email protected]: ~ $ dokovacia služba ls

ID NAME MODE REPLICAS IMAGE PORTS

4yfl41n7sfak Mongo-Container replicated 5/5 geekflare_mongodb: latest *: 27017->27017 / tcp

Skontrolujte, kde je týchto 5 replík spustených v klastri. 1 replika beží na uzle manager1 a 2 repliky na oboch pracovných uzloch.

[Email protected]: ~ $ dokovacia služba ps Mongo-Container

ID NÁZOV OBRÁZKU OBRÁZOK NAVRHOVANÝ ŠTÁT PRÍPADY ŠTÁTNEHO ŠTÁTU

cd2rlv90umej Mongo-Container.1 geekflare_mongodb: najnovšie worker2 Running Running pred 2 minútami

xukodj69h79q \ _ Mongo-Container.1 geekflare_mongodb: najnovší pracovník1 Vypnutie zlyhalo pred 2 minútami     "úloha: nenulový východ (137)"

e66zllm0foc8 Mongo-Container.2 geekflare_mongodb: najnovšie manager1 Running Running pred 5 minútami

qmp0gqr6ilxi Mongo-Container.3 geekflare_mongodb: latest worker2 Running Running pred 47 sekundami

9ddrf4tsvnu2 Mongo-Container.4 geekflare_mongodb: najnovšie worker1 Running Running pred 46 sekundami

e9dhoud30nlk Mongo-Container.5 geekflare_mongodb: latest worker1 Running Running pred 44 sekundami

Ak vo svojom klastri nechcete, aby sa vaše služby spustili v uzloch (uzloch) manažéra a nechcete si ich ponechať iba na správu uzlov, môžete vypnúť uzol manažéra.

[Email protected]: ~ $ aktualizácia dokovacieho uzla $ – manager odtoku dostupnosti1

Manager1

Skontrolujte dostupnosť uzla manažéra.

[Email protected]: ~ $ dokovací uzol ls

ID HOSTNAME STATUS STATUS DOSTUPNOSŤ MANAGER STATUS VERSION MOTORA

lssbyfzuiuh3sye1on63eyixf * manager1 Ready Drain Leader 18.09.6

utdr3dnngqf1oy1spupy1qlhu pracovník1 Pripravený aktívny 18.09.6

xs6jqp95lw4cml1i1npygt3cg worker2 Ready Active 18.09.6

Uvidíte, že služby už nie sú v uzle správcu spustené; sú rozmiestnené cez pracovné uzly v klastri.

[Email protected]: ~ $ dokovacia služba ps Mongo-Container

ID NÁZOV OBRÁZKU OBRÁZOK NAVRHOVANÝ ŠTÁT PRÍPADY ŠTÁTNEHO ŠTÁTU

cd2rlv90umej Mongo-Container.1 geekflare_mongodb: najnovšie worker2 Running Running pred 5 minútami

xukodj69h79q \ _ Mongo-Container.1 geekflare_mongodb: najnovší pracovník1 Vypnutie zlyhalo pred 5 minútami      "úloha: nenulový východ (137)"

qo405dheuutj Mongo-Container.2 geekflare_mongodb: latest worker1 Running Running pred 41 sekundami

e66zllm0foc8 \ _ Mongo-Container.2 geekflare_mongodb: posledný manažér1 Vypnutie Vypnutie pred 44 sekundami

qmp0gqr6ilxi Mongo-Container.3 geekflare_mongodb: najnovšie worker2 Running Running pred 3 minútami

9ddrf4tsvnu2 Mongo-Container.4 geekflare_mongodb: najnovšie worker1 Running Running pred 3 minútami

e9dhoud30nlk Mongo-Container.5 geekflare_mongodb: najnovšie worker1 Running Running pred 3 minútami

To bolo všetko o Docker Swarm a o tom, ako organizovať kontajnery v dokovom rojovom režime. Vyskúšajte ich vo svojom nevýrobnom prostredí a získajte predstavu o tom, ako to funguje.

Tagy:

  • prístavný robotník

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