Die installering van die HAProxy Load Balancer op CentOS

Die vertaling van die artikel is voorberei op die vooraand van die aanvang van die kursus Linux administrateur. Virtualisering en groepering »

Die installering van die HAProxy Load Balancer op CentOS

Lasbalansering is 'n algemene oplossing om webtoepassings oor veelvuldige gashere uit te skaal, terwyl gebruikers 'n enkele toegangspunt tot 'n diens bied. HAProxy is een van die gewildste oopbron-vragbalanseringsagteware wat ook hoë beskikbaarheid en volmagfunksies bied.

HAProxy is daarop gemik om hulpbrongebruik te optimaliseer, deurvloei te maksimeer, reaksietyd te verminder en te vermy dat enige enkele hulpbron oorlaai word. Dit kan op 'n verskeidenheid Linux-verspreidings geïnstalleer word, soos CentOS 8, waarop ons in hierdie gids sal fokus, sowel as stelsels Debian 8 и Ubuntu 16.

Die installering van die HAProxy Load Balancer op CentOS

HAProxy is veral geskik vir webwerwe met baie hoë verkeer en word daarom dikwels gebruik om die betroubaarheid en werkverrigting van multibediener-webdienskonfigurasies te verbeter. Hierdie gids gee 'n uiteensetting van die stappe om HAProxy as 'n lasbalanseerder op 'n CentOS 8-wolkgasheer op te stel, wat dan verkeer na u webbedieners stuur.

As 'n voorvereiste vir die beste resultate, moet u ten minste twee webbedieners en 'n lasbalanseringsbediener hê. Webbedieners moet ten minste 'n basiese webdiens soos nginx of httpd gebruik om lasbalansering tussen hulle te toets.

Installeer HAProxy op CentOS 8

Omdat HAProxy 'n vinnig ontwikkelende oopbrontoepassing is, is die verspreiding wat vir jou beskikbaar is in die standaard CentOS-bewaarplekke moontlik nie die nuutste weergawe nie. Om die nuutste weergawe uit te vind, voer die volgende opdrag uit:

sudo yum info haproxy

HAProxy bied altyd drie stabiele weergawes om van te kies: die twee mees onlangse ondersteunde weergawes en die derde, ouer weergawe wat steeds kritieke opdaterings ontvang. U kan altyd die nuutste stabiele weergawe op die HAProxy-webwerf nagaan en dan besluit met watter weergawe u wil werk.

In hierdie gids sal ons die nuutste stabiele weergawe 2.0 installeer, wat op die oomblik van skryf nog nie in die standaardbewaarplekke beskikbaar was nie. Jy sal dit vanaf die oorspronklike bron moet installeer. Maar kyk eers of jy aan die nodige voorwaardes vir die aflaai en samestelling van die program voldoen het.

sudo yum install gcc pcre-devel tar make -y

Laai die bronkode af deur die opdrag hieronder te gebruik. Jy kan kyk of daar 'n nuwer weergawe beskikbaar is by HAProxy aflaai bladsy.

wget http://www.haproxy.org/download/2.0/src/haproxy-2.0.7.tar.gz -O ~/haproxy.tar.gz

Sodra die aflaai voltooi is, onttrek die lêers met die opdrag hieronder:

tar xzvf ~/haproxy.tar.gz -C ~/

Verander na die uitgepakte brongids:

cd ~/haproxy-2.0.7

Stel dan die program vir jou stelsel saam:

make TARGET=linux-glibc

En uiteindelik installeer HAProxy self:

sudo make install

Nou is HAProxy geïnstalleer, maar dit vereis 'n paar bykomende manipulasies om dit te laat werk. Kom ons gaan voort met die opstel van die sagteware en dienste hieronder.

Stel HAProxy vir jou bediener op

Voeg nou die volgende gidse en statistieklêer by vir HAProxy-inskrywings:

sudo mkdir -p /etc/haproxy
sudo mkdir -p /var/lib/haproxy 
sudo touch /var/lib/haproxy/stats

Skep 'n simboliese skakel vir die binaries sodat jy HAProxy-opdragte as 'n normale gebruiker kan uitvoer:

sudo ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy

As jy die instaanbediener as 'n diens by jou stelsel wil voeg, kopieer die haproxy.init-lêer van voorbeelde na jou /etc/init.d-gids. Wysig die lêer se toestemmings sodat die skrip sal loop, en herlaai dan die 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

U moet ook toelaat dat die diens outomaties herbegin wanneer die stelsel begin:

sudo chkconfig haproxy on

