A HAProxy beállítása terheléselosztóként az Nginx számára a CentOS 8 rendszeren
A webalkalmazások maximális elérhetőségének, méretezhetőségének és nagy teljesítményének biztosítása érdekében ma már általánosan elterjedt olyan technológiák alkalmazása, amelyek redundanciát vezetnek be, mint például a szerverfürtözés és a terheléselosztás. Például egy kiszolgálófürt létrehozása, amelyek mindegyike ugyanazt az alkalmazás(oka)t futtatja, majd terheléselosztó(k) telepítése előttük a forgalom elosztására.
A HAProxy egy nyílt forráskódú, hatékony, nagy teljesítményű, megbízható, biztonságos és széles körben használt, magas rendelkezésre állású TCP/HTTP terheléselosztó, proxyszerver és SSL/TLS-lezáró. nagyon nagy forgalmú webhelyek. Megbízhatóan jól fut Linux, Solaris, FreeBSD, OpenBSD és AIX operációs rendszereken.
Ez az útmutató bemutatja, hogyan állíthat be egy dedikált magas rendelkezésre állású terheléselosztót a HAProxy segítségével CentOS 8 rendszeren az NGINX webszerverek fürtjének forgalmának szabályozásához. Azt is bemutatja, hogyan kell konfigurálni az SSL/TLS lezárást a HAProxyban.
Előfeltételek:
Összesen 4 szerver minimális CentOS 8 telepítéssel.
Tesztkörnyezet beállítása
----------- HAProxy Server Setup -----------
HA Proxy Server - hostname: haproxy-server.tecmint.lan; IP: 10.42.0.247
Test Site Domain: www.tecmint.lan
----------- Client Web Servers Setup -----------
Web Server #1 - hostname: websrv1.tecmint.lan; IP: 10.42.0.200
Web Server #2 - hostname: websrv2.tecmint.lan; IP: 10.42.0.21
Web Server #3 - hostname: websrv3.tecmint.lan; IP: 10.42.0.34
1. lépés: Az Nginx HTTP szerver beállítása az ügyfélgépeken
1. Jelentkezzen be az összes CentOS 8 kliensgépére, és telepítse az Nginx webszervert a dnf csomagkezelő segítségével az ábrán látható módon.
dnf install Nginx
2. Ezután indítsa el az Nginx szolgáltatást, egyelőre engedélyezze, hogy automatikusan elinduljon a rendszerindításkor, és ellenőrizze, hogy működik-e az állapotának ellenőrzésével a systemctl segítségével. parancsokat (ezt minden kliens gépen meg kell tenni).
systemctl start nginx
systemctl enable nginx
systemctl status nginx
3. Ezenkívül, ha a tűzfalszolgáltatás minden ügyfélgépen fut (ezt a systemctl start firewalld futtatásával ellenőrizheti), hozzá kell adnia a HTTP és a HTTPS szolgáltatások a tűzfalkonfigurációban, amelyek lehetővé teszik, hogy a terheléselosztó kérései átjussanak a tűzfalon az Nginx webszerverekhez. Ezután töltse be újra a tűzfal szolgáltatást az új módosítások végrehajtásához (ezt tegye meg minden ügyfélgépen).
firewall-cmd --zone=public --permanent --add-service=http
firewall-cmd --zone=public --permanent --add-service=https
firewall-cmd --reload
4. Ezután nyisson meg egy webböngészőt a helyi gépeken, és tesztelje, hogy az Nginx telepítés megfelelően működik-e. Használja a kliens IP-címét a navigációhoz, miután az Nginx tesztoldalt látja, az azt jelenti, hogy az ügyfélgépre telepített webszerver megfelelően működik.
5. Ezután tesztoldalakat kell létrehoznunk az ügyfélgépeken, amelyeket a későbbiekben a HAProxy beállítás tesztelésére fogunk használni.
----------- Web Server #1 -----------
cp /usr/share/nginx/html/index.html /usr/share/nginx/html/index.html.orig
echo "Showing site from websrv1.tecmint.lan"> /usr/share/nginx/html/index.html
----------- Web Server #2 -----------
cp /usr/share/nginx/html/index.html /usr/share/nginx/html/index.html.orig
echo "Showing site from websrv2.tecmint.lan"> /usr/share/nginx/html/index.html
----------- Web Server #3 -----------
cp /usr/share/nginx/html/index.html /usr/share/nginx/html/index.html.orig
echo "Showing site from websrv3.tecmint.lan"> /usr/share/nginx/html/index.html
2. lépés: A HAProxy Server telepítése és konfigurálása CentOS 8 rendszeren
6. Most telepítse a HAProxy csomagot a HAProxy szerverre a következő parancs futtatásával.
dnf install haproxy
7. Ezután indítsa el a HAProxy szolgáltatást, engedélyezze az automatikus indítást a rendszerindításkor, és ellenőrizze az állapotát.
systemctl start haproxy
systemctl enable haproxy
systemctl status haproxy
8. Most a következő konfigurációs fájl segítségével konfiguráljuk a HAProxyt.
vi /etc/haproxy/haproxy.cfg
A konfigurációs fájl négy nagyobb részre oszlik.
- globális beállítások – az egész folyamatra kiterjedő paramétereket állít be.
- alapértelmezettek – ez a szakasz alapértelmezett paramétereket állít be a deklarációt követő összes többi szakaszhoz.
- frontend – ez a szakasz az ügyfélkapcsolatokat fogadó lehallgató socketeket írja le.
- Háttér – ez a szakasz azon kiszolgálók csoportját írja le, amelyekhez a proxy csatlakozni fog a bejövő kapcsolatok továbbításához.
A globális beállítások és az alapértelmezett opciók megértéséhez olvassa el a HAProxy dokumentációját (a cikk végén található hivatkozás). Ebben az útmutatóban az alapértelmezett értékeket fogjuk használni.
HAProxy naplózás beállítása
9. A HAProxy telepítése után jelentős szerepet fog játszani az IT-infrastruktúrában, így a naplózás konfigurálása alapvető követelmény; ez lehetővé teszi, hogy betekintést nyerjen a háttér webkiszolgálóihoz fűződő egyes kapcsolatokba.
A log paraméter (a következő képernyőképen kiemelve) egy globális Syslog-kiszolgálót deklarál (például a CentOS alapértelmezett rsyslog-kiszolgálója), amely fogadja a naplóüzeneteket. Itt több szerver is deklarálható.
Az alapértelmezett konfiguráció a localhost-ra (127.0.0.1) mutat, és a local2 az alapértelmezett létesítménykód, amely a HAProxy naplóüzeneteinek azonosítására szolgál a alatt. rsyslogt.
10. Ezután meg kell adnia az rsyslog szervernek, hogyan fogadja és dolgozza fel a HAProxy naplóüzeneteket. Nyissa meg az rsyslog konfigurációs fájlját az /etc/rsyslog.conf fájlba, vagy hozzon létre egy új fájlt az /etc/rsyslog.d könyvtárban, például /etc/rsyslog .d/haproxy.conf.
vi /etc/rsyslog.d/haproxy.conf
Másolja és illessze be a következő konfigurációt a napló gyűjtéséhez az UDP használatával az alapértelmezett 514-es porton.
$ModLoad imudp
$UDPServerAddress 127.0.0.1
$UDPServerRun 514
Adja hozzá ezeket a sorokat is, hogy utasítsa az rsyslogot, hogy két külön naplófájlba írjon a súlyosság alapján, ahol a local2 a fenti HAProxy konfigurációban meghatározott létesítménykód.
local2.* /var/log/haproxy-traffic.log
local2.notice /var/log/haproxy-admin.log
11. Mentse el a fájlt, és zárja be. Ezután indítsa újra az rsyslog szolgáltatást a legutóbbi módosítások alkalmazásához.
systemctl restart rsyslog
HAProxy előtér és háttér konfigurálása
12. Ebben a részben bemutatjuk, hogyan kell konfigurálni az előtér- és a háttérproxykat. Lépjen vissza a HAProxy konfigurációs fájlhoz, és módosítsa az alapértelmezett előtér- és háttérszakaszt az alábbiak szerint. Nem megyünk bele az egyes paraméterek részletes magyarázatába, mindig hivatkozhat a hivatalos dokumentációra.
A következő konfiguráció egy hallgatási szakaszt határoz meg, amely a HAProxy Stats oldal kiszolgálására szolgál. A bind paraméter egy figyelőt rendel egy adott IP-címhez (ebben az esetben *
) és porthoz (9000 >).
A statisztikai engedélyezés beállítás engedélyezi a statisztikai oldalt, amely a URI /stats (azaz http://server_ip:9000/stats
) használatával érhető el. .
A statisztika auth beállítás az alap hitelesítés hozzáadására szolgál az oldal elérésekor (a haproxy és a Lostp@1ss helyére cserélje ki az Ön felhasználónevét és jelszavát. választás).
listen stats
bind *:9000
stats enable
stats hide-version
stats uri /stats
stats admin if LOCALHOST
stats auth haproxy:Lostp@1ss
13. A következő konfiguráció egy TL nevű frontend szakaszt határoz meg (adhat egy tetszőleges nevet). A mode paraméter határozza meg, hogy a HAProxy milyen üzemmódban működik.
Az acl (Hozzáférés-vezérlési lista) paraméter a kérelemből kinyert tartalom alapján történő döntéshozatalra szolgál. Ebben a példában a kérést egyszerű HTTP-nek tekintjük, ha nem SSL protokollon keresztül készült.
Ezután a http-request set-header beállítás használatával HTTP-fejléc adható a kéréshez. Ez segít tájékoztatni az Nginxet arról, hogy a kezdeti kérés HTTP-n (vagy a 80-as porton) történt.
A default_backend vagy a use_backend direktíva határozza meg a háttérkiszolgálókat, ebben az esetben a TL_web_servers hivatkozik rájuk.
Vegye figyelembe, hogy a HAProxy „503 Service Unavailable error” üzenetet ad vissza, ha a kérést nem use_backend vagy default_backend irányítja. > direktíva.
frontend TL
bind *:80
mode http
acl http ssl_fc,not
http-request set-header X-Forwarded-Protocol http if http
default_backend TL_web_servers
14. Ezután meg kell határoznunk egy háttérszakaszt, ahol az egyenleg beállítás határozza meg, hogy a HAProxy hogyan választja ki a háttérkiszolgálókat a kérelem feldolgozásához, ha nem perzisztencia módszer felülírja azt a kijelölést.
A cookie direktíva lehetővé teszi a cookie-alapú megmaradást, és utasítja a HAProxyt, hogy küldjön egy SERVERID nevű cookie-t az ügyfélnek, és hogy társítsa a kezdeti választ adó kiszolgáló azonosítójával.
A server direktíva az upstream szerverek meghatározására szolgál a következő formátumban: szerver_neve (pl. websrv1), server_IP:port és beállítások.
Az egyik legfontosabb lehetőség a check, amely arra utasítja a HAProxyt, hogy folyamatosan ellenőrizze a szerver elérhetőségét, és jelentést készítsen a statisztikai oldalon.
backend TL_web_servers
mode http
balance roundrobin
option httpchk HEAD /
cookie SERVERUID insert indirect nocache
server websrv1 10.42.0.200:80 cookie websrv1 check
server websrv2 10.42.0.21:80 cookie websrv2 check
server websrv3 10.42.0.34:80 cookie websrv3 check
Jegyezze meg a többi front- és háttérszakaszt az alábbi képernyőképen látható módon. Mentse el a fájlt és zárja be.
15. Most indítsa újra a HAProxy szolgáltatást az új módosítások alkalmazásához.
systemctl restart haproxy
16. Ezután ellenőrizze, hogy a HTTP (80-as port) és a HTTPS (433-as port)) szolgáltatások megnyitása a tűzfalban az ügyfél kérések fogadására az alábbiak szerint történik. Ezenkívül nyissa meg a 9000 portot a tűzfalban a statisztikai oldal eléréséhez, és töltse be újra a tűzfal beállításait.
firewall-cmd --zone=public --permanent --add-service=http
firewall-cmd --zone=public --permanent –add-service=https
firewall-cmd --zone=public --permanent --add-port=9000/tcp
firewall-cmd --reload
3. lépés: A HAProxy beállításának tesztelése és a statisztikák megtekintése
17. Itt az ideje, hogy tesztelje a HAPRxoy beállítást. Azon a helyi asztali gépen, amelyről az összes kiszolgálót eléri, adja hozzá a következő sort az /etc/hosts fájlhoz, hogy engedélyezze a helytelen tartomány használatát.
10.42.0.247 www.tecmint.lan
18. Ezután nyissa meg a böngészőt, és navigáljon a szerver címe vagy a webhely tartománya alapján.
http://10.42.0.247/
OR
http://www.tecmint.lan/
19. A HAProxy statisztikai oldal eléréséhez használja a következő címet.
http://10.42.0.247:9000/stats
Ezután használja a HAProxy konfigurációs fájljában megadott felhasználónevet és jelszót (lásd a stats auth paramétert).
Sikeres bejelentkezés után a HAProxy statisztikai oldalra kerül, amely megmutatja a mérőszámokat, amelyek lefedik a szerverek állapotát, az aktuális kérések arányát, a válaszidőket és még sok minden mást.
A színkódokkal kapcsolatos állapotjelentés működésének bemutatására az egyik háttérkiszolgálót helyeztük el.
4. lépés: HTTPS konfigurálása a HAProxyban önaláírt SSL-tanúsítvány használatával
20. Ebben az utolsó részben bemutatjuk, hogyan konfigurálható az SSL/TLS a HAProxy szerver és az ügyfél közötti kommunikáció biztonsága érdekében. A HAProxy négy fő HTTPS konfigurációs módot támogat, de ebben az útmutatóban az SSL/TLS kitöltést fogjuk használni.
SSL/TLS tehermentesítő módban a HAProxy megfejti az ügyféloldali forgalmat, és tiszta forgalommal csatlakozik a háttérkiszolgálókhoz.
Kezdjük azzal, hogy létrehozzuk a tanúsítványt és a kulcsot a képen látható módon (a tanúsítvány létrehozása során válaszoljon a kérdésekre cége adatai alapján, a képernyőképen kiemelve).
mkdir /etc/ssl/tecmint.lan
cd /etc/ssl/tecmint.lan/
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/tecmint.lan.key -out /etc/ssl/tecmint.lan.crt
cd /etc/ssl/tecmint.lan/
cat tecmint.crt tecmint.key >tecmint.pem
ls -l
21. Ezután nyissa meg a HAProxy konfigurációs fájlt (/etc/haproxy/haproxy.cfg), és szerkessze a kezelőfelület részt.
frontend TL
bind *:80
bind *:443 ssl crt /etc/ssl/tecmint.lan/tecmint.pem
redirect scheme https if !{ ssl_fc }
mode http
acl http ssl_fc,not
acl https ssl_fc
http-request set-header X-Forwarded-Protocol http if http
http-request set-header X-Forwarded-Protocol https if https
default_backend TL_web_servers
Mentse el a fájlt és zárja be.
22. Ezután indítsa újra a HAProxy szolgáltatást az új módosítások alkalmazásához.
systemctl restart haproxy.service
23. Ezután nyisson meg egy webböngészőt, és próbálja meg még egyszer elérni a webhelyet. A böngésző hibát jelez az önaláírt tanúsítvány miatt. A folytatáshoz kattintson a Speciális gombra.
Ez minden most! Minden webalkalmazásnak megvannak a maga követelményei, meg kell terveznie és konfigurálnia kell a terheléselosztást, hogy megfeleljen az IT-infrastruktúra és az alkalmazás követelményeinek.
Ha többet szeretne megtudni az ebben az útmutatóban használt konfigurációs beállításokról, és általában a HAProxy használatáról, tekintse meg a HAProxy közösségi kiadásának hivatalos dokumentációját vagy a HAProxy vállalati verziójának dokumentációját. Kérdéseit vagy gondolatait az alábbi visszajelzési űrlapon teheti fel.