Instalarea echilibrarului de încărcare HAProxy pe CentOS

Traducerea articolului a fost pregătită în ajunul începerii cursului „Administrator Linux. Virtualizare și clustering"

Instalarea echilibrarului de încărcare HAProxy pe CentOS

Echilibrarea sarcinii este o soluție comună pentru scalarea orizontală a aplicațiilor web pe mai multe gazde, oferind în același timp utilizatorilor un singur punct de acces la serviciu. HAProxy este unul dintre cele mai populare software de echilibrare a încărcăturii open source, care oferă, de asemenea, disponibilitate ridicată și funcționalitate proxy.

HAProxy se străduiește să optimizeze utilizarea resurselor, să maximizeze debitul, să minimizeze timpul de răspuns și să evite supraîncărcarea oricărei resurse individuale. Poate fi instalat pe o varietate de distribuții Linux, cum ar fi CentOS 8, pe care ne vom concentra în acest ghid, precum și sisteme Debian 8 и Ubuntu 16.

Instalarea echilibrarului de încărcare HAProxy pe CentOS

HAProxy este potrivit în special pentru site-urile web cu trafic foarte mare și, prin urmare, este adesea folosit pentru a îmbunătăți fiabilitatea și performanța configurațiilor de servicii web cu mai multe servere. Acest ghid prezintă pașii pentru a configura HAProxy ca echilibrator de încărcare pe o gazdă în cloud CentOS 8, care apoi direcționează traficul către serverele dvs. web.

Ca o condiție prealabilă pentru cele mai bune rezultate, ar trebui să aveți cel puțin două servere web și un server de echilibrare a încărcăturii. Serverele web trebuie să ruleze cel puțin un serviciu web de bază, cum ar fi nginx sau httpd, pentru a testa echilibrarea încărcării între ele.

Instalarea HAProxy pe CentOS 8

Deoarece HAProxy este o aplicație open source care evoluează rapid, este posibil ca distribuția disponibilă pentru dvs. în depozitele standard CentOS să nu fie cea mai recentă versiune. Pentru a afla versiunea curentă, executați următoarea comandă:

sudo yum info haproxy

HAProxy oferă întotdeauna trei versiuni stabile din care să aleagă: cele mai recente două versiuni acceptate și o a treia versiune, mai veche, care încă primește actualizări critice. Puteți oricând să verificați cea mai recentă versiune stabilă listată pe site-ul web HAProxy și apoi să decideți cu ce versiune doriți să lucrați.

În acest ghid, vom instala cea mai recentă versiune stabilă 2.0, care nu era încă disponibilă în arhivele standard la momentul scrierii ghidului. Va trebui să îl instalați din sursa originală. Dar mai întâi, verificați dacă ați îndeplinit condițiile necesare pentru a descărca și compila programul.

sudo yum install gcc pcre-devel tar make -y

Descărcați codul sursă folosind comanda de mai jos. Puteți verifica dacă există o versiune mai nouă disponibilă pe Pagina de descărcare HAProxy.

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

Odată ce descărcarea este completă, extrageți fișierele folosind comanda de mai jos:

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

Accesați directorul sursă dezambalat:

cd ~/haproxy-2.0.7

Apoi compilați programul pentru sistemul dvs.:

make TARGET=linux-glibc

Și, în sfârșit, instalați HAProxy în sine:

sudo make install

HAProxy este acum instalat, dar necesită câteva manipulări suplimentare pentru ca acesta să funcționeze. Să continuăm configurarea software-ului și a serviciilor de mai jos.

Configurarea HAProxy pentru serverul dvs

Acum adăugați următoarele directoare și fișiere de statistici pentru intrările HAProxy:

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

Creați o legătură simbolică pentru binare, astfel încât să puteți rula comenzile HAProxy ca utilizator obișnuit:

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

Dacă doriți să adăugați un proxy la sistemul dumneavoastră ca serviciu, copiați fișierul haproxy.init din exemple în directorul dumneavoastră /etc/init.d. Editați permisiunile fișierului astfel încât scriptul să ruleze, apoi reporniți demonul systemd:

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

De asemenea, trebuie să permiteți serviciului să repornească automat când sistemul pornește:

sudo chkconfig haproxy on

Pentru comoditate, se recomandă, de asemenea, să adăugați un utilizator nou pentru a rula HAProxy:

