Installera lastbalanseraren HAProxy pÄ CentOS

ÖversĂ€ttningen av artikeln Ă€r framtagen inför kursstarten «Linux-administratör. Virtualisering och klustring»

Installera lastbalanseraren HAProxy pÄ CentOS

Lastbalansering Àr en vanlig lösning för horisontell skalning av webbapplikationer över flera vÀrdar, vilket ger anvÀndarna en enhetlig Ätkomstpunkt till tjÀnsten. HAProxy Àr en av de mest populÀra programvarorna för lastbalansering med öppen kÀllkod, som ocksÄ erbjuder hög tillgÀnglighet och proxyfunktionalitet.

HAProxy strÀvar efter att optimera resursutnyttjandet, maximera genomströmningen, minimera svarstiden och undvika överbelastning av varje enskild resurs. Den kan installeras pÄ mÄnga Linux-distributioner, sÄsom CentOS 8, som vi kommer att fokusera pÄ i denna guide, samt pÄ systemen Debian 8 och Ubuntu 16.

Installera lastbalanseraren HAProxy pÄ CentOS

HAProxy Àr sÀrskilt lÀmplig för webbplatser med mycket hög trafik och anvÀnds dÀrför ofta för att öka tillförlitligheten och prestandan hos flerserverkonfigurationer. Denna guide beskriver stegen för att konfigurera HAProxy som lastbalanserare pÄ en molnhosting i CentOS 8, som sedan dirigerar trafik till dina webbservrar.

Som ett nödvÀndigt villkor för att uppnÄ bÀsta resultat bör du ha minst tvÄ webbservrar och en lastbalanserarserver. PÄ webbservrarna bör en grundlÀggande webbserver, sÄsom nginx eller httpd, köras för att kunna testa lastbalanseringen mellan dem.

Installation av HAProxy pÄ CentOS 8

Eftersom HAProxy Àr en snabbt utvecklande programvara med öppen kÀllkod kan distributionen som finns i de vanliga CentOS-repositories inte vara den senaste versionen. För att ta reda pÄ aktuell version, kör följande kommando:

sudo yum info haproxy

HAProxy erbjuder alltid tre stabila versioner att vÀlja mellan: de tvÄ senaste stödda versionerna och en tredje, Àldre version som fortfarande fÄr kritiska uppdateringar. Du kan alltid kontrollera den senaste stabila versionen som anges pÄ HAProxy:s webbplats och sedan bestÀmma vilken version du vill arbeta med.

I den hÀr guiden kommer vi att installera den senaste stabila versionen 2.0, som inte var tillgÀnglig i de standardrepository vid tidpunkten för skrivandet av guiden. Du behöver installera den frÄn kÀllan. Men först, kontrollera att du har de nödvÀndiga villkoren för att ladda ner och kompilera programmet.

sudo yum install gcc pcre-devel tar make -y

Ladda ner kÀllkoden med hjÀlp av kommandot nedan. Du kan kontrollera om det finns en nyare version som Àr tillgÀnglig pÄ HAProxy laddningssidan.

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

NÀr nedladdningen Àr klar, extrahera filerna med kommandot nedan:

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

Navigera till den extraherade katalogen med kÀllfilerna:

cd ~/haproxy-2.0.7

Kompilera programmet för ditt system:

make TARGET=linux-glibc

Och slutligen, installera sjÀlva HAProxy:

sudo make install

Nu Àr HAProxy installerad, men för att den ska fungera krÀvs vissa ytterligare ÄtgÀrder. LÄt oss fortsÀtta med att konfigurera mjukvaran och tjÀnsterna nedan.

Konfigurera HAProxy för din server

LÀgg nu till följande kataloger och statistikfil för HAProxy-poster:

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

Skapa en symbolisk lÀnk för binÀrfilerna sÄ att du kan köra HAProxy-kommandon som vanlig anvÀndare:

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

Om du vill lĂ€gga till proxyservern som en tjĂ€nst i systemet, kopiera haproxy.init-filen frĂ„n exempel till din katalog /etc/init.d. Ändra filens behörigheter sĂ„ att skriptet kan köras, och starta om systemd-demonen:

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 mÄste ocksÄ tillÄta tjÀnsten att autostarta vid systemstart:

sudo chkconfig haproxy on

För bekvÀmligheten rekommenderas det ocksÄ att lÀgga till en ny anvÀndare för att köra HAProxy:

sudo useradd -r haproxy

Efter detta kan du kontrollera versionsnumret igen med följande kommando:

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

