Installation af HAProxy Load Balancer på CentOS

Oversættelsen af ​​artiklen blev udarbejdet på tærsklen til kursets start Linux administrator. Virtualisering og klyngedannelse»

Installation af HAProxy Load Balancer på CentOS

Belastningsbalancering er en almindelig løsning til at skalere ud af webapplikationer på tværs af flere værter, samtidig med at brugerne får et enkelt adgangspunkt til en tjeneste. HAProxy er en af ​​de mest populære open source-belastningsbalanceringssoftware, der også giver høj tilgængelighed og proxy-funktionalitet.

HAProxy sigter mod at optimere ressourceforbruget, maksimere gennemløbet, minimere responstiden og undgå at overbelaste en enkelt ressource. Det kan installeres på en række Linux-distributioner, såsom CentOS 8, som vi vil fokusere på i denne vejledning, samt systemer Debian 8 и Ubuntu 16.

Installation af HAProxy Load Balancer på CentOS

HAProxy er særligt velegnet til websteder med meget høj trafik og bruges derfor ofte til at forbedre pålideligheden og ydeevnen af ​​multi-server webservice konfigurationer. Denne vejledning skitserer trinene til at konfigurere HAProxy som en load balancer på en CentOS 8 cloud-vært, som derefter dirigerer trafik til dine webservere.

Som en forudsætning for de bedste resultater bør du have mindst to webservere og en load balancing-server. Webservere skal køre mindst en grundlæggende webservice såsom nginx eller httpd for at teste belastningsbalancering mellem dem.

Installation af HAProxy på CentOS 8

På grund af det faktum, at HAProxy er et hurtigt udviklende open source-program, er distributionen, der er tilgængelig for dig i standard CentOS-lagrene, muligvis ikke den nyeste version. For at finde ud af den seneste version skal du køre følgende kommando:

sudo yum info haproxy

HAProxy har altid tre stabile versioner at vælge imellem: de to seneste understøttede versioner og den tredje, ældre version, der stadig modtager kritiske opdateringer. Du kan altid tjekke den seneste stabile version på HAProxy-webstedet og derefter beslutte, hvilken version du vil arbejde med.

I denne guide vil vi installere den seneste stabile version 2.0, som endnu ikke var tilgængelig i standardlagrene i skrivende stund. Du skal installere det fra den originale kilde. Men tjek først, om du har opfyldt de nødvendige betingelser for at downloade og kompilere programmet.

sudo yum install gcc pcre-devel tar make -y

Download kildekoden ved hjælp af kommandoen nedenfor. Du kan tjekke, om der er en nyere version tilgængelig på HAProxy download side.

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

Når overførslen er færdig, skal du udpakke filerne ved hjælp af kommandoen nedenfor:

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

Skift til den udpakkede kildemappe:

cd ~/haproxy-2.0.7

Kompiler derefter programmet til dit system:

make TARGET=linux-glibc

Og installer til sidst selve HAProxy:

sudo make install

Nu er HAProxy installeret, men det kræver nogle yderligere manipulationer for at få det til at fungere. Lad os fortsætte med at opsætte softwaren og tjenesterne nedenfor.

Opsætning af HAProxy til din server

Tilføj nu følgende mapper og statistikfil for HAProxy-poster:

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

Opret et symbolsk link til de binære filer, så du kan køre HAProxy-kommandoer som en normal bruger:

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

Hvis du vil tilføje proxyen til dit system som en tjeneste, skal du kopiere filen haproxy.init fra eksempler til din /etc/init.d-mappe. Rediger filens tilladelser, så scriptet kører, og genindlæs derefter systemd-dæmonen:

sudo cp ~/haproxy-2.0.7/examples/haproxy.init /etc/init.d/haproxy
sudo chmod 755 /etc/init.d/haproxy
sudo systemctl daemon-reload

Du skal også tillade, at tjenesten automatisk genstarter ved systemstart:

sudo chkconfig haproxy on

For nemheds skyld anbefales det også at tilføje en ny bruger til at køre HAProxy:

