7,540
edits
Changes
→Load balancing for statefull services
<br>
=Statefull Load balancing for statefull serviceswith Traefik=
Több okból is szükség lehet rá, hogy Layer 7 revers-proxy-t tegyünk a cluster-ünk elé a beépített Layer 4 TCP load balancer helyett:
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ást is: <br>
* Docker
{{warning|Van egy kisebb probléma a Traefik jelenlegi architektúrájával, ami az ábrából is látszik. Jelenleg csak 1 darab remote docker API-t lehet konfigurálni a Traefik-nek, vagyis hiába van 3 manager node a cluster-ben, a Traefik sajnos csak egy dedikált manager node-hoz tud kapcsolódni, és ha az az egy manager node kiesik, akkor megszűnik a load banacer is --> single point of failure (SPOF). Ezzel gyakorlatilag értelmét veszti a manger node-ok közötti fail-over. Persze ez csak nagyon nagy cluster-eket érintő probléma. Ezt többen is feszegetik különböző fórumokon, vannak rá különböző hekmányolások, de szép megoldás még nincs rá}}
==Előkészületek==
===Overlay hálózat definiálása===
Ahogy azt már láthattuk, szükség van egy dedikált overlay hálózatra, amire a Traefik konténer és az összes többi olyan konténer is rá lesz csatlakozva, amik részt vesznek a load-balancing-ban.
===Konfiguráció elkészítése===
A Traefik-nek vagy megadunk egy külső konfigurációs fájlt, vagy CMD argomentumokkal definiáljuk a konfigurációt. Azt szeretnénk, hogy a Traefik a swarm manager-rhez a remote TLS API-k keresztül csatlakozzon, meg kell adni a CA, a Cert és a titkos kulcsot is a csatlakozáshoz. Ezen felül meg kell adjuk a manager node IP címét és TLS portját is. Mivel ennyi paramétert kéne megadni, célra vezetőbb ha ezeket a Traefik konfigurációs fájljában adjuk meg, ami a Traefik konténer-ben itt található:
/etc/traefik/traefik.toml
Ezt a fájlt felül fogjuk írni oly módon, hogy a Traefik konténert futtató VM gépen létre fogjuk hozni a saját '''traefik.toml''' konfigurációnkat, és azt fel fogjuk csatolni bind mount-al az '''/etc/traefik/traefik.toml''' helyre, így el fogjuk fedni a konténerben lévő fájlt, helyette a mi fájlunkat csak látni a Traefik.
<source lang="sh">
################################################################
# Docker Swarm Mode Provider
################################################################
# Enable Docker Provider.
[docker]
# Docker server endpoint.
# Can be a tcp or a unix socket endpoint.
endpoint = "tcp://192.168.42.75:2376"
# Default domain used.
# Can be overridden by setting the "traefik.domain" label on a services.
#
# Optional
# Default: ""
#
domain = "docker.localhost"
# Enable watch docker changes.
#
# Optional
# Default: true
#
watch = true
# Use Docker Swarm Mode as data provider.
#
# Optional
# Default: false
#
swarmMode = true
# Expose services by default in Traefik.
#
# Optional
# Default: true
#
exposedByDefault = true
# Enable docker TLS connection.
#
# Optional
#
[docker.tls]
ca = "/etc/ssl/ca.pem"
cert = "/etc/ssl/cert.pem"
key = "/etc/ssl/key.pem"
insecureSkipVerify = true
</source>