I vÄrt fall bör versionen vara 2.0.7, som visas i exempelutmatningen ovan.

Slutligen Àr brandvÀggen i CentOS 8 som standard ganska restriktiv för det hÀr projektet. AnvÀnd följande kommandon för att tillÄta nödvÀndiga tjÀnster och starta om brandvÀggen:

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

Konfigurering av lastbalanserare

Att konfigurera HAProxy Àr en ganska enkel process. I grund och botten handlar det om att berÀtta för HAProxy vilka anslutningar den ska lyssna pÄ och vart den ska omdirigera dem.

Detta görs genom att skapa en konfigurationsfil /etc/haproxy/haproxy.cfg med de nödvÀndiga instÀllningarna. Du kan lÀsa mer om HAProxy:s konfigurationsparameter pÄ dokumentationssidan, om du vill veta mer om detta.

Lastbalansering pÄ transportnivÄ (lager 4)

LÄt oss börja med grundlÀggande konfiguration. Skapa en ny konfigurationsfil, till exempel med vi med kommandot nedan:

sudo vi /etc/haproxy/haproxy.cfg

LÀgg till följande sektioner i filen. ErsÀtt server_name med det som ska referera till dina servrar pÄ statistikpanelen, och private_ip med de privata IP-adresserna pÄ servrarna dit du vill dirigera webbtrafiken. Du kan kontrollera de privata IP-adresserna i UpCloud:s kontrollpanel och pÄ fliken Privat nÀtverk i menyn NÀtverk.

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

Detta definierar lastbalanseraren pÄ transportnivÄ (lager 4) med det externa namnet http_front, som lyssnar pÄ port 80, som sedan dirigerar trafiken till en standardbackend med namnet http_back. Ytterligare statistik pÄ /haproxy?stats kopplar till statistik sidan pÄ den angivna adressen.

Olika algoritmer för lastbalansering.

Anvisningen av servrar i backend-sektionen tillÄter HAProxy att anvÀnda dessa servrar för lastbalansering enligt round-robin algoritmen nÀr det Àr möjligt.

Lastbalanseringsalgoritmer anvÀnds för att avgöra vilken server i backend som varje anslutning skickas till. HÀr Àr nÄgra anvÀndbara alternativ:

  • Roundrobin: varje server anvĂ€nds i tur och ordning enligt sin vikt. Detta Ă€r den mest jĂ€mna och rĂ€ttvisa algoritmen, nĂ€r bearbetningstiderna för servrarna förblir jĂ€mnt fördelade. Denna algoritm Ă€r dynamisk, vilket möjliggör justering av serverns vikt i realtid.
  • Leastconn: en server med det lĂ€gsta antalet anslutningar vĂ€ljs. CykelgenomgĂ„ng görs mellan servrar med samma belastning. AnvĂ€ndningen av den hĂ€r algoritmen rekommenderas för lĂ„ngvariga sessioner, sĂ„som LDAP, SQL, TSE, etc., men den passar inte sĂ„ bra för kortvariga sessioner som HTTP.
  • Först: den första servern med tillgĂ€ngliga anslutningsslotar fĂ„r anslutningen. Servrar vĂ€ljs frĂ„n den lĂ€gsta numeriska identifieraren till den högsta, vilket som standard överensstĂ€mmer med serverns position i serverfarmen. NĂ€r servern nĂ„r maxconn-vĂ€rdet anvĂ€nds nĂ€sta server.
  • KĂ€lla: KĂ€ll-IP-adressen hashas och delas med den totala vikten av de körande servrarna för att avgöra vilken server som ska ta emot förfrĂ„gan. PĂ„ sĂ„ sĂ€tt kommer samma klient-IP alltid att tilldelas samma server, medan servrarna förblir oförĂ€ndrade.

InstÀllning av lastbalansering pÄ applikationsnivÄ (lager 7)

En annan tillgÀnglig funktion Àr att konfigurera lastbalanseraren för att fungera pÄ applikationsnivÄ (lager 7), vilket Àr anvÀndbart nÀr delar av din webbapplikation Àr placerade pÄ olika vÀrdar. Detta kan uppnÄs genom att reglera anslutningens överföring, till exempel efter URL.

Öppna HAProxy-konfigurationsfilen med en textredigerare:

sudo vi /etc/haproxy/haproxy.cfg

Ange sedan frontend- och backend-segmenten enligt exemplet nedan:

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