sudo useradd -r haproxy

Derefter kan du kontrollere det installerede versionsnummer igen med følgende kommando:

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

I vores tilfælde skal versionen være 2.0.7, som vist i eksempeloutputtet ovenfor.

Endelig er standardfirewallen i CentOS 8 ret restriktiv for dette projekt. Brug følgende kommandoer til at aktivere de nødvendige tjenester og nulstille firewallen:

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

Opsætning af en load balancer

Opsætning af HAProxy er en ret simpel proces. Det eneste, du skal gøre, er at fortælle HAProxy, hvilke forbindelser den skal lytte på, og hvor de skal videresendes.

Dette gøres ved at oprette en konfigurationsfil /etc/haproxy/haproxy.cfg med definerende indstillinger. Du kan læse om HAProxy-konfigurationsmuligheder på dokumentationssidenhvis du vil vide mere om det.

Lastbalancering ved transportlaget (lag 4)

Lad os starte med den grundlæggende opsætning. Opret en ny konfigurationsfil, f.eks vi med nedenstående kommando:

sudo vi /etc/haproxy/haproxy.cfg

Tilføj følgende sektioner til filen. Erstatte server navn den der skal kalde dine servere på statistiksiden, og private_ip - private IP-adresser på de servere, som du vil lede webtrafik til. Du kan tjekke private IP-adresser i upcloud kontrolpanelet og på fanen Privat netværk i menuen Netværk.

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

Dette definerer en transportlags belastningsbalancer (lag 4) eksternt navngivet http_front listening på port 80, som så dirigerer trafik til standard backend med navnet http_back. Yderligere statistik /haproxy?stats forbinder statistiksiden til den angivne adresse.

Forskellige belastningsbalanceringsalgoritmer.

Angivelse af servere i backend-sektionen gør det muligt for HAProxy at bruge disse servere til belastningsbalancering i henhold til round robin-algoritmen, når det er muligt.

Balanceringsalgoritmer bruges til at bestemme, hvilken server i backend hver forbindelse sendes til. Her er nogle af de nyttige muligheder:

  • Runde Robin: hver server bruges på skift i henhold til dens vægt. Dette er den glatteste og mest retfærdige algoritme, når servernes behandlingstid forbliver jævnt fordelt. Denne algoritme er dynamisk, hvilket giver dig mulighed for at justere vægten af ​​serveren på farten.
  • Leastconn: serveren med færrest forbindelser er valgt. Round robin udføres mellem servere med samme belastning. Brug af denne algoritme anbefales til lange sessioner som LDAP, SQL, TSE osv., men ikke særlig velegnet til korte sessioner som HTTP.
  • Først: den første server med ledige forbindelsespladser modtager forbindelsen. Servere vælges fra det laveste numeriske ID til det højeste, hvilket som standard svarer til serverens position i farmen. Når serveren når maxconn-værdien, bruges den næste server.
  • Kilde: Kilde-IP-adressen hashes og divideres med den samlede vægt af kørende servere for at bestemme, hvilken server der modtager anmodningen. Den samme klient IP-adresse vil således altid gå til den samme server, mens serverne forbliver uændrede.

Konfiguration af belastningsbalancering på applikationslaget (lag 7)

En anden tilgængelig mulighed er at konfigurere belastningsbalanceren til at arbejde på applikationslaget (lag 7), hvilket er nyttigt, når dele af din webapplikation er placeret på forskellige værter. Dette kan opnås ved at drosle overførslen af ​​forbindelsen, for eksempel ved hjælp af URL.

Åbn HAProxy-konfigurationsfilen med en teksteditor:

sudo vi /etc/haproxy/haproxy.cfg

Opsæt derefter frontend- og backend-segmenterne i henhold til eksemplet nedenfor:

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

Frontenden erklærer en ACL-regel ved navn url_blog, der gælder for alle forbindelser med stier, der begynder med /blog. Use_backend specificerer, at forbindelser, der matcher url_blog-betingelsen, skal betjenes af backend med navnet blog_back, og alle andre anmodninger håndteres af standard backend.

