Installere HAProxy load balancer på CentOS

Oversettelsen av artikkelen ble utarbeidet like før kursstart "Linux-administrator. Virtualisering og klynging"

Installere HAProxy load balancer på CentOS

Lastbalansering er en vanlig løsning for horisontalt skalering av nettapplikasjoner på tvers av flere verter, samtidig som brukerne får ett enkelt tilgangspunkt til tjenesten. HAProxy er en av de mest populære åpen kildekode-lastbalanseringsprogramvarene som også gir høy tilgjengelighet og proxy-funksjonalitet.

HAProxy streber etter å optimalisere ressursbruken, maksimere gjennomstrømmingen, minimere responstiden og unngå overbelastning av individuelle ressurser. Det kan installeres på en rekke Linux-distribusjoner, for eksempel CentOS 8, som vi vil fokusere på i denne veiledningen, samt systemer Debian 8 и Ubuntu 16.

Installere HAProxy load balancer på CentOS

HAProxy er spesielt egnet for nettsteder med svært høy trafikk og brukes derfor ofte for å forbedre påliteligheten og ytelsen til multi-server webtjenestekonfigurasjoner. Denne veiledningen skisserer trinnene for å sette opp HAProxy som en lastbalanser på en CentOS 8-skyvert, som deretter ruter trafikk til nettserverne dine.

Som en forutsetning for best resultat bør du ha minst to webservere og en lastbalanseringsserver. Nettservere må kjøre minst en grunnleggende nettjeneste som nginx eller httpd for å teste lastbalansering mellom dem.

Installere HAProxy på CentOS 8

Fordi HAProxy er en åpen kildekode-applikasjon i rask utvikling, kan det hende at distribusjonen som er tilgjengelig for deg i standard CentOS-repositoriene, ikke er den nyeste versjonen. For å finne ut gjeldende versjon, kjør følgende kommando:

sudo yum info haproxy

HAProxy har alltid tre stabile versjoner å velge mellom: de to siste støttede versjonene og en tredje, eldre versjon som fortsatt mottar kritiske oppdateringer. Du kan alltid sjekke den siste stabile versjonen som er oppført på HAProxy-nettstedet og deretter bestemme hvilken versjon du vil jobbe med.

I denne veiledningen vil vi installere den siste stabile versjonen 2.0, som ennå ikke var tilgjengelig i standarddepotene da veiledningen ble skrevet. Du må installere den fra den opprinnelige kilden. Men sjekk først om du har oppfylt de nødvendige betingelsene for å laste ned og kompilere programmet.

sudo yum install gcc pcre-devel tar make -y

Last ned kildekoden ved å bruke kommandoen nedenfor. Du kan sjekke om det er en nyere versjon tilgjengelig på HAProxy nedlastingsside.

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

Når nedlastingen er fullført, pakk ut filene ved å bruke kommandoen nedenfor:

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

Gå til den utpakkede kildekatalogen:

cd ~/haproxy-2.0.7

Deretter kompilerer du programmet for systemet ditt:

make TARGET=linux-glibc

Og til slutt, installer selve HAProxy:

sudo make install

HAProxy er nå installert, men det krever noen ekstra manipulasjoner for å få det til å fungere. La oss fortsette å sette opp programvaren og tjenestene nedenfor.

Sette opp HAProxy for serveren din

Legg nå til følgende kataloger og statistikkfil for HAProxy-oppføringene:

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

Lag en symbolsk lenke for binærfilene slik at du kan kjøre HAProxy-kommandoer som en vanlig bruker:

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

Hvis du vil legge til en proxy til systemet som en tjeneste, kopierer du filen haproxy.init fra eksempler til /etc/init.d-katalogen. Rediger filtillatelsene slik at skriptet kjøres, og start deretter systemd-demonen på nytt:

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å også tillate at tjenesten starter automatisk på nytt når systemet starter:

sudo chkconfig haproxy on

For enkelhets skyld anbefales det også å legge til en ny bruker for å kjøre HAProxy:

sudo useradd -r haproxy

