Ang paghubad sa artikulo giandam sa bisperas sa pagsugod sa kurso
Ang pagbalanse sa load usa ka komon nga solusyon alang sa horizontally scaling nga mga aplikasyon sa web sa daghang mga host samtang naghatag sa mga tiggamit og usa ka punto sa pag-access sa serbisyo.
Ang HAProxy naningkamot nga ma-optimize ang paggamit sa kahinguhaan, ma-maximize ang throughput, mamenosan ang oras sa pagtubag, ug malikayan ang pag-overload sa bisan unsang indibidwal nga kapanguhaan. Mahimo kini nga ma-install sa lainlaing mga distribusyon sa Linux, sama sa CentOS 8, nga atong ipunting sa kini nga giya, ingon man mga sistema.
Ang HAProxy labi nga angay alang sa mga website nga adunay taas kaayo nga trapiko ug busa kanunay nga gigamit aron mapauswag ang kasaligan ug paghimo sa mga pag-configure sa serbisyo sa web nga daghang server. Kini nga giya naglatid sa mga lakang sa pag-set up sa HAProxy isip usa ka load balancer sa usa ka CentOS 8 cloud host, nga nag-ruta sa trapiko sa imong mga web server.
Isip usa ka kinahanglanon alang sa labing maayo nga mga resulta, kinahanglan nga adunay labing menos duha ka mga web server ug usa ka server sa pagbalanse sa load. Ang mga web server kinahanglan nga nagdagan labing menos usa ka sukaranan nga serbisyo sa web sama sa nginx o httpd aron masulayan ang pagbalanse sa load tali kanila.
Pag-instalar sa HAProxy sa CentOS 8
Tungod kay ang HAProxy usa ka paspas nga nag-uswag nga bukas nga gigikanan nga aplikasyon, ang pag-apod-apod nga magamit nimo sa mga standard nga mga repositoryo sa CentOS mahimong dili ang pinakabag-o nga bersyon. Aron mahibal-an ang karon nga bersyon, pagdagan ang mosunud nga mando:
sudo yum info haproxy
Ang HAProxy kanunay nga naghatag ug tulo ka stable nga bersyon nga mapilian: ang duha ka pinakabag-o nga gisuportahan nga mga bersyon ug ang ikatulo, mas daan nga bersyon nga nakadawat gihapon sa kritikal nga mga update. Mahimo nimo kanunay nga susihon ang pinakabag-o nga stable nga bersyon nga nalista sa HAProxy website ug dayon pagdesisyon kung unsang bersyon ang gusto nimo gamiton.
Niini nga giya, among i-install ang pinakabag-o nga stable nga bersyon 2.0, nga wala pa magamit sa standard nga mga repository sa panahon sa pagsulat sa giya. Kinahanglan nimo nga i-install kini gikan sa orihinal nga gigikanan. Apan una, susiha kung nahimamat nimo ang gikinahanglan nga mga kondisyon sa pag-download ug pag-compile sa programa.
sudo yum install gcc pcre-devel tar make -y
I-download ang source code gamit ang command sa ubos. Mahimo nimong susihon kung adunay mas bag-ong bersyon nga magamit sa
wget http://www.haproxy.org/download/2.0/src/haproxy-2.0.7.tar.gz -O ~/haproxy.tar.gz
Kung kompleto na ang pag-download, kuhaa ang mga file gamit ang command sa ubos:
tar xzvf ~/haproxy.tar.gz -C ~/
Lakaw ngadto sa wala maputos nga direktoryo sa tinubdan:
cd ~/haproxy-2.0.7
Dayon pagtipon sa programa alang sa imong sistema:
make TARGET=linux-glibc
Ug sa katapusan, i-install ang HAProxy mismo:
sudo make install
Na-install na karon ang HAProxy, apan nanginahanglan kini pipila ka dugang nga mga manipulasyon aron mahimo kini nga molihok. Ipadayon nato ang pag-set up sa software ug mga serbisyo sa ubos.
Pag-set up sa HAProxy para sa imong server
Karon idugang ang mosunod nga mga direktoryo ug statistics file para sa HAProxy entries:
sudo mkdir -p /etc/haproxy
sudo mkdir -p /var/lib/haproxy
sudo touch /var/lib/haproxy/stats
Paghimo og simbolikong sumpay alang sa binary aron makadagan ka sa mga sugo sa HAProxy isip regular nga tiggamit:
sudo ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy
Kung gusto ka magdugang ug proxy sa imong sistema isip serbisyo, kopyaha ang haproxy.init file gikan sa mga pananglitan ngadto sa imong /etc/init.d nga direktoryo. I-edit ang mga permiso sa file aron ang script modagan, ug dayon i-restart ang systemd daemon:
sudo cp ~/haproxy-2.0.7/examples/haproxy.init /etc/init.d/haproxy
sudo chmod 755 /etc/init.d/haproxy
sudo systemctl daemon-reload
Kinahanglan mo usab nga tugutan ang serbisyo nga awtomatiko nga i-restart kung magsugod ang sistema:
sudo chkconfig haproxy on
Alang sa kasayon, girekomendar usab ang pagdugang og bag-ong user nga modagan sa HAProxy:
sudo useradd -r haproxy
Pagkahuman niini, mahimo nimong susihon pag-usab ang na-install nga numero sa bersyon gamit ang mosunud nga mando:
haproxy -v
HA-Proxy version 2.0.7 2019/09/27 - https://haproxy.org/
Sa among kaso, ang bersyon kinahanglan nga 2.0.7, ingon sa gipakita sa pananglitan nga output sa ibabaw.
Sa katapusan, ang default nga firewall sa CentOS 8 medyo higpit alang sa kini nga proyekto. Gamita ang mosunod nga mga sugo aron tugotan ang gikinahanglan nga mga serbisyo ug i-reset ang firewall:
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-port=8181/tcp
sudo firewall-cmd --reload
Pag-setup sa Load Balancer
Ang pagpahimutang sa HAProxy usa ka yano nga proseso. Sa esensya, ang kinahanglan nimong buhaton mao ang pagsulti sa HAProxy kung unsa nga mga koneksyon ang kinahanglan nga paminawon ug kung diin kini kinahanglan nga ipasa kini.
Gihimo kini pinaagi sa pagmugna og configuration file /etc/haproxy/haproxy.cfg uban sa pagtino sa mga setting. Makabasa ka bahin sa mga kapilian sa pag-configure sa HAProxy
Pagbalanse sa load sa transport layer (layer 4)
Magsugod ta sa batakang setup. Paghimo og bag-ong config file, pananglitan gamit ang vi uban sa sugo sa ubos:
sudo vi /etc/haproxy/haproxy.cfg
Idugang ang mosunod nga mga seksyon sa file. Ilisan server_name unsa ang kinahanglan nga tawag sa imong mga server sa panid sa istatistika, ug private_ip - pribado nga mga adres sa IP sa mga server diin gusto nimo nga idirekta ang trapiko sa web. Mahimo nimong susihon ang mga pribadong IP address
global
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
stats timeout 30s
user haproxy
group haproxy
daemon
defaults
log global
mode http
option httplog
option dontlognull
timeout connect 5000
timeout client 50000
timeout server 50000
frontend http_front
bind *:80
stats uri /haproxy?stats
default_backend http_back
backend http_back
balance roundrobin
server server_name1 private_ip1:80 check
server server_name2 private_ip2:80 check
Kini naghubit sa usa ka transport layer load balancer (layer 4) sa gawas nga ginganlan og http_front nga pagpaminaw sa port 80, nga dayon mopasa sa trapiko ngadto sa default nga backend nga ginganlan og http_back. Ang dugang nga estadistika /haproxy?stats nagkonektar sa panid sa estadistika ngadto sa gipiho nga adres.
Nagkalainlain nga mga algorithm sa pagbalanse sa load.
Ang pagtino sa mga server sa backend nga seksyon nagtugot sa HAProxy sa paggamit niini nga mga server alang sa pagbalanse sa load sumala sa usa ka round-robin algorithm kung mahimo.
Ang mga algorithm sa pagbalanse gigamit aron mahibal-an kung unsang server sa backend ang matag koneksyon gipasa. Ania ang pipila sa mga mapuslanon nga kapilian:
- Roundrobin: Ang matag server gigamit sa baylo sumala sa gibug-aton niini. Kini ang labing hapsay ug labing patas nga algorithm kung ang oras sa pagproseso sa mga server nagpabilin nga parehas nga giapod-apod. Kini nga algorithm dinamiko, nga nagtugot sa gibug-aton sa server nga ma-adjust dayon.
- Leastconn: gipili ang server nga adunay pinakagamay nga koneksyon. Ang round robin gihimo tali sa mga server nga adunay parehas nga load. Ang paggamit niini nga algorithm girekomendar alang sa taas nga mga sesyon sama sa LDAP, SQL, TSE, ug uban pa, apan kini dili kaayo angay alang sa mubo nga mga sesyon sama sa HTTP.
- Una: Ang una nga server nga adunay magamit nga mga slot sa koneksyon nakadawat sa koneksyon. Ang mga server gipili gikan sa pinakaubos nga numeric ID ngadto sa pinakataas, nga nag-default sa posisyon sa server sa umahan. Sa higayon nga ang usa ka server makaabot sa maxconn, ang sunod nga server gigamit.
- Source: Ang gigikanan nga IP address gi-hash ug gibahin sa kinatibuk-ang gibug-aton sa mga nagdagan nga mga server aron mahibal-an kung unsang server ang makadawat sa hangyo. Niining paagiha, ang parehas nga IP address sa kliyente kanunay nga moadto sa parehas nga server, samtang ang mga server nagpabilin nga parehas.
Pag-set up sa load balancing sa lebel sa aplikasyon (layer 7)
Ang laing magamit nga kapilian mao ang pag-configure sa usa ka load balancer nga modagan sa layer sa aplikasyon (layer 7), nga mapuslanon kung ang mga bahin sa imong aplikasyon sa web nahimutang sa lainlaing mga host. Kini makab-ot pinaagi sa throttling sa transmission sa koneksyon, pananglitan pinaagi sa URL.
Ablihi ang HAProxy configuration file gamit ang text editor:
sudo vi /etc/haproxy/haproxy.cfg
Dayon i-configure ang frontend ug backend nga mga bahin sama sa pananglitan sa ubos:
frontend http_front
bind *:80
stats uri /haproxy?stats
acl url_blog path_beg /blog
use_backend blog_back if url_blog
default_backend http_back
backend http_back
balance roundrobin
server server_name1 private_ip1:80 check
server server_name2 private_ip2:80 check
backend blog_back
server server_name3 private_ip3:80 check
Ang frontend nagdeklarar ug ACL nga lagda nga gitawag ug url_blog nga magamit sa tanang koneksyon sa mga agianan nga nagsugod sa /blog. Ang Use_backend nagtino nga ang mga koneksyon nga motakdo sa kondisyon sa url_blog kinahanglang isilbi sa usa ka backend nga ginganlag blog_back, ug ang tanang ubang mga hangyo gidumala sa default backend.
Sa backend nga bahin, ang configuration nagbutang og duha ka grupo sa mga server: http_back, sama kaniadto, ug usa ka bag-o nga gitawag og blog_back, nga nagdumala sa mga koneksyon sa example.com/blog.
Human sa pagbag-o sa mga setting, i-save ang file ug i-restart ang HAProxy gamit ang mosunod nga sugo:
sudo systemctl restart haproxy
Kung makadawat ka bisan unsang mga pasidaan o mga mensahe sa sayup sa panahon sa pagsugod, susiha ang imong pag-configure alang kanila ug siguroha nga nahimo nimo ang tanan nga kinahanglan nga mga file ug folder, unya sulayi ang pagsugod pag-usab.
Pagsulay sa setup
Sa higayon nga ang HAProxy ma-configure ug modagan, ablihi ang publikong IP address sa load balancer server sa usa ka browser ug susiha kon konektado ka ba sa backend sa husto. Ang stats uri parameter sa configuration nagmugna ug statistics page sa gipiho nga adres.
http://load_balancer_public_ip/haproxy?stats
Kung imong gikarga ang panid sa estadistika, kung ang tanan nimo nga mga server nagpakita nga berde, nan malampuson ang pag-setup!
Ang panid sa estadistika adunay pipila ka mapuslanon nga kasayuran alang sa pagsubay sa imong mga host sa web, lakip ang oras sa taas/ubos ug gidaghanon sa mga sesyon. Kung ang server gimarkahan nga pula, siguroha nga ang server naka-on ug mahimo nimo kini i-ping gikan sa load balancer machine.
Kung ang imong load balancer dili motubag, siguroha nga ang mga koneksyon sa HTTP wala gibabagan sa usa ka firewall. Siguruha usab nga ang HAProxy nagtrabaho gamit ang mando sa ubos:
sudo systemctl status haproxy
Pagpanalipod sa panid sa estadistika gamit ang password
Bisan pa, kung ang panid sa estadistika yano nga gilista sa atubangan nga tumoy, nan bukas kini aron makita sa tanan, nga dili maayo nga ideya. Hinoon, mahimo nimong i-assign kini nga custom nga numero sa port pinaagi sa pagdugang sa pananglitan sa ubos sa katapusan sa imong haproxy.cfg file. Ilisan username ΠΈ password alang sa usa ka butang nga luwas:
listen stats
bind *:8181
stats enable
stats uri /
stats realm Haproxy Statistics
stats auth username:password
Human makadugang ug bag-ong grupo sa tigpaminaw, kuhaa ang daan nga stats uri link gikan sa frontend nga grupo. Kung nahuman na, i-save ang file ug i-restart ang HAProxy.
sudo systemctl restart haproxy
Dayon ablihi pag-usab ang load balancer gamit ang bag-ong port number ug log in gamit ang username ug password nga imong gipiho sa configuration file.
http://load_balancer_public_ip:8181
Siguruha nga ang tanan nimo nga mga server nagpakita gihapon nga berde ug dayon ablihi ang load balancer IP nga walaβy bisan unsang mga numero sa port sa imong browser.
http://load_balancer_public_ip/
Kung ikaw adunay labing menos pipila ka lainlaing mga landing page sa imong back-end nga mga server, imong mamatikdan nga sa matag higayon nga imong i-reload ang panid makadawat ka og tubag gikan sa laing host. Mahimo nimong sulayan ang lainlaing mga algorithm sa pagbalanse sa seksyon sa pag-configure o susihon
Panapos: HAProxy Load Balancer
Pahalipay sa malampuson nga pag-set up sa imong HAProxy load balancer! Bisan sa usa ka sukaranan nga pag-setup sa pagbalanse sa load, mahimo nimong mapauswag ang pasundayag ug pagkaanaa sa imong aplikasyon sa web. Kini nga giya usa lang ka pasiuna sa pagbalanse sa load gamit ang HAProxy, nga makahimo sa labaw pa sa kung unsa ang masakop sa dali nga giya sa pag-setup. Girekomenda namon ang pag-eksperimento sa lainlaing mga pag-configure gamit
Pinaagi sa paggamit sa daghang mga host aron mapanalipdan ang imong serbisyo sa web nga adunay headroom, ang load balancer mismo mahimong magpakita sa usa ka punto sa kapakyasan. Mahimo nimong mapauswag ang taas nga pagkaanaa pinaagi sa pag-install sa usa ka naglutaw nga IP taliwala sa daghang mga balanse sa pagkarga. Mahibal-an nimo ang dugang bahin niini sa among
Dugang pa bahin sa kurso
Source: www.habr.com