Frontend deklarerar en ACL-regel med namnet url_blog, som tillÀmpas pÄ alla anslutningar med vÀgar som börjar med /blog. Use_backend anger att anslutningar som uppfyller villkoret url_blog ska hanteras av backend med namnet blog_back, medan alla andra förfrÄgningar hanteras av backend enligt standard.

PÄ backend-sidan stÀller konfigurationen in tvÄ grupper av servrar: http_back, som tidigare, och en ny som kallas blog_back, vilken hanterar anslutningar med example.com/blog.

Efter att ha Àndrat instÀllningarna, spara filen och starta om HAProxy med följande kommando:

sudo systemctl restart haproxy

Om du fÄr nÄgra varningar eller felmeddelanden vid starten, kontrollera konfigurationen för att se om allt Àr pÄ plats och se till att du har skapat alla nödvÀndiga filer och mappar, och försök sedan starta om pÄ nytt.

Testa instÀllningen

NÀr HAProxy Àr konfigurerat och igÄng, öppna den offentliga IP-adressen för lastbalanseraren i webblÀsaren och kontrollera att du har kopplat rÀtt till backend. Parametern stats uri i konfigurationen skapar en statistik-sida pÄ den angivna adressen.

http://load_balancer_public_ip/haproxy?stats

NÀr du laddar statistik-sidan, om alla dina servrar visas i grönt, har instÀllningen lyckats!

Installera lastbalanseraren HAProxy pÄ CentOS

Statistik-sidan innehÄller anvÀndbar information för att övervaka dina webbhostar, inklusive driftstid/nedtid och antal sessioner. Om servern Àr markerad i rött, se till att servern Àr pÄslagen och att du kan pinga den frÄn lastbalanseringsmaskinen.

Om din lastbalanserare inte svarar, kontrollera att HTTP-anslutningar inte blockeras av en brandvÀgg. Se ocksÄ till att HAProxy Àr igÄng med följande kommando:

sudo systemctl status haproxy

Skydda statistik-sidan med ett lösenord

Men om statistik-sidan bara anges i frontenden, Àr den öppen för allmÀnheten, vilket kanske inte Àr en bra idé. IstÀllet kan du ge den en egen port genom att lÀgga till följande exempel i slutet av din haproxy.cfg-fil. ErsÀtt username och password med nÄgot sÀkert:

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

Efter att ha lagt till den nya lyssnargruppen, ta bort den gamla lÀnken till stats uri frÄn frontgrupps instÀllningar. NÀr du Àr klar, spara filen och starta om HAProxy.

sudo systemctl restart haproxy

Öppna sedan lastbalanseraren igen med det nya portnumret och logga in med det anvĂ€ndarnamn och lösenord som du angav i konfigurationsfilen.

http://load_balancer_public_ip:8181

Se till att alla dina servrar fortfarande visas i grönt, och öppna sedan bara IP-adressen för lastbalanseraren utan nÄgra portnummer i din webblÀsare.

http://load_balancer_public_ip/

Om dina interna servrar har nÄgon form av variation av mÄlsidor, kommer du att mÀrka att varje gÄng du laddar om sidan fÄr du svar frÄn en annan vÀrd. Du kan prova olika belastningsbalanseringsalgoritmer i konfigurationsavsnittet eller bekanta dig med den fullstÀndiga dokumentationen.

Sammanfattning: Belastningsbalanseraren HAProxy

Grattis till att du framgĂ„ngsrikt har konfigurerat belastningsbalanseraren HAProxy! Även med en grundlĂ€ggande instĂ€llning för belastningsbalansering kan du avsevĂ€rt öka prestanda och tillgĂ€nglighet för din webbapplikation. Denna guide Ă€r endast en introduktion till belastningsbalansering med HAProxy, som kan göra mycket mer Ă€n vad som beskrivs i en kort installationsanvisning. Vi rekommenderar att du experimenterar med olika konfigurationer med hjĂ€lp av omfattande dokumentation, tillgĂ€nglig för HAProxy, och sedan börja planera belastningsbalansering för din produktionsmiljö.

Genom att anvÀnda flera vÀrdar för att skydda din webbtjÀnst med hjÀlp av reservkapacitet kan sjÀlva belastningsbalanseraren fortfarande utgöra en felpunkt. Du kan ytterligare öka den höga tillgÀngligheten genom att installera en flytande IP mellan flera belastningsbalanserare. Du kan lÀsa mer om detta i vÄr artikel om flytande IP-adresser pÄ UpCloud.

Mer om kursen «Linux-administratör. Virtualisering och klustring»***

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster