==== Szolgáltatások skálázása - reverse proxy segítségével ====
https://github.com/knehez/isi - folder example_2
A **HAProxy** egy nyílt forráskódú, magas rendelkezésre állású TCP/HTTP terheléselosztó és proxy szerver. A HAProxy segítségével egyetlen IP-cím mögötti több backend szerver között osztható el a terhelés, így javítva az alkalmazások teljesítményét és megbízhatóságát.
**docker-compose.yml**
version: "3.3"
services:
web:
build: .
ports:
- "5000"
redis:
image: "redis:alpine"
haproxy:
image: "haproxytech/haproxy-alpine:2.4"
volumes:
- ./haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro
depends_on:
- web
ports:
- "80:80"
HAproxy config:
A következő konfiguráció beállítja a HAProxy-t arra, hogy a 80-as porton figyelje a bejövő HTTP forgalmat, és az öt backend szerver között osztsa szét, amelyek egészségi állapotát ellenőrzik, mielőtt a forgalmat továbbítanák. Továbbá beállít egy statisztikai felületet a 8404-es porton a HAProxy példány monitorozásához.
global
stats socket /var/run/api.sock user haproxy group haproxy mode 660 level admin expose-fd listeners
log stdout format raw local0 info
defaults
mode http
timeout client 10s
timeout connect 5s
timeout server 10s
timeout http-request 10s
log global
frontend stats
bind *:8404
stats enable
stats uri /
stats refresh 10s
frontend myfrontend
bind 0.0.0.0:80
mode http
default_backend webservers
backend webservers
server s1 web:5000 check
server s2 web:5000 check
server s3 web:5000 check
server s4 web:5000 check
server s5 web:5000 check
- A "global" szekcióban vannak olyan beállítások, amelyek a teljes HAProxy példányra vonatkoznak. Például megadja a statisztikai felület eléréséhez szükséges elérési útvonalat és jogosultságokat. Az stdout-on keresztül megjeleníti a naplóüzeneteket.
- A "defaults" szekcióban a timeout értékek beállításával határozza meg, hogy mennyi időt szán a HAProxy a kapcsolatok felépítésére, a kliens kérések és a válaszok feldolgozására.
- A "frontend stats" rész beállítja a statisztikai felületet, amelyen keresztül a felhasználók monitorozhatják a HAProxy állapotát. Megadja a figyelt portot, engedélyezi a statisztikai adatok megjelenítését és frissítési időt határoz meg.
- A "frontend myfrontend" rész a HAProxy frontend részét határozza meg, ami azt jelenti, hogy ezen a ponton érkeznek a kérések a HAProxy szerverre. A példában a 80-as portra van beállítva a figyelés, és az összes kérés átirányításra kerül a "webservers" backendre.
- A "backend webservers" részben a tényleges backend szerverek konfigurálását végzi, amelyek a tényleges kiszolgálást végzik. Itt az "s1", "s2", "s3", "s4" és "s5" szerverek beállítása megtörténik, amelyek mindegyike a web:5000 címen futó szervereket ellenőrizni fogják a forgalom továbbítása előtt.
Indítás:
docker-compose up --scale web=4