La traduko de la artikolo estis preparita sojle de la komenco de la kurso
Ŝarĝbalancado estas ofta solvo por pligrandigi TTT-aplikaĵojn tra pluraj gastigantoj dum li provizas uzantojn per ununura punkto de aliro al servo.
HAProxy celas optimumigi la uzadon de rimedoj, maksimumigi la trairon, minimumigi respondtempon kaj eviti troŝarĝi ajnan ununuran rimedon. Ĝi povas esti instalita sur diversaj Linukso-distribuoj, kiel CentOS 8, pri kiu ni fokusos en ĉi tiu gvidilo, same kiel sistemoj.
HAProxy estas precipe taŭga por tre alta trafiko retejoj kaj tial estas ofte uzata por plibonigi la fidindecon kaj agadon de plurservilaj retservaj agordoj. Ĉi tiu gvidilo skizas la paŝojn por agordi HAProxy kiel ŝarĝan ekvilibron sur nuba gastiganto CentOS 8, kiu poste direktas trafikon al viaj retserviloj.
Kiel antaŭkondiĉo por plej bonaj rezultoj, vi devus havi almenaŭ du retservilojn kaj ŝarĝbalancan servilon. Retaj serviloj devas funkcii almenaŭ bazan retservon kiel nginx aŭ httpd por kontroli ŝarĝan ekvilibron inter ili.
Instalante HAProxy sur CentOS 8
Pro la fakto, ke HAProxy estas rapide evoluanta malfermkoda aplikaĵo, la distribuo disponebla al vi en la normaj deponejoj de CentOS eble ne estas la plej nova versio. Por ekscii la lastan version, rulu la jenan komandon:
sudo yum info haproxy
HAProxy ĉiam provizas tri stabilajn versiojn por elekti: la du plej lastatempaj subtenataj versioj kaj la tria, pli malnova versio, kiu ankoraŭ ricevas kritikajn ĝisdatigojn. Vi ĉiam povas kontroli la plej novan stabilan version listigitan en la retejo de HAProxy kaj tiam decidi kun kiu versio vi volas labori.
En ĉi tiu gvidilo, ni instalos la plej novan stabilan version 2.0, kiu ankoraŭ ne estis disponebla en la normaj deponejoj dum la skribado. Vi devos instali ĝin de la originala fonto. Sed unue, kontrolu ĉu vi plenumis la necesajn kondiĉojn por elŝuti kaj kompili la programon.
sudo yum install gcc pcre-devel tar make -y
Elŝutu la fontkodon per la komando sube. Vi povas kontroli ĉu ekzistas pli nova versio disponebla ĉe
wget http://www.haproxy.org/download/2.0/src/haproxy-2.0.7.tar.gz -O ~/haproxy.tar.gz
Post kiam la elŝuto estas kompleta, ĉerpi la dosierojn per la suba komando:
tar xzvf ~/haproxy.tar.gz -C ~/
Ŝanĝu al la malpakita fonta dosierujo:
cd ~/haproxy-2.0.7
Poste kompilu la programon por via sistemo:
make TARGET=linux-glibc
Kaj finfine instalu HAProxy mem:
sudo make install
Nun HAProxy estas instalita, sed ĝi postulas kelkajn pliajn manipuladojn por funkcii. Ni daŭrigu agordi la programaron kaj servojn sube.
Agordante HAProxy por via servilo
Nun aldonu la sekvajn dosierujojn kaj statistikajn dosierojn por HAProxy-enskriboj:
sudo mkdir -p /etc/haproxy
sudo mkdir -p /var/lib/haproxy
sudo touch /var/lib/haproxy/stats
Kreu simbolan ligon por la binaroj, por ke vi povu ruli HAProxy-komandojn kiel normala uzanto:
sudo ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy
Se vi volas aldoni la prokurilon al via sistemo kiel servo, kopiu la dosieron haproxy.init el ekzemploj al via dosierujo /etc/init.d. Redaktu la permesojn de la dosiero por ke la skripto rulu, tiam reŝargu la systemd-demonon:
sudo cp ~/haproxy-2.0.7/examples/haproxy.init /etc/init.d/haproxy
sudo chmod 755 /etc/init.d/haproxy
sudo systemctl daemon-reload
Vi ankaŭ devas permesi la servon aŭtomate rekomenci dum la starto de la sistemo:
sudo chkconfig haproxy on
Por komforto, ankaŭ rekomendas aldoni novan uzanton por ruli HAProxy:
sudo useradd -r haproxy
Post tio, vi povas kontroli la instalitan version-numeron denove per la sekva komando:
haproxy -v
HA-Proxy version 2.0.7 2019/09/27 - https://haproxy.org/
En nia kazo, la versio devus esti 2.0.7, kiel montrite en la ekzempla eligo supre.
Fine, la defaŭlta fajroŝirmilo en CentOS 8 estas sufiĉe limiga por ĉi tiu projekto. Uzu la jenajn komandojn por ebligi la postulatajn servojn kaj restarigi la fajroŝirmilon:
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-port=8181/tcp
sudo firewall-cmd --reload
Agordo de ŝarĝbalancilo
Agordi HAProxy estas sufiĉe simpla procezo. Esence, ĉio, kion vi devas fari, estas diri al HAProxy, sur kiuj konektoj ĝi devas aŭskulti kaj kie elsendi ilin.
Ĉi tio estas farita kreante agordan dosieron /etc/haproxy/haproxy.cfg kun difinaj agordoj. Vi povas legi pri agordaj opcioj de HAProxy
Ŝarĝbalancado ĉe la transporta tavolo (tavolo 4)
Ni komencu kun la baza agordo. Kreu novan agordosieron, ekzemple uzante vi kun la suba komando:
sudo vi /etc/haproxy/haproxy.cfg
Aldonu la sekvajn sekciojn al la dosiero. Anstataŭigi servilo_nomo tiu, kiu devus voki viajn servilojn sur la statistika paĝo, kaj privata_ip - privataj IP-adresoj de la serviloj al kiuj vi volas direkti retan trafikon. Vi povas kontroli privatajn IP-adresojn
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
Ĉi tio difinas transporttavolan ŝarĝbalancilon (tavolo 4) ekstere nomitan http_front aŭskultantan sur haveno 80, kiu tiam direktas trafikon al la defaŭlta backend nomita http_back. Pliaj statistikoj /haproxy?stats ligas la statistikan paĝon al la specifita adreso.
Diversaj ŝarĝbalancaj algoritmoj.
Specifante servilojn en la backend-sekcio ebligas al HAProxy uzi tiujn servilojn por ŝarĝbalancado laŭ la cirkulada algoritmo kiam eble.
Balancialgoritmoj estas uzataj por determini al kiu servilo en la backend ĉiu konekto estas sendita. Jen kelkaj el la utilaj opcioj:
- Ĉirkaŭvojo: ĉiu servilo estas uzata laŭvice laŭ sia pezo. Ĉi tiu estas la plej glata kaj justa algoritmo kiam la pretiga tempo de la serviloj restas egale distribuita. Ĉi tiu algoritmo estas dinamika, kio ebligas al vi ĝustigi la pezon de la servilo sur la muŝo.
- Leastconn: la servilo kun la plej malmultaj konektoj estas elektita. Ĉirkaŭskribo estas farita inter serviloj kun la sama ŝarĝo. Uzado de ĉi tiu algoritmo estas rekomendita por longaj sesioj kiel LDAP, SQL, TSE, ktp., sed ne tre taŭga por mallongaj sesioj kiel HTTP.
- Unue: la unua servilo kun disponeblaj konektofendoj ricevas la konekton. Serviloj estas elektitaj de la plej malalta nombra ID ĝis la plej alta, kiu defaŭlte respondas al la pozicio de la servilo en la bieno. Post kiam la servilo atingas la maxconn-valoron, la sekva servilo estas uzata.
- Fonto: La fonta IP-adreso estas haŝita kaj dividita per la totala pezo de kurantaj serviloj por determini kiu servilo ricevos la peton. Tiel, la sama klienta IP-adreso ĉiam iros al la sama servilo, dum la serviloj restas senŝanĝaj.
Agordi ŝarĝbalancadon ĉe la aplikaĵotavolo (tavolo 7)
Alia disponebla opcio estas agordi la ŝarĝan ekvilibron por labori ĉe la aplikaĵa tavolo (tavolo 7), kio estas utila kiam partoj de via TTT-aplikaĵo situas sur malsamaj gastigantoj. Ĉi tio povas esti atingita per estrango de la translokigo de la konekto, ekzemple per URL.
Malfermu la agordan dosieron HAProxy per tekstredaktilo:
sudo vi /etc/haproxy/haproxy.cfg
Poste agordu la fasadon kaj backend-segmentojn laŭ la ekzemplo sube:
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
La fasado deklaras ACL-regulon nomitan url_blog, kiu validas por ĉiuj ligoj kun vojoj komenciĝantaj per /blog. Use_backend specifas, ke konektoj kongruantaj kun la url_blog kondiĉo devas esti servataj de la backend nomita blog_back kaj ĉiuj aliaj petoj estas pritraktataj de la defaŭlta backend.
En la malantaŭo, la agordo starigas du servilgrupojn: http_back, kiel antaŭe, kaj novan nomitan blog_back, kiu pritraktas konektojn al example.com/blog.
Post ŝanĝi la agordojn, konservu la dosieron kaj rekomencu HAProxy per la sekva komando:
sudo systemctl restart haproxy
Se vi ricevas avertojn aŭ erarojn dum komencado, kontrolu la agordon por iu ajn kaj certigu, ke vi kreis ĉiujn necesajn dosierojn kaj dosierujojn, kaj poste provu rekomenci.
Provante la aranĝon
Post kiam HAProxy estas agordita kaj funkcianta, malfermu la publikan IP-adreson de la servilo de ŝarĝbalancilo en retumilo kaj kontrolu ĉu vi konektis al la backend ĝuste. La parametro stats uri en la agordo kreas statistikan paĝon ĉe la specifita adreso.
http://load_balancer_public_ip/haproxy?stats
Kiam vi ŝarĝas la statistikan paĝon, se ĉiuj viaj serviloj estas verdaj, tiam la aranĝo sukcesis!
La statistika paĝo enhavas kelkajn utilajn informojn por spuri viajn retgastigantojn, inkluzive de supren/malfunkcia tempo kaj nombro da sesioj. Se la servilo estas markita ruĝa, certigu, ke la servilo estas enŝaltita kaj ke vi povas pingi ĝin de la ŝarĝbalancilo.
Se via ŝarĝbalancilo ne respondas, certigu, ke HTTP-konektoj ne estas blokitaj de fajroŝirmilo. Ankaŭ certigu, ke HAProxy funkcias kun la komando sube:
sudo systemctl status haproxy
Protektante la statistikan paĝon per pasvorto
Tamen, se la statistika paĝo estas nur listigita en la fasado, tiam ĝi estas malfermita al publiko, kio eble ne estas bona ideo. Anstataŭe, vi povas asigni vian propran pordan numeron al ĝi aldonante la ekzemplon sube al la fino de via haproxy.cfg dosiero. Anstataŭigi uzantonomo и pasvorto al io sekura:
listen stats
bind *:8181
stats enable
stats uri /
stats realm Haproxy Statistics
stats auth username:password
Post aldoni la novan aŭskultan grupon, forigu la malnovan statistikan uri-referencon de la fasanta grupo. Fininte, konservu la dosieron kaj rekomencu HAProxy.
sudo systemctl restart haproxy
Poste malfermu la ŝarĝan ekvilibrilon denove kun la nova havennumero kaj ensalutu per la uzantnomo kaj pasvorto, kiujn vi specifis en la agorda dosiero.
http://load_balancer_public_ip:8181
Certigu, ke ĉiuj viaj serviloj estas ankoraŭ verdaj kaj poste malfermu nur la IP-ekvilibran ŝarĝon sen havenaj numeroj en via retumilo.
http://load_balancer_public_ip/
Se vi havas almenaŭ ian varion de landpaĝoj sur viaj internaj serviloj, vi rimarkos, ke ĉiufoje kiam vi reŝargas la paĝon, vi ricevas respondon de malsama gastiganto. Vi povas provi malsamajn ekvilibrajn algoritmojn en la agorda sekcio aŭ vidu
Konkludo: HAProxy Load Balancer
Gratulon pro sukcese agordo de via HAProxy-ŝarĝbalancilo! Eĉ kun baza agordo pri ekvilibra ŝarĝo, vi povas multe plibonigi la rendimenton kaj haveblecon de via retejo-aplikaĵo. Ĉi tiu gvidilo estas nur enkonduko al ŝarĝo-ekvilibro kun HAProxy, kiu kapablas je multe pli ol tio, kio povas esti priskribita en rapida agorda gvidilo. Ni rekomendas eksperimenti kun malsamaj agordoj kun
Uzante plurajn gastigantojn por protekti vian retservon kun kapspaco, la ŝarĝbalancilo mem ankoraŭ povas reprezenti punkton de fiasko. Vi povas plu plibonigi altan haveblecon agordante flosan IP inter multoblaj ŝarĝbalanciloj. Vi povas ekscii pli pri tio en nia
Pli pri la kurso
fonto: www.habr.com