==== 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