sudo useradd -r haproxy

După aceasta, puteți verifica din nou numărul versiunii instalate folosind următoarea comandă:

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

În cazul nostru, versiunea ar trebui să fie 2.0.7, așa cum se arată în exemplul de ieșire de mai sus.

În cele din urmă, firewall-ul implicit din CentOS 8 este destul de restrictiv pentru acest proiect. Utilizați următoarele comenzi pentru a permite serviciile necesare și pentru a reseta firewall-ul:

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

Configurare Load Balancer

Configurarea HAProxy este un proces destul de simplu. În esență, tot ce trebuie să faceți este să spuneți HAProxy ce conexiuni ar trebui să asculte și unde ar trebui să le transmită.

Acest lucru se realizează prin crearea unui fișier de configurare /etc/haproxy/haproxy.cfg cu setări definitorii. Puteți citi despre opțiunile de configurare HAProxy pe pagina de documentațiedacă vrei să afli mai multe despre asta.

Echilibrarea sarcinii la nivelul de transport (stratul 4)

Să începem cu configurația de bază. Creați un nou fișier de configurare, de exemplu folosind vi cu comanda de mai jos:

sudo vi /etc/haproxy/haproxy.cfg

Adăugați următoarele secțiuni la fișier. A inlocui numele serverului ce ar trebui să numească serverele dvs. pe pagina de statistici și private_ip — adrese IP private ale serverelor către care doriți să direcționați traficul web. Puteți verifica adresele IP private pe panoul de control UpCloud iar pe filă Rețea privată în meniu Reţea.

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

Aceasta definește un echilibrator de încărcare a stratului de transport (layer 4) denumit extern http_front ascultare pe portul 80, care apoi redirecționează traficul către un backend implicit numit http_back. Statistici suplimentare /haproxy?stats conectează pagina de statistici la adresa specificată.

Diversi algoritmi de echilibrare a sarcinii.

Specificarea serverelor în secțiunea backend permite HAProxy să utilizeze aceste servere pentru echilibrarea încărcăturii conform unui algoritm round-robin atunci când este posibil.

Algoritmii de echilibrare sunt utilizați pentru a determina la ce server din backend este transmisă fiecare conexiune. Iată câteva dintre opțiunile utile:

  • Roundrobin: Fiecare server este folosit pe rând în funcție de greutatea sa. Acesta este cel mai fluid și mai corect algoritm atunci când timpul de procesare al serverelor rămâne distribuit uniform. Acest algoritm este dinamic, permițând ca greutatea serverului să fie ajustată din mers.
  • Leastconn: este selectat serverul cu cele mai puține conexiuni. Round robin se realizează între servere cu aceeași încărcare. Utilizarea acestui algoritm este recomandată pentru sesiuni lungi precum LDAP, SQL, TSE etc., dar nu este foarte potrivită pentru sesiuni scurte precum HTTP.
  • Primul: Primul server cu sloturi de conexiune disponibile primește conexiunea. Serverele sunt selectate de la cel mai mic ID numeric la cel mai mare, care este implicit la poziția serverului în fermă. Odată ce un server ajunge la maxconn, este folosit următorul server.
  • Sursa: Adresa IP sursă este hashing și împărțită la greutatea totală a serverelor care rulează pentru a determina care server va primi cererea. În acest fel, aceeași adresă IP a clientului va merge întotdeauna la același server, în timp ce serverele rămân aceleași.

Configurarea echilibrării sarcinii la nivel de aplicație (nivelul 7)

O altă opțiune disponibilă este configurarea unui echilibrator de încărcare pentru a rula la nivelul aplicației (nivelul 7), ceea ce este util atunci când părți ale aplicației dvs. web sunt situate pe gazde diferite. Acest lucru poate fi realizat prin limitarea transmisiei conexiunii, de exemplu prin URL.

Deschideți fișierul de configurare HAProxy folosind un editor de text:

sudo vi /etc/haproxy/haproxy.cfg

Apoi configurați segmentele frontend și backend conform exemplului de mai jos:

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

Interfața declară o regulă ACL numită url_blog care se aplică tuturor conexiunilor cu căi care încep cu /blog. Use_backend specifică că conexiunile care se potrivesc cu condiția url_blog ar trebui să fie deservite de un backend numit blog_back, iar toate celelalte solicitări sunt gestionate de backend-ul implicit.

