Changes

Docker Swarm Mode

2,482 bytes added, 15:33, 28 July 2018
Traefik
==Traefik==
A Traefik egy univerzális Layer 7 (http) load-balancer és reverse proxy. Direkt microservice környezetre találták ki és támogatja is gyakorlatilag az összes konténer orchestration platformot és többféle service discovery szolgáltatástis: <br>
* Docker
* '''Swarm mode''' <<<
* Kubernetes
* Marathon
* Consul, Etcd --> service discovery
* Rancher
* Amazon ECS)
A docker-swarm-ot natívan támogatja.
 
A Traefik úgy működik, hogy valamelyik swarm manager-tről periodikusan lekérdezi az aktuális swarm konfigurációt (szolgáltatások, és azokat futtató node-ok listája). Ez alapján teljesen automatikusan konfigurálja magát és változás estén újra konfigurálja magát (pl. ha nő vagy csökken a cluster, vagy ha új szolgáltatás kerül telepítésre). Mivel magától leköveti a swarm cluster változásait, ideális megoldás mint reverse proxy és Layer 7 load balancer.
 
A Traefik-et futtató node publikus IP címén lesz elérhető az összes Traefik által kezelt szolgáltatás. Minden szolgáltatás a következő formán érhető el:
* http://<traeif IP>/<PathPrefix>
 
 
A '''PathPrefix'''-et a swarm szolgáltatás telepítése közben kell megadni label-ek segítségével. A Traefik a konfiguráció kialakítása közben a swarm szolgáltatás telepítése közben megadott
 
 
Több fórumon is azt írják, hogy a Traefik-et csak valamelyik manager node-on lehet futtatni. Egyrészről ez nem igaz, másrészről hiba lenne ha így lenne. A manager node-ot egyrészt nem szabad load-balanc feladatokkal terhelni. Ha a manager-t túl terhelnénk, leállhat a swarm cluster-ünk. Másrészről másféle hardver konfigurációra van szükség load-balanceoláshoz mint swarm manager futtatásához. Ugyan a Traefik dokumentációból ez implicit nem derül ki, de ettől még lehet remote node-on futtatni.
 
 
A Taraefik a docker swarm API-n keresztül olvassa ki a swarm adatait (szolgáltatások és nodok). Ezt vagy valamelyik manager lokális socker-jét mountolva teheti meg, vagy a docker remote API-n keresztül, ami általában TLS felett fut (pláne produkciós környezetben). Nyilván a legegyszerűbb ha az egyik manager node-ra telepítjük föl, és ott mount-oljuk a manager docker engine lokális socket-jét:
/var/run/docker.sock:/var/run/docker.sock
Így s swarm információkat ki tudja olvasni a lokális docker démonból. Azonban ezt csak tesztelésre szabad így megcsinálni, ahogy erre több helyen is felhívják a figyelmet. Ha megnézzük a Traefik konfigurációs leírásának docker szekcióját, találunk benne egy ilyet:
# Can be a tcp or a unix socket endpoint.
endpoint =
Ezen felül van benne egy TLS szekció is:
[docker.tls]
ca = ...
Tehát képes távoli docker démonhoz kapcsolódni TLS felett a portainer-hez hasonlóan. Tehát ez a része kipipálva.