Kuidas seadistada HAProxy Nginxi koormuse tasakaalustajana CentOS 8-s


Veebirakenduste maksimaalse kättesaadavuse, mastaapsuse ja suure jõudluse tagamiseks on nüüd tavaline rakendada üleliigsust tutvustavaid tehnoloogiaid, näiteks serverite klastrid ja koormuse tasakaalustamine. Näiteks serverite klastri seadistamine, mis kõik käitavad sama (d) rakendust (rakendusi), ja seejärel liikluse jaotamiseks nende ees koormuse tasakaalustaja (te) paigutamine.

HAProxy on avatud lähtekoodiga, võimas, suure jõudlusega, usaldusväärne, turvaline ja laialt kasutatav kõrge kättesaadavusega TCP/HTTP koormuse tasakaalustaja, puhverserver ja SSL/TLS-terminal, mis on loodud väga suure liiklusega veebisaitide jaoks. See töötab usaldusväärselt hästi nii Linuxi, Solarise, FreeBSD, OpenBSD kui ka AIX operatsioonisüsteemides.

Selles juhendis on näidatud, kuidas seadistada CentOS 8-s spetsiaalne kõrge kättesaadavusega koormuse tasakaalustaja koos HAProxy-ga liikluse juhtimiseks NGINX-veebiserverite klastris. Samuti näitab see, kuidas konfigureerida SSL/TLS-i lõpetamine HAProxy-s.

Kokku 4 serverit minimaalse CentOS 8 installiga.

----------- 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. samm: Nginxi HTTP-serveri seadistamine kliendiseadmetes

1. Logige sisse kõikidesse oma CentOS 8 kliendimasinatesse ja installige Nginx veebiserver dnf paketihalduri abil, nagu näidatud.

# dnf install Nginx

2. Järgmisena käivitage Nginxi teenus, lubage sellel automaatselt süsteemi käivitamisel käivitada ja kontrollige selle olekut, kontrollides selle olekut, kasutades käske systemctl (tehke seda kõigil kliendimasinatel).

# systemctl start nginx
# systemctl enable nginx
# systemctl status nginx

3. Kui tulemüüriteenus töötab kõigis kliendimasinates (mida saate kontrollida, käivitades systemctl start firewalld), peate tulemüüri konfiguratsioonis lisama HTTP- ja HTTPS-teenused, et lubada koormuse tasakaalustaja päringute tulemüüri läbimist Nginxi veebiserveritesse. Seejärel laadige tulemüüriteenus uuesti sisse, et uued muudatused ellu viia (tehke seda kõigil kliendimasinatel).

# firewall-cmd --zone=public --permanent --add-service=http
# firewall-cmd --zone=public --permanent --add-service=https
# firewall-cmd --reload

4. Järgmisena avage oma kohalike masinate veebibrauser ja kontrollige, kas Nginxi installimine töötab hästi. Kasutage navigeerimiseks kliendi IP-sid. Kui näete Nginxi testlehte, tähendab see, et kliendiseadmesse installitud veebiserver töötab korralikult.

5. Järgmisena peame kliendimasinates looma testlehed, mida hiljem kasutame HAProxy seadistuse testimiseks.

----------- 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. samm: HAProxy Serveri installimine ja konfigureerimine CentOS 8-s

6. Nüüd installige HAProxy pakett HAProxy serverisse, käivitades järgmise käsu.

# dnf install haproxy

7. Järgmisena käivitage teenus HAProxy, lubage sellel süsteemi käivitamisel automaatselt käivitada ja kontrollige selle olekut.

# systemctl start haproxy
# systemctl enable haproxy
# systemctl status haproxy

8. Nüüd konfigureerime HAProxy järgmise konfiguratsioonifaili abil.

# vi /etc/haproxy/haproxy.cfg

Konfiguratsioonifail on jagatud neljaks suuremaks osaks.

  • globaalsed seaded - määrab kogu protsessi hõlmavad parameetrid.
  • vaikeväärtused - see jaotis määrab vaikeparameetrid kõigile teistele deklaratsioonile järgnevatele jaotistele.
  • frontend - see jaotis kirjeldab klientide ühendusi aktsepteerivate kuulamispesade komplekti.
  • Taustaprogramm - selles jaotises kirjeldatakse serverite komplekti, millega puhverserver ühendab sissetulevate ühenduste edastamiseks.

