7,540
edits
Changes
no edit summary
[[Docker Orchestration|<< Back to Orchestration Docker main]]
* A swarm kezelésére nincsenek dedikált docker és compose parancsok. Be kell 'jelentkezni' swarm módban a manager VM-re, majd onnantól kezdve minden kiadott docker és compose parancs az egész cluster-re vonatkozik, nem a manager VM-en futó docker démonra. (Swarm mode-ban ez nem így van, ott saját parancs készlete van már a swarm-nak)
* A scheduling stratégiákat a swarm cluster létrehozásakor meg kell adni, a service-ek telepítése közben erre már nincs lehetőség. Tehát a docker-compose.yml fájl deploy szekcióját nem veszi figyelembe a swarm classic, az kizárólag a swarm mode-nak szól.
* A swarm classic-kban nincs beépített load balancer szolgáltatás. Magunknak kell létrehozni. A load-balancer a végpontok listáját a discovery service szolgáltatótól kell hogy lekérdezze (pl. consul)
Kétféleképpen hozhatunk létre swarm classic cluster-t:
Checking connection to Docker...
</pre>
{{tip|Természetesen a '''swarm classic konténereket''' manuálisan is létre lehet hozni, nem kell hozzá a '''docker-machine --swarm''' parancs. Ez csak egy segítség. Ilyenkor a docker-machine ugyan azt csinálja, amit mi is csinálni fogunk a [[Docker Swarm Classic#Cluster_l.C3.A9trehoz.C3.A1sa_manu.C3.A1lisan|Cluster létrehozás manuálisan]] fejezetben. }}
Ha a '''--swarm-master''' kapcsolót elhagyjuk, akkor normál worker-t adunk hozzá:
<br>
===VM-ek ellenőrzése===
<pre>
=Cluster létrehozása manuálisan=
A '''swarm classic cluster'''-t nem csak a '''docker-machine ''' paranccsal lehet létrehozni, bár kétségtelen hogy úgy a legegyszerűbb. Létrehozhatjuk swarm cluster nélkül is a VM-eket, majd oda SSH-val belépve, manuálisan is felépíthetjük a cluster-t (vagyis elindíthatjuk a swarm konténereket). Nézzünk erre egy token-es (DockerHub) példát.
===Cluster regisztrálása===
</pre>
https://docs.docker.com/swarm/reference/manage/ <br>
http://harrylee.me/2016/08/23/Docker-Docker-Swarm-with-Docker-Machine-Quick-Setup-Guide/
Mikor a manager-t létrehozzuk, akkor ugyan azt a '''swarm ''' image-t futtatjuk, amivel regisztráltuk a cluster-t a Docker Hub-on, csak most nem a create hanem a manager paraméterrel, innen fogja tudni a swarm, hogy manager konténert kell létrehoznia. <br>
A '''docker-machine --swarm''' üzemmódja pont ezt csinálta meg, azzal a különbséggel, hogy a master VM-en egy node-ot is mindig létrehoz a master mellé.
<pre>
Itt is ugyan úgy a swarm image-ból fogunk csinálni egy konténert, de a manage paraméter helyett a '''join ''' paramétert adjuk mega a konténernek, innen fogja tudni, hogy node-ot kell létrehozni.
<pre>
docker@node1:~$ docker run -d \
Ha ugyan ezen a VM-en nyomunk egy '''docker ps'''-t, akkor láthatjuk, hogy létrejött az egy szem swarm konténer, ami '''node ''' üzemmódban fut.
<pre>
docker@node1:~$ docker ps
==Mi jött létre==
Egy rögtön megszűnő swarm konténert futtassunk a list paraméterrel, hogy lekérje a DockerHub-tól a node-ok listáját.
<pre>
# docker run --rm swarm list token://4d245124e7feba5224a117bdd83c9acc
Ha a master VM-en az ott futó docker klienssel rácsatlakozunk a swarm master konténerre, akkor listázni tudjuk a swarm cluster részleteit.
<pre>
$ docker -H :4000 info
aa97325e8cb6 painted "/magic.sh bird" node1/bird_bird_3
</pre>
Láthatjuk, hogy 10 konténer jött létre, 3-3 a node2-ön és a swarm-master-en, és 4 a node1-en. A konténer neve mindig a node nevével kezdődik, majd jön az image név majd a sorszáma a replikának. Ahogy láthatjuk, a swarm egyenlően akarta elosztani a node-ok között a konténereket. Ez a "spread" elosztási stratégia, ez az alapértelmezett. Mivel a swarm cluster létrehozásakor nem adtunk meg stratégiát, ezért a "spread" scheduling stratégiát használja a cluster.
==Kiosztási stratégiák==
A kiosztási stratégiát a master létrehozásakor kell megadni a '''--swarm-strategy ''' kapcsolóval. Három stratégia közül választhatunk:
===spread===