Etter dette kan du sjekke det installerte versjonsnummeret igjen ved å bruke følgende kommando:

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

I vårt tilfelle bør versjonen være 2.0.7, som vist i eksempelutgangen ovenfor.

Til slutt er standardbrannmuren i CentOS 8 ganske restriktiv for dette prosjektet. Bruk følgende kommandoer for å tillate nødvendige tjenester og tilbakestille brannmuren:

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

Oppsett av lastbalanser

Å sette opp HAProxy er en ganske enkel prosess. I hovedsak er alt du trenger å gjøre å fortelle HAProxy hvilke tilkoblinger den skal lytte etter og hvor den skal videresende dem.

Dette gjøres ved å lage en konfigurasjonsfil /etc/haproxy/haproxy.cfg med definerende innstillinger. Du kan lese om HAProxy-konfigurasjonsalternativer på dokumentasjonssidenhvis du vil vite mer om det.

Lastbalansering ved transportlaget (lag 4)

La oss starte med det grunnleggende oppsettet. Opprett en ny konfigurasjonsfil, for eksempel ved å bruke vi med kommandoen nedenfor:

sudo vi /etc/haproxy/haproxy.cfg

Legg til følgende seksjoner i filen. Erstatte Server navn hva skal kalle serverne dine på statistikksiden, og private_ip — private IP-adresser til serverne du vil lede nettrafikk til. Du kan sjekke private IP-adresser på UpCloud-kontrollpanelet og på fanen Privat nettverk på menyen Network.

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 lastbalanserer (lag 4) eksternt kalt http_front lytting på port 80, som deretter videresender trafikk til en standard backend kalt http_back. Ytterligere statistikk /haproxy?stats kobler statistikksiden til den angitte adressen.

Ulike lastbalanseringsalgoritmer.

Ved å spesifisere servere i backend-delen kan HAProxy bruke disse serverne for lastbalansering i henhold til en round-robin-algoritme når det er mulig.

Balanseringsalgoritmer brukes til å bestemme hvilken server i backend hver tilkobling sendes til. Her er noen av de nyttige alternativene:

  • Rounddrobin: Hver server brukes etter tur i henhold til dens vekt. Dette er den jevneste og mest rettferdige algoritmen når behandlingstiden til serverne forblir jevnt fordelt. Denne algoritmen er dynamisk, slik at serverens vekt kan justeres i farten.
  • Leastconn: serveren med færrest tilkoblinger er valgt. Round robin utføres mellom servere med samme belastning. Bruk av denne algoritmen anbefales for lange økter som LDAP, SQL, TSE osv., men den egner seg lite for korte økter som HTTP.
  • Først: Den første serveren med tilgjengelige tilkoblingsplasser mottar tilkoblingen. Servere velges fra den laveste numeriske IDen til den høyeste, som er standard til serverens posisjon i farmen. Når en server når maxconn, brukes neste server.
  • kilde: Kilde-IP-adressen hashes og divideres med den totale vekten av kjørende servere for å bestemme hvilken server som vil motta forespørselen. På denne måten vil den samme klientens IP-adresse alltid gå til den samme serveren, mens serverne forblir de samme.

Sette opp lastbalansering på applikasjonsnivå (lag 7)

Et annet tilgjengelig alternativ er å konfigurere en lastbalanser for å kjøre på applikasjonslaget (lag 7), noe som er nyttig når deler av nettapplikasjonen din er plassert på forskjellige verter. Dette kan oppnås ved å strupe overføringen av forbindelsen, for eksempel med URL.

Åpne HAProxy-konfigurasjonsfilen ved hjelp av et tekstredigeringsprogram:

sudo vi /etc/haproxy/haproxy.cfg

Konfigurer deretter frontend- og backend-segmentene 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

Frontend erklærer en ACL-regel kalt url_blog som gjelder for alle forbindelser med stier som starter med /blog. Use_backend spesifiserer at tilkoblinger som samsvarer med url_blog-betingelsen skal betjenes av en backend kalt blog_back, og alle andre forespørsler håndteres av standard backend.

