De oersetting fan it artikel waard taret op 'e foarjûn fan it begjin fan' e kursus
Load balancing is in mienskiplike oplossing foar horizontaal skaalfergrutting fan webapplikaasjes oer meardere hosts, wylst brûkers ien inkeld tagongspunt foar de tsjinst leverje.
HAProxy stribbet nei it optimalisearjen fan boarnegebrûk, maksimalisearjen trochput, minimalisearje reaksjetiid, en foarkomme oerladen fan elke yndividuele boarne. It kin ynstalleare wurde op in ferskaat oan Linux-distribúsjes, lykas CentOS 8, wêrop wy sille rjochtsje op yn dizze hantlieding, lykas systemen
HAProxy is benammen gaadlik foar websiden mei tige hege ferkear en wurdt dêrom faak brûkt om de betrouberens en prestaasjes fan multi-server webtsjinstkonfiguraasjes te ferbetterjen. Dizze hantlieding sketst de stappen om HAProxy yn te stellen as load balancer op in CentOS 8 wolkhost, dy't dan ferkear nei jo webservers rûte.
As betingst foar bêste resultaten moatte jo op syn minst twa webservers en in loadbalancing-tsjinner hawwe. Webservers moatte op syn minst in basiswebtsjinst útfiere lykas nginx of httpd om loadbalâns tusken har te testen.
HAProxy ynstallearje op CentOS 8
Om't HAProxy in rap evoluearjende iepen boarne-applikaasje is, is de distribúsje dy't jo beskikber is yn 'e standert CentOS-repositories miskien net de lêste ferzje. Om de aktuele ferzje te finen, fier it folgjende kommando út:
sudo yum info haproxy
HAProxy leveret altyd trije stabile ferzjes om út te kiezen: de twa meast resinte stipe ferzjes en in tredde, âldere ferzje dy't noch krityske updates krijt. Jo kinne altyd de lêste stabile ferzje kontrolearje op 'e HAProxy-webside en dan beslute mei hokker ferzje jo wolle wurkje.
Yn dizze hantlieding sille wy de lêste stabile ferzje 2.0 ynstallearje, dy't noch net beskikber wie yn 'e standert repositories op it momint fan it skriuwen fan' e gids. Jo moatte it ynstallearje fanút de orizjinele boarne. Mar earst kontrolearje oft jo de nedige betingsten foldien hawwe om it programma te downloaden en te kompilearjen.
sudo yum install gcc pcre-devel tar make -y
Download de boarnekoade mei it kommando hjirûnder. Jo kinne kontrolearje oft der in nijere ferzje beskikber is op
wget http://www.haproxy.org/download/2.0/src/haproxy-2.0.7.tar.gz -O ~/haproxy.tar.gz
Sadree't de ynlaad foltôge is, ekstrahearje de bestannen mei it kommando hjirûnder:
tar xzvf ~/haproxy.tar.gz -C ~/
Gean nei de útpakte boarne map:
cd ~/haproxy-2.0.7
Dan kompilearje it programma foar jo systeem:
make TARGET=linux-glibc
En as lêste, ynstallearje HAProxy sels:
sudo make install
HAProxy is no ynstalleare, mar it fereasket wat ekstra manipulaasjes om it te wurkjen. Litte wy trochgean mei it ynstellen fan de software en tsjinsten hjirûnder.
HAProxy ynstelle foar jo tsjinner
Foegje no de folgjende mappen en statistykbestân ta foar de HAProxy-yngongen:
sudo mkdir -p /etc/haproxy
sudo mkdir -p /var/lib/haproxy
sudo touch /var/lib/haproxy/stats
Meitsje in symboalyske keppeling foar de binaries sadat jo HAProxy-kommando's kinne útfiere as in gewoane brûker:
sudo ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy
As jo in proxy taheakje wolle oan jo systeem as in tsjinst, kopiearje dan de haproxy.init-bestân fan foarbylden nei jo /etc/init.d-map. Bewurkje de triemrjochten sadat it skript sil rinne, en start dan de systemd daemon op 'e nij:
sudo cp ~/haproxy-2.0.7/examples/haproxy.init /etc/init.d/haproxy
sudo chmod 755 /etc/init.d/haproxy
sudo systemctl daemon-reload
Jo moatte ek tastean dat de tsjinst automatysk opnij starte as it systeem begjint:
sudo chkconfig haproxy on
Foar gemak is it ek oan te rieden om in nije brûker ta te foegjen om HAProxy út te fieren:
sudo useradd -r haproxy
Hjirnei kinne jo it ynstalleare ferzjenûmer opnij kontrolearje mei it folgjende kommando:
haproxy -v
HA-Proxy version 2.0.7 2019/09/27 - https://haproxy.org/
Yn ús gefal moat de ferzje 2.0.7 wêze, lykas werjûn yn 'e foarbyldútfier hjirboppe.
Uteinlik is de standertbrânmuorre yn CentOS 8 frij beheind foar dit projekt. Brûk de folgjende kommando's om fereaske tsjinsten te tastean en de firewall werom te setten:
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-port=8181/tcp
sudo firewall-cmd --reload
Load Balancer Setup
HAProxy ynstelle is in frij ienfâldich proses. Yn essinsje is alles wat jo hoege te dwaan HAProxy te fertellen hokker ferbiningen it moat harkje en wêr't it se moat trochjaan.
Dit wurdt dien troch it meitsjen fan in konfiguraasjetriem /etc/haproxy/haproxy.cfg mei definieare ynstellings. Jo kinne lêze oer HAProxy konfiguraasje opsjes
Loadbalancing by de transportlaach (laach 4)
Litte wy begjinne mei de basis opset. Meitsje in nij konfiguraasjetriem, bygelyks mei vi mei it kommando hjirûnder:
sudo vi /etc/haproxy/haproxy.cfg
Foegje de folgjende seksjes ta oan it bestân. Ferfange Server Namme wat moatte neame jo tsjinners op de statistiken side, en privee_ip - privee IP-adressen fan 'e servers wêr't jo webferkear wolle rjochtsje. Jo kinne privee IP-adressen kontrolearje
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
Dit definiearret in ferfier laach load balancer (laach 4) ekstern neamd http_front listening op poarte 80, dy't dan stjoert ferkear nei in standert backend neamd http_back. Oanfoljende statistiken /haproxy?stats ferbynt de statistykside mei it opjûne adres.
Ferskate load balancing algoritmen.
It opjaan fan tsjinners yn 'e backend-seksje lit HAProxy dizze servers brûke foar load balancing neffens in round-robin-algoritme as it mooglik is.
Balansearjende algoritmen wurde brûkt om te bepalen hokker server yn 'e backend elke ferbining wurdt trochjûn. Hjir binne guon fan 'e nuttige opsjes:
- Rounddrobin: Elke tsjinner wurdt op syn beurt brûkt neffens syn gewicht. Dit is it soepelste en earlikste algoritme as de ferwurkingstiid fan 'e servers evenredich ferdield bliuwt. Dit algoritme is dynamysk, wêrtroch it gewicht fan 'e tsjinner op 'e flecht kin wurde oanpast.
- Leastconn: de tsjinner mei de minste ferbinings wurdt selektearre. Round robin wurdt útfierd tusken tsjinners mei deselde lading. It brûken fan dit algoritme wurdt oanrikkemandearre foar lange sesjes lykas LDAP, SQL, TSE, ensfh., mar it is net hiel geskikt foar koarte sesjes lykas HTTP.
- Earste: De earste tsjinner mei beskikbere ferbining slots ûntfangt de ferbining. Tsjinners wurde selektearre út de leechste numerike ID nei de heechste, dy't standert op de tsjinner syn posysje yn 'e pleats. Sadree't in tsjinner berikt de maxconn wearde, de folgjende tsjinner wurdt brûkt.
- Boarne: It boarne IP-adres wurdt hashed en dield troch it totale gewicht fan rinnende tsjinners om te bepalen hokker tsjinner it fersyk sil ûntfange. Op dizze manier sil itselde client-IP-adres altyd nei deselde server gean, wylst de servers itselde bliuwe.
Ynstelle fan load balancing op it tapassingsnivo (laach 7)
In oare beskikbere opsje is om in loadbalancer te konfigurearjen om te rinnen op 'e applikaasjelaach (laach 7), wat nuttich is as dielen fan jo webapplikaasje op ferskate hosts lizze. Dit kin berikt wurde troch de oerdracht fan 'e ferbining te smoaren, bygelyks troch URL.
Iepenje it HAProxy-konfiguraasjetriem mei in tekstbewurker:
sudo vi /etc/haproxy/haproxy.cfg
Konfigurearje dan de frontend- en backend-segminten neffens it foarbyld hjirûnder:
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
De frontend ferklearret in ACL-regel neamd url_blog dy't jildt foar alle ferbiningen mei paden dy't begjinne mei /blog. Use_backend spesifisearret dat ferbinings dy't oerienkomme mei de url_blog-betingst moatte wurde betsjinne troch in backend mei de namme blog_back, en alle oare oanfragen wurde behannele troch de standert backend.
Oan 'e efterkant stelt de konfiguraasje twa groepen servers op: http_back, lykas earder, en in nije neamd blog_back, dy't ferbiningen mei example.com/blog behannelet.
Nei it wizigjen fan de ynstellings, bewarje it bestân en start HAProxy opnij mei it folgjende kommando:
sudo systemctl restart haproxy
As jo warskôgings of flaterberjochten ûntfange by it opstarten, kontrolearje dan jo konfiguraasje dêrfoar en soargje derfoar dat jo alle nedige bestannen en mappen makke hawwe, besykje dan opnij te begjinnen.
It testen fan de opset
Sadree't HAProxy is konfigurearre en rint, iepenje it iepenbiere IP-adres fan 'e load balancer-tsjinner yn in blêder en kontrolearje as jo goed ferbûn binne mei de backend. De stats uri-parameter yn 'e konfiguraasje makket in statistykside op it opjûne adres.
http://load_balancer_public_ip/haproxy?stats
As jo de statistiken side lade, as al jo servers grien sjen litte, dan wie de opset suksesfol!
De statistykside befettet wat nuttige ynformaasje foar it folgjen fan jo webhosts, ynklusyf op- / deltiid en oantal sesjes. As de tsjinner read is markearre, soargje derfoar dat de tsjinner ynskeakele is en dat jo it kinne pinge fan 'e loadbalancermasine.
As jo load balancer net reagearret, soargje derfoar dat HTTP-ferbiningen net wurde blokkearre troch in firewall. Soargje der ek foar dat HAProxy wurket mei it kommando hjirûnder:
sudo systemctl status haproxy
Beskermje de statistiken side mei in wachtwurd
As de statistiken side lykwols gewoan op 'e foarkant stiet, dan is it iepen foar elkenien om te sjen, wat miskien net in goed idee is. Ynstee dêrfan kinne jo it in oanpast poartenûmer tawize troch it foarbyld hjirûnder ta te foegjen oan 'e ein fan jo haproxy.cfg-bestân. Ferfange brûkersnamme и wachtwurd foar wat feilich:
listen stats
bind *:8181
stats enable
stats uri /
stats realm Haproxy Statistics
stats auth username:password
Nei it tafoegjen fan in nije harkergroep, ferwiderje de âlde stats-uri-keppeling fan 'e frontend-groep. As klear, bewarje it bestân en start HAProxy opnij.
sudo systemctl restart haproxy
Iepenje dan de loadbalancer opnij mei it nije poartenûmer en meld jo oan mei de brûkersnamme en wachtwurd dy't jo hawwe opjûn yn it konfiguraasjetriem.
http://load_balancer_public_ip:8181
Soargje derfoar dat al jo servers noch grien sjen litte en iepenje dan gewoan de loadbalancer IP sûnder poartenûmers yn jo browser.
http://load_balancer_public_ip/
As jo op syn minst wat ferskaat oan lâningssiden hawwe op jo back-end-servers, sille jo merke dat elke kear as jo de side opnij laden, jo in antwurd krije fan in oare host. Jo kinne besykje ferskate balânsjen algoritmen yn de konfiguraasje seksje of check out
Konklúzje: HAProxy Load Balancer
Lokwinsken foar it súksesfol ynstellen fan jo HAProxy load balancer! Sels mei in basisopset foar load balancing, kinne jo de prestaasjes en beskikberens fan jo webapplikaasje signifikant ferbetterje. Dizze gids is gewoan in yntroduksje foar load balancing mei HAProxy, dy't by steat is om folle mear dan wat kin wurde behannele yn de flugge opset gids. Wy riede oan om te eksperimintearjen mei ferskate konfiguraasjes
Troch meardere hosts te brûken om jo webtsjinst mei headroom te beskermjen, kin de loadbalancer sels noch in punt fan mislearring presintearje. Jo kinne hege beskikberens fierder ferbetterje troch it ynstallearjen fan in driuwend IP tusken meardere load balancers. Jo kinne hjir mear oer fine yn ús
Mear oer de kursus
Boarne: www.habr.com