Ynstallaasje fan de HAProxy load balancer op CentOS

De oersetting fan it artikel waard taret op 'e foarjûn fan it begjin fan' e kursus "Linux behearder. Virtualisaasje en klustering"

Ynstallaasje fan de HAProxy load balancer op CentOS

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 is ien fan de meast populêre iepen boarne load balancing software dy't ek soarget foar hege beskikberens en proxy funksjonaliteit.

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 Debian 8 и Ubuntu 16.

Ynstallaasje fan de HAProxy load balancer op CentOS

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 HAProxy download side.

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 op de dokumintaasje sideas jo der mear oer witte wolle.

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 op it UpCloud-kontrôlepaniel en op 'e ljepper Private netwurk yn it menu netwurk.

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!

Ynstallaasje fan de HAProxy load balancer op CentOS

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 folsleine dokumintaasje.

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 wiidweidige dokumintaasje, beskikber foar HAProxy, en begjin dan load balancing te plannen foar jo produksjeomjouwing.

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 artikel oer driuwende IP-adressen op UpCloud.

Mear oer de kursus "Linux behearder. Virtualisaasje en klustering"***

Boarne: www.habr.com

Add a comment