Gerieflikheidshalwe word dit ook aanbeveel om 'n nuwe gebruiker by te voeg om HAProxy te laat loop:

sudo useradd -r haproxy

Daarna kan u die geïnstalleerde weergawenommer weer nagaan met die volgende opdrag:

haproxy -v
HA-Proxy version 2.0.7 2019/09/27 - https://haproxy.org/

In ons geval moet die weergawe 2.0.7 wees, soos getoon in die voorbeelduitvoer hierbo.

Ten slotte, die verstek firewall in CentOS 8 is redelik beperkend vir hierdie projek. Gebruik die volgende opdragte om die vereiste dienste te aktiveer en die firewall terug te stel:

sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-port=8181/tcp
sudo firewall-cmd --reload

Die opstel van 'n lasbalanseerder

Die opstel van HAProxy is 'n redelik eenvoudige proses. Al wat u in wese hoef te doen, is om vir HAProxy te vertel watter verbindings dit moet luister en waar om dit oor te dra.

Dit word gedoen deur 'n konfigurasielêer /etc/haproxy/haproxy.cfg te skep met die definisie van instellings. U kan lees oor HAProxy-konfigurasie-opsies op die dokumentasiebladsyas jy meer daaroor wil weet.

Lasbalansering by die vervoerlaag (laag 4)

Kom ons begin met die basiese opstelling. Skep 'n nuwe konfigurasielêer, byvoorbeeld deur vi met die volgende opdrag:

sudo vi /etc/haproxy/haproxy.cfg

Voeg die volgende afdelings by die lêer. Vervang server die een wat jou bedieners op die statistiekbladsy moet bel, en privaat_ip - private IP-adresse van die bedieners waarna u webverkeer wil lei. U kan privaat IP-adresse nagaan in die UpCloud-kontrolepaneel en op die blad Privaat netwerk op die spyskaart Netwerk.

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 definieer 'n vervoerlaag lasbalanseerder (laag 4) wat ekstern met die naam http_front luister op poort 80, wat dan verkeer na die verstek agterkant genaamd http_back roeteer. Bykomende statistieke /haproxy?stats verbind die statistiekbladsy met die gespesifiseerde adres.

Verskeie lasbalanseringsalgoritmes.

Deur bedieners in die backend-afdeling te spesifiseer, laat HAProxy toe om daardie bedieners te gebruik vir lasbalansering volgens die round robin-algoritme, waar moontlik.

Balanseringsalgoritmes word gebruik om te bepaal na watter bediener in die backend elke verbinding gestuur word. Hier is 'n paar van die nuttige opsies:

  • Rondom: elke bediener word om die beurt gebruik volgens sy gewig. Dit is die gladste en mees regverdige algoritme wanneer die verwerkingstyd van die bedieners eweredig versprei bly. Hierdie algoritme is dinamies, wat jou toelaat om die gewig van die bediener aan te pas op die vlieg.
  • Leastconn: die bediener met die minste verbindings word gekies. Round robin word uitgevoer tussen bedieners met dieselfde las. Die gebruik van hierdie algoritme word aanbeveel vir lang sessies soos LDAP, SQL, TSE, ens., maar nie baie geskik vir kort sessies soos HTTP nie.
  • eerste: die eerste bediener met beskikbare verbindinggleuwe ontvang die verbinding. Bedieners word gekies van die laagste numeriese ID tot die hoogste, wat by verstek ooreenstem met die posisie van die bediener in die plaas. Sodra die bediener die maxconn-waarde bereik, word die volgende bediener gebruik.
  • Bron: Die bron-IP-adres word gehash en gedeel deur die totale gewig van lopende bedieners om te bepaal watter bediener die versoek sal ontvang. Dus, dieselfde kliënt IP-adres sal altyd na dieselfde bediener gaan, terwyl die bedieners onveranderd bly.

Opstel van lasbalansering by die toepassingslaag (laag 7)

Nog 'n opsie wat beskikbaar is, is om die lasbalanseerder te konfigureer om by die toepassingslaag (laag 7) te werk, wat nuttig is wanneer dele van u webtoepassing op verskillende gashere geleë is. Dit kan bereik word deur die oordrag van die verbinding te verswak, byvoorbeeld deur URL.

Maak die HAProxy-konfigurasielêer oop met 'n teksredigeerder:

sudo vi /etc/haproxy/haproxy.cfg

Stel dan die voorkant- en agterkantsegmente op volgens die voorbeeld hieronder:

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

