Giunsa ang Pag-setup sa HAProxy ingon Load Balancer alang sa Nginx sa CentOS 8
Aron masiguro ang labing kadaghan nga magamit sa aplikasyon sa web, scalability, ug taas nga pasundayag, kasagaran na karon nga ipatuman ang mga teknolohiya nga nagpaila sa redundancy, sama sa clustering sa server ug pagbalanse sa load. Pananglitan, ang pag-set up og cluster sa mga server nga ang tanan nagpadagan sa parehas nga (mga) aplikasyon ug dayon nag-deploy sa (mga) load balancer sa ilang atubangan aron maapod-apod ang trapiko.
Ang HAProxy usa ka open-source, gamhanan, taas nga performance, kasaligan, luwas ug kaylap nga gigamit nga high availability TCP/HTTP load balancer, proxy server ug SSL/TLS terminator nga gitukod para sa taas kaayo nga traffic web site. Masaligan kini nga nagdagan sa Linux, Solaris, FreeBSD, OpenBSD ingon man sa mga operating system sa AIX.
Gipakita niini nga giya kung unsaon pag-set up ang usa ka dedikado nga high availability load balancer nga adunay HAProxy sa CentOS 8 aron makontrol ang trapiko sa usa ka cluster sa NGINX web server. Gipakita usab niini kung giunsa ang pag-configure sa pagtapos sa SSL/TLS sa HAProxy.
Usa ka kinatibuk-an nga 4 nga mga server nga adunay gamay nga pag-install sa 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
Lakang 1: Pag-set up sa Nginx HTTP Server sa Client Machines
1. Pag-log in sa tanan nimong CentOS 8 client machines ug i-install ang Nginx web server gamit ang dnf package manager sama sa gipakita.
# dnf install Nginx
2. Sunod, sugdi ang serbisyo sa Nginx, sa pagkakaron, himoa kini nga awtomatiko nga magsugod sa system boot ug kumpirmahi nga kini anaa na ug nagdagan pinaagi sa pagsusi sa status niini, gamit ang systemctl commands (buhata kini sa tanan nga mga makina sa kliyente).
# systemctl start nginx # systemctl enable nginx # systemctl status nginx
3. Usab, kung ang serbisyo sa firewalld nagdagan sa tanan nga mga makina sa kliyente (nga mahimo nimong susihon pinaagi sa pagpadagan sa systemctl magsugod firewalld), kinahanglan nimong idugang ang mga serbisyo sa HTTP ug HTTPS sa pag-configure sa firewall aron tugutan ang mga hangyo gikan sa load balancer nga moagi sa firewall ngadto sa Nginx web servers. Unya i-reload ang serbisyo sa firewalld aron mabuhat ang mga bag-ong pagbag-o (buhata kini sa tanan nga mga makina sa kliyente).
# firewall-cmd --zone=public --permanent --add-service=http # firewall-cmd --zone=public --permanent --add-service=https # firewall-cmd --reload
4. Sunod, ablihi ang usa ka web browser sa imong lokal nga mga makina ug sulayi kung ang pag-instalar sa Nginx maayo ba. Gamita ang IP sa kliyente sa pag-navigate, sa higayon nga makita nimo ang pahina sa pagsulay sa Nginx, kini nagpasabut nga ang web server nga na-install sa makina sa kliyente nagtrabaho sa husto.
5. Sunod, kinahanglan namong maghimo ug mga panid sa pagsulay sa mga makina sa kliyente nga among gamiton unya sa pagsulay sa HAProxy setup.
----------- 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
Lakang 2: Pag-instalar ug Pag-configure sa HAProxy Server sa CentOS 8
6. Karon i-install ang HAProxy package sa HAProxy server pinaagi sa pagpadagan sa mosunod nga sugo.
# dnf install haproxy
7. Sunod, sugdi ang serbisyo sa HAProxy, i-enable kini nga auto-start sa system boot ug verify ang status niini.
# systemctl start haproxy # systemctl enable haproxy # systemctl status haproxy
8. Karon atong i-configure ang HAProxy gamit ang mosunod nga configuration file.
# vi /etc/haproxy/haproxy.cfg
Ang configuration file gibahin ngadto sa upat ka dagkong mga seksyon.
- global settings – nagtakda sa process-wide parameters.
- mga default - kini nga seksyon nagtakda sa mga default nga parameter alang sa tanan nga uban nga mga seksyon pagkahuman sa deklarasyon niini.
- frontend – kini nga seksyon naghulagway sa usa ka set sa mga listening socket nga nagdawat sa mga koneksyon sa kliyente.
- Backend – kini nga seksyon naghulagway sa usa ka set sa mga server diin ang proxy magkonektar sa pagpasa sa umaabot nga mga koneksyon.
Aron masabtan ang mga opsyon ubos sa global settings ug defaults, basaha ang HAProxy documentation (link nga gihatag sa katapusan sa artikulo). Alang niini nga giya, among gamiton ang mga default.
9. Ang HAProxy kung ma-deploy na adunay dakong papel sa imong imprastraktura sa IT, busa ang pag-configure sa pag-log alang niini usa ka batakang kinahanglanon; kini nagtugot kanimo nga makakuha og mga panabut bahin sa matag koneksyon sa imong backend web server.
Ang log parameter (gipasiugda sa mosunod nga screenshot) nagpahayag sa usa ka global Syslog server (sama sa rsyslog ang default sa CentOS) nga makadawat og mga mensahe sa log. Labaw sa usa ka server ang mahimong ipahayag dinhi.
Ang default configuration nagpunting sa localhost (127.0.0.1) ug local2 mao ang default facility code nga gigamit sa pag-ila sa HAProxy log messages ubos sa rsyslog.
10. Sunod, kinahanglan nimo isulti sa rsyslog server kung giunsa pagdawat ug pagproseso ang mga mensahe sa log sa HAProxy. Ablihi ang rsyslog configuration file ngadto sa /etc/rsyslog.conf o paghimo ug bag-ong file sulod sa /etc/rsyslog.d directory, pananglitan /etc/rsyslog.d/haproxy.conf.
# vi /etc/rsyslog.d/haproxy.conf
Kopyaha ug idikit ang mosunod nga configuration aron makolekta ang log gamit ang UDP sa default port 514.
$ModLoad imudp $UDPServerAddress 127.0.0.1 $UDPServerRun 514
Idugang usab kini nga mga linya sa pagtudlo sa rsyslog sa pagsulat sa duha ka separado nga mga file sa log base sa kagrabe, diin ang local2 mao ang code sa pasilidad nga gihubit sa HAProxy configuration sa ibabaw.
local2.* /var/log/haproxy-traffic.log local2.notice /var/log/haproxy-admin.log
11. I-save ang file ug isira kini. Unya i-restart ang serbisyo sa rsyslog aron magamit ang bag-ong mga pagbag-o.
# systemctl restart rsyslog
12. Niini nga seksyon, among ipakita kung giunsa ang pag-configure sa front-end ug back-end nga mga proxy. Balik sa HAProxy configuration file ug usba ang default front-end ug backend nga mga seksyon sama sa mosunod. Dili kami moadto sa usa ka detalyado nga pagpatin-aw sa matag parameter, mahimo ka kanunay mag-refer sa opisyal nga dokumentasyon.
Ang mosunod nga configuration naghubit sa usa ka seksyon sa pagpamati nga gigamit sa pag-alagad sa HAProxy Stats nga panid. Ang bind parameter nag-assign sa tigpaminaw sa gihatag nga IP address (*
para sa tanan niini nga kaso) ug port (9000).
Ang stats enable setting makapahimo sa statistics page nga ma-access gamit ang URI /stats (ie http://server_ip:9000/stats
).
Ang stats auth setting kay gigamit para makadugang ug basic authentication sa pag-access sa page (puli sa haproxy ug [email sa username ug password nga imong gusto).
listen stats bind *:9000 stats enable stats hide-version stats uri /stats stats admin if LOCALHOST stats auth haproxy:[email
13. Ang sunod nga configuration naghubit sa usa ka frontend nga seksyon nga gitawag og TL (mahimo nimong ihatag ang ngalan nga imong gusto). Ang parameter sa mode naghubit sa mode nga naglihok sa HAProxy.
Ang acl (Access Control List) nga parameter gigamit sa paghimo og desisyon base sa sulod nga gikuha gikan sa hangyo. Niini nga pananglitan, ang hangyo giisip nga yano nga HTTP kung wala kini gihimo sa SSL.
Unya ang http-request set-header setting gigamit sa pagdugang og HTTP header sa hangyo. Nakatabang kini sa pagpahibalo sa Nginx nga ang una nga hangyo gihimo sa HTTP (o pinaagi sa port 80).
Ang default_backend o use_backend nga direktiba naghubit sa mga backend server, sa kini nga kaso, gi-refer sa TL_web_servers.
Timan-i nga ang HAProxy magbalik ug \503 Service Unavailable error kung ang usa ka hangyo wala madala sa usa ka use_backend o default_backend nga direktiba.
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. Dayon kinahanglan natong ipasabot ang usa ka backend nga seksyon diin ang balanse nga setting naghubit kon giunsa pagpili sa HAProxy ang mga back-end nga mga server aron maproseso ang usa ka hangyo kung walay pamaagi sa pagpadayon nga nag-override sa maong pagpili.
Ang cookie nga direktiba makapahimo sa cookie-based nga pagpadayon, kini nagtudlo sa HAProxy sa pagpadala sa usa ka cookie nga ginganlag SERVERID ngadto sa kliyente ug sa pag-associate niini sa ID sa server nga naghatag sa unang tubag.
Ang direktiba sa server gigamit sa paghubit sa mga upstream server sa format nga sever_name (eg websrv1), server_IP:port ug mga kapilian.
Usa ka yawe nga kapilian mao ang pagsusi nga nagsulti sa HAProxy nga magpadayon sa pagsusi sa pagkaanaa sa usa ka server ug pagreport sa panid sa stats.
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
Ikomento ang bisan unsang ubang frontend ug backend nga mga seksyon sama sa gipakita sa screenshot nga nagsunod. I-save ang file ug isira kini.
15. Karon i-restart ang serbisyo sa HAProxy aron magamit ang bag-ong mga pagbag-o.
# systemctl restart haproxy
16. Sunod, siguroha nga ang HTTP (port 80) ug HTTPS (port 433) nga mga serbisyo giablihan sa firewall aron dawaton ang mga hangyo sa kliyente sama sa mosunod. Usab, ablihi ang port 9000 sa firewall para ma-access ang stats page ug i-reload ang mga setting sa 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
Lakang 3: Pagsulay sa HAProxy Setup ug Viewing Statistics
17. Karon na ang panahon sa pagsulay sa setup sa HAPrxoy. Sa lokal nga desktop machine diin imong gi-access ang tanan nga mga server gikan, idugang ang mosunod nga linya sa /etc/hosts file aron magamit namo ang dummy site domain.
10.42.0.247 www.tecmint.lan
18. Dayon ablihi ang browser ug navigate gamit ang adres sa server o domain sa site.
http://10.42.0.247/ OR http://www.tecmint.lan/
19. Aron maka-access sa HAProxy statistics page, gamita ang mosunod nga adres.
http://10.42.0.247:9000/stats
Dayon gamita ang username ug password nga imong gipasabot sa HAProxy configuration file (refer sa stats auth parameter).
Pagkahuman sa usa ka malampuson nga pag-login, moabut ka sa panid sa istatistika sa HAProxy nga nagpakita kanimo mga sukatan nga nagsakup sa kahimsog sa imong mga server, karon nga rate sa paghangyo, mga oras sa pagtubag, ug daghan pa.
Aron ipakita kung giunsa paglihok ang taho sa status bahin sa mga code sa kolor, gibutang namon ang usa sa mga back-end server.
Lakang 4: Pag-configure sa HTTPS sa HAProxy Gamit ang Self-signed SSL Certificate
20. Niining katapusang seksyon, among ipakita kung unsaon pag-configure ang SSL/TLS aron masiguro ang tanang komunikasyon tali sa HAProxy server ug kliyente. Ang HAProxy nagsuporta sa upat ka dagkong HTTPS configuration modes, apan alang niini nga giya, atong gamiton ang SSL/TLS offloading.
Sa SSL/TLS offloading mode, ang HAProxy nag-decipher sa trapiko sa kilid sa kliyente ug makonektar sa klaro nga trapiko sa mga backend server.
Magsugod kami pinaagi sa paghimo sa sertipiko ug yawe sama sa gipakita (tubaga ang mga pangutana sumala sa mga detalye sa imong kompanya sa panahon sa paghimo sa sertipiko, ingon gipasiugda sa 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. Sunod, ablihi ang HAProxy configuration file (/etc/haproxy/haproxy.cfg) ug i-edit ang front-end nga seksyon.
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
I-save ang file ug isira kini.
22. Dayon i-restart ang serbisyo sa HAProxy aron magamit ang bag-ong mga kausaban.
# systemctl restart haproxy.service
23. Sunod, pag-abli sa usa ka web browser ug pagsulay sa pag-access sa site sa makausa pa. Ang browser magpakita sa usa ka sayup tungod sa gipirmahan sa kaugalingon nga sertipiko, i-klik ang Advanced aron magpadayon.
Kana lang sa pagkakaron! Ang matag aplikasyon sa web adunay kaugalingon nga hugpong sa mga kinahanglanon, kinahanglan nimo nga magdesinyo ug mag-configure sa pagbalanse sa load aron mahiangay sa imong imprastraktura sa IT ug mga kinahanglanon sa aplikasyon.
Aron makakuha og dugang nga mga panabut sa pipila sa mga kapilian sa pag-configure nga gigamit niini nga giya, ug sa kasagaran kung giunsa paggamit ang HAProxy, tan-awa ang opisyal nga dokumentasyon sa bersyon sa negosyo sa HAProxy. Mahimo nimong i-post ang bisan unsang pangutana o hunahuna pinaagi sa porma sa feedback sa ubos.