Kif Twaqqaf HAProxy bħala Load Balancer għal Nginx fuq CentOS 8
Biex tiġi żgurata d-disponibbiltà, l-iskalabbiltà u l-prestazzjoni għolja tal-applikazzjonijiet tal-web massimi, issa huwa komuni li jiġu implimentati teknoloġiji li jintroduċu redundancy, bħall-raggruppament tas-server u l-ibbilanċjar tat-tagħbija. Per eżempju, it-twaqqif ta 'cluster ta' servers li kollha jmexxu l-istess applikazzjoni(i) u mbagħad skjerament load balancer(s) quddiemhom biex iqassmu t-traffiku.
HAProxy huwa bilanċjar tat-tagħbija TCP/HTTP b'sors miftuħ, b'saħħtu, ta' prestazzjoni għolja, affidabbli, sigur u użat ħafna b'disponibbiltà għolja, proxy server u terminatur SSL/TLS mibni għal siti web ta' traffiku għoli ħafna. Hija taħdem tajjeb b'mod affidabbli fuq Linux, Solaris, FreeBSD, OpenBSD kif ukoll sistemi operattivi AIX.
Din il-gwida turi kif twaqqaf bilanċjar tat-tagħbija ta 'disponibbiltà għolja dedikat b'HAProxy fuq CentOS 8 biex tikkontrolla t-traffiku f'grupp ta' servers tal-web NGINX. Juri wkoll kif tikkonfigura t-terminazzjoni SSL/TLS f'HAProxy.
Total ta '4 servers b'installazzjoni minima ta' CentOS 8.
----------- 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
Pass 1: Twaqqif ta 'Nginx HTTP Server fuq il-Magni tal-Klijent
1. Idħol fil-magni kollha tal-klijenti CentOS 8 tiegħek u installa s-server tal-web Nginx billi tuża l-maniġer tal-pakketti dnf kif muri.
# dnf install Nginx
2. Sussegwentement, ibda s-servizz Nginx, għalissa, ippermettilu jibda awtomatikament fil-boot tas-sistema u kkonferma li huwa jaħdem billi tivverifika l-istatus tagħha, billi tuża l-kmandi systemctl (agħmel dan fuq il-magni tal-klijenti kollha).
# systemctl start nginx # systemctl enable nginx # systemctl status nginx
3. Ukoll, jekk is-servizz firewalld qed jaħdem fuq il-magni tal-klijenti kollha (li tista 'tiċċekkja billi tħaddem systemctl start firewalld), trid iżżid is-servizzi HTTP u HTTPS fil-konfigurazzjoni tal-firewall biex tippermetti li t-talbiet mill-load balancer jgħaddu mill-firewall għas-servers tal-web Nginx. Imbagħad erġa' tagħbija s-servizz tal-firewalld biex taffettwa l-bidliet il-ġodda (agħmel dan fuq il-magni tal-klijenti kollha).
# firewall-cmd --zone=public --permanent --add-service=http # firewall-cmd --zone=public --permanent --add-service=https # firewall-cmd --reload
4. Sussegwentement, iftaħ web browser fuq il-magni lokali tiegħek u ttestja jekk l-installazzjoni ta 'Nginx tkunx qed taħdem sew. Uża l-IP tal-klijent biex tinnaviga, ladarba tara l-paġna tat-test Nginx, dan ifisser li s-server tal-web installat fuq il-magna tal-klijent qed jaħdem kif suppost.
5. Sussegwentement, irridu noħolqu paġni tat-test fuq il-magni tal-klijenti li se nużaw aktar tard biex nittestjaw is-setup HAProxy.
----------- 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
Pass 2: Installazzjoni u Konfigurazzjoni ta 'HAProxy Server fuq CentOS 8
6. Issa installa l-pakkett HAProxy fuq is-server HAProxy billi tħaddem il-kmand li ġej.
# dnf install haproxy
7. Sussegwentement, ibda s-servizz HAProxy, ppermettilu li jibda awtomatikament fil-boot tas-sistema u ivverifika l-istatus tiegħu.
# systemctl start haproxy # systemctl enable haproxy # systemctl status haproxy
8. Issa aħna se tikkonfigura l-HAProxy billi tuża l-fajl ta 'konfigurazzjoni li ġej.
# vi /etc/haproxy/haproxy.cfg
Il-fajl tal-konfigurazzjoni huwa maqsum f'erba 'taqsimiet ewlenin.
- settings globali – jistabbilixxi parametri għall-proċess kollu.
- defaults – din it-taqsima tistabbilixxi parametri default għat-taqsimiet l-oħra kollha wara d-dikjarazzjoni tagħha.
- frontend – din it-taqsima tiddeskrivi sett ta’ sockets tas-smigħ li jaċċettaw konnessjonijiet tal-klijenti.
- Backend - din it-taqsima tiddeskrivi sett ta' servers li magħhom il-proxy se jgħaqqad biex jgħaddi l-konnessjonijiet deħlin.
Biex tifhem l-għażliet taħt is-settings globali u l-inadempjenzi, aqra d-dokumentazzjoni HAProxy (link ipprovduta fl-aħħar tal-artiklu). Għal din il-gwida, se nużaw in-nuqqasijiet.
9. HAProxy meta skjerat se jkollu rwol sinifikanti fl-infrastruttura tal-IT tiegħek, u b'hekk il-konfigurazzjoni tal-illoggjar għaliha hija rekwiżit bażiku; dan jippermettilek tikseb għarfien dwar kull konnessjoni mas-servers tal-web backend tiegħek.
Il-parametru log (enfasizzat fil-screenshot li ġej) jiddikjara server Syslog globali (bħal rsyslog il-default f'CentOS) li se jirċievi messaġġi log. Aktar minn server wieħed jista' jiġi ddikjarat hawn.
Il-konfigurazzjoni default tipponta lejn il-localhost (127.0.0.1) u local2 huwa l-kodiċi tal-faċilità default użat biex jidentifika messaġġi log HAProxy taħt rsyslog.
10. Sussegwentement, trid tgħid lis-server rsyslog kif tirċievi u tipproċessa messaġġi log HAProxy. Iftaħ il-fajl tal-konfigurazzjoni rsyslog għal /etc/rsyslog.conf jew oħloq fajl ġdid fid-direttorju /etc/rsyslog.d, pereżempju /etc/rsyslog.d/haproxy.conf.
# vi /etc/rsyslog.d/haproxy.conf
Ikkopja u waħħal il-konfigurazzjoni li ġejja biex tiġbor log ma 'UDP fuq il-port default 514.
$ModLoad imudp $UDPServerAddress 127.0.0.1 $UDPServerRun 514
Żid ukoll dawn il-linji biex tagħti struzzjonijiet lil rsyslog biex jikteb f'żewġ log files separati bbażati fuq is-severità, fejn local2 huwa l-kodiċi tal-faċilità definit fil-konfigurazzjoni HAProxy hawn fuq.
local2.* /var/log/haproxy-traffic.log local2.notice /var/log/haproxy-admin.log
11. Issejvja l-fajl u agħlaqha. Imbagħad erġa ibda s-servizz rsyslog biex tapplika l-bidliet riċenti.
# systemctl restart rsyslog
12. F'din it-taqsima, se nuru kif tikkonfigura l-prokuri front-end u back-end. Mur lura għall-fajl ta 'konfigurazzjoni HAProxy u mmodifika s-sezzjonijiet default ta' front-end u backend kif ġej. Mhux se nidħlu fi spjegazzjoni dettaljata ta 'kull parametru, tista' dejjem tirreferi għad-dokumentazzjoni uffiċjali.
Il-konfigurazzjoni li ġejja tiddefinixxi taqsima ta 'smigħ użata biex isservi l-paġna ta' Stats HAProxy. Il-parametru bind jassenja semmiegħa għal indirizz IP partikolari (*
għal kulħadd f'dan il-każ) u port (9000).
L-issettjar ta' stats enable jippermetti l-paġna tal-istatistika li se tiġi aċċessata bl-użu tal-URI /stats (jiġifieri http://server_ip:9000/stats
).
L-issettjar tal-awtentikazzjoni tal-istatistiċi jintuża biex iżżid awtentikazzjoni bażika meta taċċessa l-paġna (issostitwixxi haproxy u [email b'isem tal-utent u password tal-għażla tiegħek).
listen stats bind *:9000 stats enable stats hide-version stats uri /stats stats admin if LOCALHOST stats auth haproxy:[email
13. Il-konfigurazzjoni li jmiss tiddefinixxi sezzjoni ta 'frontend imsejħa TL (tista' tagħti isem li tixtieq). Il-parametru tal-modalità jiddefinixxi l-mod li fih jaħdem HAProxy.
Il-parametru acl (Lista ta' Kontroll tal-Aċċess) jintuża biex tieħu deċiżjoni bbażata fuq il-kontenut estratt mit-talba. F'dan l-eżempju, it-talba titqies bħala HTTP sempliċi jekk ma ssirx fuq SSL.
Imbagħad l-issettjar http-request set-header jintuża biex iżżid header HTTP mat-talba. Dan jgħin biex jinforma lil Nginx li t-talba inizjali saret fuq HTTP (jew permezz tal-port 80).
Id-direttiva default_backend jew use_backend tiddefinixxi s-servers backend, f'dan il-każ, referenzjati minn TL_web_servers.
Innota li HAProxy se jirritorna żball 503 Servizz Mhux Disponibbli jekk talba ma tiġix indirizzata minn direttiva use_backend jew default_backend.
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. Imbagħad irridu niddefinixxu taqsima backend fejn l-issettjar tal-bilanċ jiddefinixxi kif HAProxy jagħżel is-servers back-end biex jipproċessaw talba jekk l-ebda metodu ta 'persistenza ma jegħleb dik l-għażla.
Id-direttiva tal-cookie tippermetti persistenza bbażata fuq cookie, tagħti struzzjonijiet lil HAProxy biex tibgħat cookie bl-isem SERVERID lill-klijent u jassoċjaha mal-ID tas-server li ta r-rispons inizjali.
Id-direttiva tas-server tintuża biex tiddefinixxi s-servers upstream fil-format isem_server (eż. websrv1), IP_server:port u għażliet.
Għażla ewlenija hija verifika li tgħid lil HAProxy biex tkompli tiċċekkja fuq id-disponibbiltà ta 'server u tirrapporta fuq il-paġna tal-istatistiċi.
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
Ikkummenta kwalunkwe sezzjoni oħra ta 'frontend u backend kif muri fil-screenshot li ġej. Issejvja l-fajl u agħlaqha.
15. Issa erġa ibda s-servizz HAProxy biex tapplika l-bidliet il-ġodda.
# systemctl restart haproxy
16. Sussegwentement, kun żgur li s-servizzi HTTP (port 80) u HTTPS (port 433) jinfetħu fil-firewall biex jaċċettaw it-talbiet tal-klijenti kif ġej. Ukoll, iftaħ il-port 9000 fil-firewall għall-aċċess għall-paġna tal-istatistiċi u erġa' tagħbija s-settings tal-firewall.
# 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
Pass 3: Ittestja s-Setup ta 'HAProxy u l-Istatistika tal-Wiri
17. Issa wasal iż-żmien li tittestja s-setup tal-HAPrxoy. Fuq il-magna tad-desktop lokali minn fejn qed taċċessa s-servers kollha, żid il-linja li ġejja fil-fajl /etc/hosts biex inkunu nistgħu nużaw id-dominju tas-sit finta.
10.42.0.247 www.tecmint.lan
18. Imbagħad iftaħ browser u naviga billi tuża jew l-indirizz tas-server jew id-dominju tas-sit.
http://10.42.0.247/ OR http://www.tecmint.lan/
19. Biex taċċessa l-paġna tal-istatistika HAProxy, uża l-indirizz li ġej.
http://10.42.0.247:9000/stats
Imbagħad uża l-isem tal-utent u l-password li ddefinijt fil-fajl tal-konfigurazzjoni HAProxy (irreferi għall-parametru tal-awtentikazzjoni tal-istatistiċi).
Wara login b'suċċess, int se tinżel fil-paġna tal-istatistika HAProxy li turik metriċi li jkopru s-saħħa tas-servers tiegħek, ir-rati attwali tat-talbiet, il-ħinijiet ta 'rispons, u ħafna aktar.
Biex nuru kif jaħdem ir-rapport tal-istatus fir-rigward tax-xogħol tal-kodiċijiet tal-kulur, poġġejna wieħed mis-servers back-end.
Pass 4: Konfigurazzjoni ta' HTTPS f'HAProxy Bl-użu ta' Ċertifikat SSL iffirmat waħdu
20. F'din it-taqsima finali, aħna se nuru kif tikkonfigura SSL/TLS biex niżguraw il-komunikazzjonijiet kollha bejn is-server HAProxy u l-klijent. HAProxy jappoġġja erba 'modi ta' konfigurazzjoni HTTPS ewlenin, iżda għal din il-gwida, se nużaw l-iskarikar SSL/TLS.
Fil-modalità ta 'slowload SSL/TLS, HAProxy jiddeċifra t-traffiku fuq in-naħa tal-klijent u jiġi konness fi traffiku ċar mas-servers backend.
Nibdew billi noħolqu ċ-ċertifikat u ċ-ċavetta kif muri (wieġeb il-mistoqsijiet kif xieraq ibbażati fuq id-dettalji tal-kumpanija tiegħek waqt il-ħolqien taċ-ċertifikat, kif enfasizzat fuq il-screenshot).
# 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. Sussegwentement, iftaħ il-fajl tal-konfigurazzjoni HAProxy (/etc/haproxy/haproxy.cfg) u editja t-taqsima ta 'quddiem.
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
Issejvja l-fajl u agħlaqha.
22. Imbagħad erġa ibda s-servizz HAProxy biex tapplika l-bidliet il-ġodda.
# systemctl restart haproxy.service
23. Sussegwentement, iftaħ web browser u pprova jaċċessa s-sit għal darb'oħra. Il-browser se juri żball minħabba ċ-ċertifikat iffirmat minnu nnifsu, ikklikkja Avvanzata biex tipproċedi.
Dak kollu għalissa! Kull applikazzjoni tal-web għandha s-sett ta 'rekwiżiti tagħha stess, għandek bżonn tfassal u tikkonfigura l-ibbilanċjar tat-tagħbija biex taqdi l-infrastruttura tal-IT tiegħek u r-rekwiżiti tal-applikazzjoni.
Biex tikseb aktar għarfien dwar xi wħud mill-għażliet ta 'konfigurazzjoni użati f'din il-gwida, u ġeneralment kif tuża HAProxy, ara d-dokumentazzjoni uffiċjali tal-verżjoni tal-intrapriża HAProxy. Tista' tpoġġi kwalunkwe mistoqsija jew ħsibijiet permezz tal-formola ta' feedback hawn taħt.