På backend-siden setter konfigurasjonen opp to grupper med servere: http_back, som før, og en ny kalt blog_back, som håndterer tilkoblinger til example.com/blog.

Etter å ha endret innstillingene, lagre filen og start HAProxy på nytt ved å bruke følgende kommando:

sudo systemctl restart haproxy

Hvis du mottar advarsler eller feilmeldinger under oppstart, sjekk konfigurasjonen for dem og sørg for at du har opprettet alle nødvendige filer og mapper, og prøv deretter å starte på nytt.

Tester oppsettet

Når HAProxy er konfigurert og kjører, åpner du den offentlige IP-adressen til lastbalanseringsserveren i en nettleser og kontrollerer om du er koblet til backend riktig. Statistisk uri-parameteren i konfigurasjonen oppretter en statistikkside på den angitte adressen.

http://load_balancer_public_ip/haproxy?stats

Når du laster inn statistikksiden, hvis alle serverne dine viser grønt, var oppsettet vellykket!

Installere HAProxy load balancer på CentOS

Statistikksiden inneholder noe nyttig informasjon for å spore webvertene dine, inkludert opp/ned tid og antall økter. Hvis serveren er merket rødt, sørg for at serveren er slått på og at du kan pinge den fra lastbalanseringsmaskinen.

Hvis lastbalanseren ikke svarer, må du kontrollere at HTTP-tilkoblinger ikke blokkeres av en brannmur. Sørg også for at HAProxy fungerer ved å bruke kommandoen nedenfor:

sudo systemctl status haproxy

Beskytte statistikksiden med et passord

Men hvis statistikksiden bare er oppført på frontend, er den åpen for alle å se, noe som kanskje ikke er en god idé. I stedet kan du tilordne den et tilpasset portnummer ved å legge til eksemplet nedenfor på slutten av haproxy.cfg-filen. Erstatte brukernavn и passord for noe trygt:

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

Etter å ha lagt til en ny lyttergruppe, fjern den gamle statistikk-uri-lenken fra frontend-gruppen. Når du er ferdig, lagre filen og start HAProxy på nytt.

sudo systemctl restart haproxy

Åpne deretter lastbalanseren igjen med det nye portnummeret og logg på med brukernavnet og passordet du spesifiserte i konfigurasjonsfilen.

http://load_balancer_public_ip:8181

Sørg for at alle serverne dine fortsatt viser grønt, og åpne deretter bare lastbalanserings-IP-en uten noen portnumre i nettleseren din.

http://load_balancer_public_ip/

Hvis du i det minste har en rekke landingssider på back-end-serverne dine, vil du legge merke til at hver gang du laster inn siden på nytt, får du et svar fra en annen vert. Du kan prøve forskjellige balanseringsalgoritmer i konfigurasjonsdelen eller sjekke ut fullstendig dokumentasjon.

Konklusjon: HAProxy Load Balancer

Gratulerer med vellykket oppsett av HAProxy load balancer! Selv med et grunnleggende belastningsbalanseringsoppsett kan du forbedre ytelsen og tilgjengeligheten til nettapplikasjonen din betraktelig. Denne veiledningen er bare en introduksjon til lastbalansering med HAProxy, som er i stand til mye mer enn det som kan dekkes i hurtigoppsettsguiden. Vi anbefaler å eksperimentere med forskjellige konfigurasjoner ved å bruke omfattende dokumentasjon, tilgjengelig for HAProxy, og begynn deretter å planlegge belastningsbalansering for produksjonsmiljøet ditt.

Ved å bruke flere verter for å beskytte nettjenesten din med takhøyde, kan selve lastbalanseren fortsatt være et feilpunkt. Du kan forbedre høy tilgjengelighet ytterligere ved å installere en flytende IP mellom flere lastbalansere. Du kan finne ut mer om dette i vår artikkel om flytende IP-adresser på UpCloud.

Mer om kurset "Linux-administrator. Virtualisering og klynging"***

Kilde: www.habr.com

Legg til en kommentar