Globaalsete sätete ja vaikeväärtuste valikute mõistmiseks lugege HAProxy dokumentatsiooni (link on artikli lõpus). Selle juhendi jaoks kasutame vaikeseadeid.

9. HAProxy mängib pärast juurutamist teie IT-infrastruktuuris olulist rolli, seega on logimise konfigureerimine selle põhinõue; see võimaldab teil saada teavet iga ühenduse kohta oma taustaprogrammi veebiserveritega.

Logiparameeter (mis on esile tõstetud järgmisel ekraanipildil) deklareerib globaalse Syslogi serveri (nt rSyslog on CentOSis vaikimisi), mis võtab vastu logisõnumeid. Siin saab deklareerida mitu serverit.

Vaikekonfiguratsioon osutab localhostile (127.0.0.1) ja local2 on vaikimisi rajatiskood, mida kasutatakse rsyslogis olevate HAProxy logisõnumite tuvastamiseks.

10. Järgmisena peate rsyslogi serverile ütlema, kuidas HAProxy logisõnumeid vastu võtta ja töödelda. Avage rsyslogi konfiguratsioonifail kataloogis /etc/rsyslog.conf või looge kataloogis /etc/rsyslog.d uus fail, näiteks /etc/rsyslog.d/haproxy.conf.

# vi /etc/rsyslog.d/haproxy.conf

UDP-ga logi kogumiseks vaikeporti 514 kopeerige ja kleepige järgmine konfiguratsioon.

$ModLoad imudp 
$UDPServerAddress 127.0.0.1 
$UDPServerRun 514 

Lisage ka need read, et anda rsyslogile ülesandeks kirjutada raskusastme järgi kahte eraldi logifaili, kus local2 on ülaltoodud HAProxy konfiguratsioonis määratletud rajatise kood.

local2.* 	/var/log/haproxy-traffic.log 
local2.notice 	/var/log/haproxy-admin.log

11. Salvestage fail ja sulgege see. Seejärel taaskäivitage rsyslogi teenus viimaste muudatuste rakendamiseks.

# systemctl restart rsyslog

12. Selles osas demonstreerime, kuidas konfigureerida eesmise ja tagumise otsa puhverservereid. Minge tagasi HAProxy konfiguratsioonifaili ja muutke esiotsa ja taustaprogrammi vaikesektsioone järgmiselt. Me ei hakka iga parameetri üksikasjalikku selgitust tegema, võite alati viidata ametlikule dokumentatsioonile.

Järgmine konfiguratsioon määratleb lehe HAProxy Stats teenindamiseks kasutatava kuulamisjaotise. Sidumisparameeter määrab kuulaja antud IP-aadressile ( * sel juhul kõigile) ja porti (9000).