På bagsiden opsætter konfigurationen to servergrupper: http_back, som før, og en ny kaldet blog_back, som håndterer forbindelser til example.com/blog.

Når du har ændret indstillingerne, skal du gemme filen og genstarte HAProxy med følgende kommando:

sudo systemctl restart haproxy

Hvis du får advarsler eller fejl under start, skal du kontrollere konfigurationen for nogen og sørge for, at du har oprettet alle de nødvendige filer og mapper, og derefter prøve at genstarte igen.

Test af opsætningen

Når HAProxy er konfigureret og kører, skal du åbne den offentlige IP-adresse på load balancer-serveren i en browser og kontrollere, om du har oprettet forbindelse til backend korrekt. Stats uri-parameteren i konfigurationen opretter en statistikside på den angivne adresse.

http://load_balancer_public_ip/haproxy?stats

Når du indlæser statistiksiden, hvis alle dine servere er grønne, så lykkedes opsætningen!

Installation af HAProxy Load Balancer på CentOS

Statistiksiden indeholder nogle nyttige oplysninger til at spore dine webhosts, herunder op/ned tid og antal sessioner. Hvis serveren er markeret rødt, skal du sørge for, at serveren er oppe, og at du kan pinge den fra load balanceren.

Hvis din load balancer ikke reagerer, skal du sørge for, at HTTP-forbindelser ikke blokeres af en firewall. Sørg også for, at HAProxy arbejder med kommandoen nedenfor:

sudo systemctl status haproxy

Beskyttelse af statistiksiden med en adgangskode

Men hvis statistiksiden bare er opført i frontend, så er den åben for offentligheden, hvilket måske ikke er en god idé. I stedet kan du tildele dit eget portnummer til den ved at tilføje eksemplet nedenfor til slutningen af ​​din haproxy.cfg-fil. Erstatte brugernavn и adgangskode til noget sikkert:

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

Når du har tilføjet den nye lyttergruppe, skal du fjerne den gamle stats-uri-reference fra frontend-gruppen. Når du er færdig, skal du gemme filen og genstarte HAProxy.

sudo systemctl restart haproxy

Åbn derefter load balanceren igen med det nye portnummer og log ind med det brugernavn og adgangskode, du har angivet i konfigurationsfilen.

http://load_balancer_public_ip:8181

Sørg for, at alle dine servere stadig er grønne, og åbn derefter kun load balancer IP uden nogen portnumre i din browser.

http://load_balancer_public_ip/

Hvis du i det mindste har en række forskellige destinationssider på dine interne servere, vil du bemærke, at hver gang du genindlæser siden, får du et svar fra en anden vært. Du kan prøve forskellige balanceringsalgoritmer i konfigurationssektionen eller se komplet dokumentation.

Konklusion: HAProxy Load Balancer

Tillykke med opsætningen af ​​din HAProxy load balancer! Selv med en grundlæggende belastningsbalancering opsætning, kan du i høj grad forbedre ydeevnen og tilgængeligheden af ​​din webapplikation. Denne guide er blot en introduktion til belastningsbalancering med HAProxy, som er i stand til meget mere end hvad der kan beskrives i en hurtig opsætningsguide. Vi anbefaler at eksperimentere med forskellige konfigurationer vha omfattende dokumentationtilgængelig for HAProxy og begynd derefter at planlægge belastningsbalancering for dit produktionsmiljø.

Ved at bruge flere værter til at beskytte din webtjeneste med frihøjde, kan selve belastningsbalanceren stadig repræsentere et fejlpunkt. Du kan yderligere forbedre høj tilgængelighed ved at opsætte en flydende IP mellem flere load balancere. Du kan få mere at vide om dette i vores artikel om flydende IP-adresser på UpCloud.

Mere om kurset Linux administrator. Virtualisering og klyngedannelse»***

Kilde: www.habr.com

Tilføj en kommentar