Weboldal keresés

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 HAProxy503 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.