7,540
edits
Changes
no edit summary
<br><br>
=Monitorozás=
Több grafikus docker monitor eszköz is létezik:
* Shipyard (webes)
* Portainer (webes)
* Kitematic (vastag kliens)
A legegyszerűbb a '''Portainer''' használata, ami egyetlen konténert telepít fel a docker-be, képes távoli docker démonho is kapcsolódni, és van benne swarm mode támogatás is.
Két lehetőségünk van a Portainer futtatására:
* Ahhoz hogy a swarm klászer adatait tudjuk monitorozni, valamelyik manager node-on futó docker démonhoz kell kapcsolódni a lokális docker -ben futó Portainer-el. Ezt TLS autentikációval lehet megoldani. Ekkor a Portanier a localhost-on érhető el. (mi ezt fogjuk használni)
* A Portainer-t eleve a manager node-ot is futtató docker démonban telepítjük fel a távoli gépen, ekkor Portanier a távoli gép IP címén érhető el.
A KVM dirver-el készült docker-machine-ekre '''boot2docker''' operációs rendszer kerül feltelepítésre, ha ezt nem változtatjuk meg. A boot2docker-ben alapértelmezetten be van kapcsolva a TLS remote docker API (port: '''2376'''), és a titkosítatlan távoli hozzáférés ki van kapcsolva (port: 2375)
{{note|A példában a '''mg0''' manager node-ra fogunk kapcsolódni, de pont ugyan ezt az eredményt kapnánk az '''mg1''' és '''mg2''' manager-ekkel is. }}
===TLS kulcsok begyűjtése===
Mikor a docker-machine létrehozta a manager node-okat, legyártotta azokat az ssh kulcsokat, aminek a segítségével a docker-machine be tud ssh-zni a VM-re jelszó és felhasználó név megadása nélkül (docker-machine ssh mg0). Ezeket a kulcsokat fogjuk mi is felhasználni, hogy a lokálisan futó Portainer hozzá tudjon kapcsolódni a (távoli) virtuális gépen futó docker démonhoz.
Adjuk ki '''docker-machine env''' parancsot, hogy megtudjuk, hol tárolja a lokális docker-machine környezetünk a távoli VM SSH kulcsait:
<pre>
# docker-machine env mg0
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://192.168.42.41:2376"
export DOCKER_CERT_PATH="/root/.docker/machine/machines/mg0"
export DOCKER_MACHINE_NAME="mg0"
# Run this command to configure your shell:
# eval $(docker-machine env mg0)
</pre>
Látható, hogy a kulcsok a /root/.docker/machine/machines/mg0 mappában vannak
Nekünk három fájlra van innen szükségünk. A CA-ra, a certifikációnkra és a titkos kulcsunkra. A docker-machine a publikus kulcsot még telepítés közben felmásolta a VM-re.
<pre>
# ll /root/.docker/machine/machines/mg0
total 316444
..
-rw-r--r-- 1 root root 1029 Jul 15 22:41 ca.pem
-rw-r--r-- 1 root root 1070 Jul 15 22:41 cert.pem
...
-rw------- 1 root root 1675 Jul 15 22:41 key.pem
...
</pre>
Másoljuk a kulcsokat egy olyan mappába, ahol a böngészőt futtató user is feléri. (Ugyanis nagy valószínűséggel a root mappában jöttek ezek létre)
===Portainer telepítése===
A Portainer-hez egyetlen egy image-et kell telepíteni: '''portainer/portainer'''
<pre>
# docker container run -d -p 9000:9000 --privileged -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer
</pre>
* A webes konzol a '''localhost:9000''' -as porton lehsz elérhető:
* Ha a lokális docker démon-t is monitorozni akarjuk, akkor a docker démon socket-re rá kell kötni a portainer-t.
Ha elindult a konténer, akkor válasszuk '''Remote''' lehetőséget
:[[File:ClipCapIt-180716-005426.PNG|700px]]
* Adjuk meg a manager-t futtató VM IP címét a 2376 portal (alapértelmezett TLS port)
* Kapcsoljuk be a TLS-t.
* TLS CA certificate: '''ca.pem'''
* TLS certificate: '''cert.pem'''
* TLS key: '''key.pem'''
Majd mondjuk hogy connect. Ekkor bejön a desboard. Innentől kezdve a távoli manager docker démonjához kapcsolódunk.
===Cluster monitorozása===
Nyomjunk rá a '''Go to cluster visualizer''' linkre, vagy a baloldali menüben a '''swarm''' menüpontra.
:[[File:ClipCapIt-180716-010553.PNG|1100px]]
Nézzük meg az mg0 node részleteit. Láthatjuk, hogy jelenleg ő a managerek vezetője:
:[[File:ClipCapIt-180717-020139.PNG|700px]]
<br>
=Service futtatása=
https://blog.scottlogic.com/2016/08/30/docker-1-12-swarm-mode-round-robin.html
==Service létrehozása image-ből==
===Szolgáltatás definiálása===
Hozzunk létre
<pre>
# docker-machine ssh mg0 docker service create --name web --replicas 3 --mount type=bind,src=/etc/hostname,dst=/usr/share/nginx/html/index.html,readonly --publish 80:80 nginx
</pre>
===Monitorozás===
Listázzuk ki a swarm-unkon futó szolgáltatásokat. Ezt bármelyik manager-en kiadhatjuk:
<pre>
# docker-machine ssh mg1 docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
yv47d25nc6dr web replicated 3/3 nginx:latest *:80->80/tcp
</pre>
Most listázzuk ki '''ps'''-el a szolgáltatás részleteit. Láthatjuk hogy a woker0, 1 és az mg1-re telepítette fel.
<pre>
# docker-machine ssh mg1 docker service ps web
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
deytk9w7z3et web.1 nginx:latest worker0 Running Running 14 minutes ago
j6lwloj4q101 web.2 nginx:latest mg1 Running Running 14 minutes ago
wfhucxtrq7pm web.3 nginx:latest worker1 Running Running 14 minutes ago
</pre>
Nézzük meg a portainer-ben is az új szolgáltatásunkat a services menüpont alatt:
:[[File:ClipCapIt-180717-225101.PNG]]
:[[File:ClipCapIt-180717-231415.PNG]]
<br>
===Load balancing===
Nézzük meg a swarm nativ load balancert. Hívjuk meg a cluster bármelyik tagjának az IP címét a 80-as porton:
<pre>
# curl http://192.168.42.41:80
worker0
# curl http://192.168.42.41:80
worker1
# curl http://192.168.42.41:80
mg1
</pre>
Ha a böngészőben hívjuk meg a swarm bármelyik node-jának az ip címét, akkor viszont mindig ugyan arra a lábra fogunk beesni, mert a load-balancer megjegyzi, hogy előzőleg hova irányított.
<br>
<br>
===Scaling===
A replikák számát a docker service scale paranccsal változtathatjuk meg. Növeljük meg 5-re:
<pre>
# docker-machine ssh mg0 docker service scale web=5
web scaled to 5
</pre>
Majd nézzük meg mi lett:
<pre>
# docker-machine ssh mg1 docker service ps web
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
deytk9w7z3et web.1 nginx:latest worker0 Running Running 28 minutes ago
j6lwloj4q101 web.2 nginx:latest mg1 Running Running 28 minutes ago
wfhucxtrq7pm web.3 nginx:latest worker1 Running Running 28 minutes ago
7nwtcd43vva9 web.4 nginx:latest worker2 Running Running about a minute ago
kbz72e0wf1ba web.5 nginx:latest mg2 Running Running about a minute ago
</pre>
A portanier-ben egy kattintással növelni tudjuk a szolgáltatás replika számát felfelé vagy lefelé a '''scale''' nyílra kattintva a '''Services''' listában.
:[[File:ClipCapIt-180717-225520.PNG]]
=Networking=
--endpoint-mode dnsrr