Die frontend verklaar 'n ACL-reël genaamd url_blog wat van toepassing is op alle verbindings met paaie wat met /blog begin. Use_backend spesifiseer dat verbindings wat by die url_blog-voorwaarde pas, bedien moet word deur die backend genaamd blog_back en alle ander versoeke word deur die verstek-backend hanteer.

Aan die agterkant stel die konfigurasie twee bedienergroepe op: http_back, soos voorheen, en 'n nuwe een genaamd blog_back, wat verbindings na example.com/blog hanteer.

Nadat u die instellings verander het, stoor die lêer en herbegin HAProxy met die volgende opdrag:

sudo systemctl restart haproxy

As jy enige waarskuwings of foute kry terwyl jy begin, gaan die konfigurasie vir enige na en maak seker dat jy al die nodige lêers en vouers geskep het, en probeer dan weer om te herbegin.

Toets die opstelling

Sodra HAProxy gekonfigureer en aan die gang is, maak die publieke IP-adres van die lasbalanseerder-bediener in 'n blaaier oop en kyk of jy korrek aan die agterkant gekoppel het. Die stats uri-parameter in die konfigurasie skep 'n statistiekbladsy by die gespesifiseerde adres.

http://load_balancer_public_ip/haproxy?stats

As jy die statistiekbladsy laai, as al jou bedieners groen is, dan was die opstelling suksesvol!

Die installering van die HAProxy Load Balancer op CentOS

Die statistiekbladsy bevat 'n paar nuttige inligting om u webgashere op te spoor, insluitend op/af tyd en aantal sessies. As die bediener rooi gemerk is, maak seker dat die bediener op is en dat jy dit vanaf die lasbalanseerder kan ping.

As jou lasbalanseerder nie reageer nie, maak seker dat HTTP-verbindings nie deur 'n firewall geblokkeer word nie. Maak ook seker dat HAProxy met die opdrag hieronder werk:

sudo systemctl status haproxy

Beskerm die statistiekbladsy met 'n wagwoord

As die statistiekbladsy egter net in die voorkant gelys is, is dit oop vir die publiek, wat dalk nie 'n goeie idee is nie. In plaas daarvan kan jy jou eie poortnommer daaraan toewys deur die voorbeeld hieronder aan die einde van jou haproxy.cfg-lêer by te voeg. Vervang Gebruikersnaam и Wagwoord na iets veiligs:

listen stats
   bind *:8181
   stats enable
   stats uri /
   stats realm Haproxy Statistics
   stats auth username:password

Nadat u die nuwe luistergroep bygevoeg het, verwyder die ou statistiek-uri-verwysing uit die voorkantgroep. As jy klaar is, stoor die lêer en herbegin HAProxy.

sudo systemctl restart haproxy

Maak dan weer die lasbalanseerder oop met die nuwe poortnommer en meld aan met die gebruikersnaam en wagwoord wat jy in die konfigurasielêer gespesifiseer het.

http://load_balancer_public_ip:8181

Maak seker al jou bedieners is steeds groen en maak dan net die load balancer IP oop sonder enige poortnommers in jou blaaier.

http://load_balancer_public_ip/

As u ten minste 'n verskeidenheid bestemmingsbladsye op u interne bedieners het, sal u sien dat u elke keer as u die bladsy herlaai, 'n antwoord van 'n ander gasheer kry. U kan verskillende balanseringsalgoritmes in die konfigurasie-afdeling probeer of kyk volledige dokumentasie.

Gevolgtrekking: HAProxy Load Balancer

Baie geluk met die suksesvolle opstel van jou HAProxy-ladingbalanseerder! Selfs met 'n basiese lasbalansering-opstelling, kan jy die werkverrigting en beskikbaarheid van jou webtoepassing aansienlik verbeter. Hierdie gids is net 'n inleiding tot lasbalansering met HAProxy, wat tot veel meer in staat is as wat in 'n vinnige opstelgids beskryf kan word. Ons beveel aan om met verskillende konfigurasies te eksperimenteer uitgebreide dokumentasiebeskikbaar vir HAProxy en begin dan vragbalansering vir jou produksie-omgewing beplan.

Deur veelvuldige gashere te gebruik om u webdiens met kopruimte te beskerm, kan die lasbalanseerder self steeds 'n punt van mislukking verteenwoordig. U kan hoë beskikbaarheid verder verbeter deur 'n drywende IP tussen veelvuldige lasbalanseerders op te stel. Jy kan meer hieroor uitvind in ons artikel oor drywende IP-adresse op UpCloud.

Meer oor die kursus Linux administrateur. Virtualisering en groepering »***

Bron: will.com

Voeg 'n opmerking