Pe partea de backend, configurația stabilește două grupuri de servere: http_back, ca înainte, și unul nou numit blog_back, care gestionează conexiunile la example.com/blog.

După modificarea setărilor, salvați fișierul și reporniți HAProxy folosind următoarea comandă:

sudo systemctl restart haproxy

Dacă primiți avertismente sau mesaje de eroare în timpul pornirii, verificați configurația pentru acestea și asigurați-vă că ați creat toate fișierele și folderele necesare, apoi încercați să reporniți.

Testarea configurației

Odată ce HAProxy este configurat și rulează, deschideți adresa IP publică a serverului de echilibrare a încărcăturii într-un browser și verificați dacă sunteți conectat corect la backend. Parametrul stats uri din configurație creează o pagină de statistici la adresa specificată.

http://load_balancer_public_ip/haproxy?stats

Când încărcați pagina de statistici, dacă toate serverele dvs. sunt verzi, atunci configurarea a avut succes!

Instalarea echilibrarului de încărcare HAProxy pe CentOS

Pagina de statistici conține câteva informații utile pentru urmărirea gazdelor dvs. web, inclusiv timpul de sus/încărcare și numărul de sesiuni. Dacă serverul este marcat cu roșu, asigurați-vă că serverul este pornit și că îl puteți ping de la mașina de echilibrare a încărcăturii.

Dacă echilibratorul de încărcare nu răspunde, asigurați-vă că conexiunile HTTP nu sunt blocate de un firewall. De asemenea, asigurați-vă că HAProxy funcționează folosind comanda de mai jos:

sudo systemctl status haproxy

Protejarea paginii de statistici cu o parolă

Cu toate acestea, dacă pagina de statistici este pur și simplu listată pe front end, atunci este deschisă pentru toată lumea, ceea ce poate să nu fie o idee bună. În schimb, îi puteți atribui un număr de port personalizat adăugând exemplul de mai jos la sfârșitul fișierului haproxy.cfg. A inlocui nume de utilizator и parola pentru ceva sigur:

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

După ce adăugați un nou grup de ascultători, eliminați vechiul link uri de statistici din grupul de front-end. Când ați terminat, salvați fișierul și reporniți HAProxy.

sudo systemctl restart haproxy

Apoi deschideți din nou echilibrul de încărcare cu noul număr de port și conectați-vă cu numele de utilizator și parola pe care le-ați specificat în fișierul de configurare.

http://load_balancer_public_ip:8181

Asigurați-vă că toate serverele dvs. sunt încă verde și apoi deschideți doar IP-ul de echilibrare a încărcăturii fără numere de port în browser.

http://load_balancer_public_ip/

Dacă aveți cel puțin o varietate de pagini de destinație pe serverele dvs. back-end, veți observa că de fiecare dată când reîncărcați pagina, primiți un răspuns de la o gazdă diferită. Puteți încerca diferiți algoritmi de echilibrare în secțiunea de configurare sau puteți verifica documentatie completa.

Concluzie: HAProxy Load Balancer

Felicitări pentru configurarea cu succes a echilibratorului de încărcare HAProxy! Chiar și cu o configurație de bază de echilibrare a sarcinii, puteți îmbunătăți semnificativ performanța și disponibilitatea aplicației dvs. web. Acest ghid este doar o introducere în echilibrarea încărcării cu HAProxy, care este capabil de mult mai mult decât ceea ce poate fi acoperit în ghidul de configurare rapidă. Vă recomandăm să experimentați cu diferite configurații folosind documentare extinsă, disponibil pentru HAProxy, apoi începeți să planificați echilibrarea sarcinii pentru mediul dvs. de producție.

Folosind mai multe gazde pentru a vă proteja serviciul web cu spațiu liber, echilibratorul de încărcare în sine poate prezenta în continuare un punct de eșec. Puteți îmbunătăți și mai mult disponibilitatea ridicată instalând un IP plutitor între mai multe dispozitive de echilibrare a încărcăturii. Puteți afla mai multe despre acest lucru în pagina noastră articol despre adrese IP plutitoare pe UpCloud.

Mai multe despre curs „Administrator Linux. Virtualizare și clustering"***

Sursa: www.habr.com

Adauga un comentariu