Statistika lubamise seade võimaldab statistikalehte, millele pääseb juurde URI/stats (st http:// server_ip: 9000/stats ) abil.

Stats auth seadistust kasutatakse põhilise autentimise lisamiseks lehele sisenemisel (asendage haproksü ja [email email] valitud kasutajanime ja parooliga).

listen stats
    bind *:9000
    stats enable
    stats hide-version
    stats uri /stats
    stats admin if LOCALHOST
    stats auth haproxy:[email protected]

13. Järgmine konfiguratsioon määratleb kasutajaliidese sektsiooni TL (saate anda oma maitse järgi nime). Režiimi parameeter määratleb režiimi, milles HAProxy töötab.

Parameetrit acl (pääsukontrolli loend) kasutatakse otsuse tegemiseks päringust eraldatud sisu põhjal. Selles näites loetakse taotlust tavaliseks HTTP-ks, kui seda ei tehta SSL-i kaudu.

Seejärel kasutatakse HTTP-päise lisamiseks päringusse sätet http-request set-header. See aitab Nginxit teavitada, et esialgne taotlus tehti HTTP kaudu (või pordi 80 kaudu).

Direktiiv default_backend või use_backend määratleb taustaprogrammid, millele sel juhul viitavad TL_web_servers.

Pange tähele, et HAProxy tagastab vea „Teenuse kättesaamatus 503”, kui päringut ei suunata kasutamis- või vaikenuputagavusdirektiiviga.

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. Seejärel peame määratlema taustaprogrammi jaotise, kus tasakaalu seade määrab, kuidas HAProxy valib taustserverid päringu töötlemiseks, kui ükski püsivuse meetod ei alista seda valikut.

Küpsisdirektiiv võimaldab küpsistel põhinevat püsivust, see käsib HAProxy'l saata kliendile küpsis nimega SERVERID ja seostada see algse vastuse andnud serveri ID-ga.

Serveri käskkirja kasutatakse ülesvoolu serverite määratlemiseks vormingus sever_name (nt websrv1), server_IP: port ja suvandid.

Üheks võtmevõimaluseks on kontroll, mis käsib HAProxy'l jätkata serveri kättesaadavuse kontrollimist ja statistika lehel aruandlust.

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

Kommenteerige kõiki muid esiosa ja taustaprogrammi jaotisi, nagu on näidatud järgneval ekraanipildil. Salvestage fail ja sulgege see.

15. Nüüd taaskäivitage HAProxy teenus uute muudatuste rakendamiseks.

# systemctl restart haproxy

16. Järgmisena veenduge, et HTTP (port 80) ja HTTPS (port 433) teenused on tulemüüris avatud järgmiste klientide taotluste vastuvõtmiseks. Samuti avage tulemüüris port 9000, et pääseda juurde statistika lehele, ja laadige tulemüüri seaded uuesti.

# 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. samm: HAProxy seadistamise testimine ja statistika vaatamine

17. Nüüd on aeg testida HAPrxoy seadistust. Lisage kohalikus töölauaarvutis, kust pääsete juurde kõigile serveritele, failis/etc/hosts järgmine rida, et saaksime mannekeenisaidi domeeni kasutada.

10.42.0.247  www.tecmint.lan

18. Seejärel avage brauser ja navigeerige kas serveri aadressi või saidi domeeni abil.

http://10.42.0.247/
OR
http://www.tecmint.lan/

19. HAProxy statistika lehele pääsemiseks kasutage järgmist aadressi.

http://10.42.0.247:9000/stats

Seejärel kasutage kasutajanime ja parooli, mille määrasite HAProxy konfiguratsioonifailis (vaadake parameetrit stats auth).

Pärast edukat sisselogimist jõuate HAProxy statistika lehele, kus kuvatakse mõõdikud, mis hõlmavad teie serverite seisundit, praeguseid taotluste määrasid, reageerimisaegu ja palju muud.

Et näidata, kuidas olekuraport värvikoodide osas töötab, oleme pannud ühe tagalaserveritest.

4. samm: HTTPS-i konfigureerimine rakenduses HAProxy, kasutades ise allkirjastatud SSL-sertifikaati

20. Selles viimases osas demonstreerime, kuidas konfigureerida SSL/TLS kogu HAProxy serveri ja kliendi vahelise side kaitsmiseks. HAProxy toetab nelja suurt HTTPS-i konfigureerimisrežiimi, kuid selle juhendi jaoks kasutame SSL/TLS-i mahalaadimist.

SSL/TLS-i mahalaadimisrežiimis dešifreerib HAProxy kliendipoolse liikluse ja ühendub selge liiklusega taustaprogrammidega.

Alustame sertifikaadi ja võtme loomisega, nagu näidatud (vastake küsimustele vastavalt ettevõtte üksikasjadele sertifikaadi loomise ajal, nagu ekraanipildil esile tõstetud).

# 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. Järgmisena avage HAProxy konfiguratsioonifail (/etc/haproxy/haproxy.cfg) ja redigeerige esiosa jaotist.

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

Salvestage fail ja sulgege see.

22. Seejärel taaskäivitage HAProxy teenus uute muudatuste rakendamiseks.

# systemctl restart haproxy.service

23. Seejärel avage veebibrauser ja proovige veel kord saidile juurde pääseda. Brauser kuvab ise allkirjastatud sertifikaadi tõttu tõrke, jätkamiseks klõpsake nuppu Täpsem.

Praeguseks kõik! Igal veebirakendusel on oma nõuded. Peate kavandama ja konfigureerima koormuse tasakaalustamise, et see vastaks teie IT-infrastruktuurile ja rakenduse nõuetele.

Mõne selles juhendis kasutatud konfiguratsioonivaliku ja üldiselt HAProxy kasutamise kohta lisateabe saamiseks vaadake ametlikku HAProxy ettevõtte versiooni dokumentatsiooni. Küsimusi või mõtteid saate postitada alloleva tagasiside vormi kaudu.