Tutorial pentru începători HAProxy

Tutorial Pentru Incepatori Haproxy



Pe măsură ce aplicația dvs. crește, apare necesitatea de a adăuga mai multe servere pentru a gestiona mai mult trafic. Cu cât aplicația dvs. primește mai mult trafic, cu atât sunt mai mari șansele de a face față timpului de nefuncționare atunci când serverul se supraîncărcă. Cu toate acestea, există instrumente precum HAProxy care vă permit să definiți modul în care este gestionat traficul pentru a echilibra sarcina pe serverul dvs. Ideea este să ne asigurăm că niciun server nu este supraîncărcat. High Availability Proxy este un software open-source care este conceput pentru a oferi o echilibrare fiabilă a sarcinii, acționând în același timp ca un proxy invers pentru aplicațiile TCP/HTTP.

HAProxy lucrează pentru a reduce supraîncărcarea oricărui server și realizează acest lucru prin distribuirea unui trafic pentru a se asigura că nu există supraîncărcări de server, dar alte servere sunt disponibile. O platformă precum Instagram are un trafic masiv din cauza solicitărilor trimise pe secundă, de unde necesitatea de a utiliza HAProxy pentru a defini front-end-ul, backend-ul și ascultătorii pentru servere pentru a evita supraîncărcarea.

De ce să folosiți HAProxy

Înainte de a afla despre instalarea și configurarea lui HAProxy, ar trebui să înțelegeți de ce avem nevoie de el, datorită caracteristicilor pe care le oferă. Următoarele sunt caracteristicile principale ale HAProxy:







  1. Echilibrarea sarcinii - Cu HAProxy, puteți distribui confortabil traficul pe diferite servere pentru a evita supraîncărcarea unui singur server. În acest fel, aplicația dvs. nu se va confrunta cu probleme legate de timpul de nefuncționare și veți obține o capacitate de răspuns, fiabilitate și disponibilitate mai rapidă.
  2. Înregistrare și monitorizare - Veți primi jurnale detaliate de monitorizare pentru serverele dvs. pentru a vă ajuta la depanarea problemelor. În plus, HAProxy are o pagină de statistici de unde puteți obține analize de performanță în timp real pentru echilibrul dvs. de încărcare.
  3. controale de sănătate - Chiar și serverele dvs. necesită o verificare de sănătate pentru a le determina starea. HAProxy execută frecvent verificări de sănătate pentru a cunoaște starea serverului dvs. pentru a spori fiabilitatea acestuia. Dacă este detectat un server nesănătos, acesta redirecționează traficul către un alt server.
  4. Reverse Proxy - O modalitate de a spori securitatea este prin ascunderea structurii interne. Din fericire, HAProxy vă permite să primiți traficul de la clienți și să îl direcționați către serverele corespunzătoare. În acest fel, structura dumneavoastră internă este ascunsă de ochiul hackerului.
  5. ACL (liste de control al accesului) – Cu HAProxy, puteți defini modul în care ar trebui să aibă loc rutarea traficului folosind diverse criterii, cum ar fi căi, anteturi și adrese IP. Astfel, definirea unei logici de rutare personalizată pentru traficul dvs. devine mai ușoară.
  6. Terminare SSL - În mod implicit, SSL/TLS este descărcat de serverele backend, ceea ce determină o performanță redusă. Cu toate acestea, cu HAProxy, terminarea SSL/TLS are loc la echilibratorul de încărcare, descarcând sarcina în serverele backend.

Instalarea HAProxy

Până acum, am definit ce este HAProxy și am discutat despre caracteristicile pe care le oferă pentru a vă ajuta să înțelegeți de ce aveți nevoie de el pentru aplicația dvs. Următorul pas este să înțelegeți cum să începeți instalându-l pe sistemul dvs.



Dacă rulați sistemele Ubuntu sau Debian, HAProxy poate fi instalat din managerul de pachete APT. Rulați următoarea comandă:



$ sudo apt update
$ sudo apt install haproxy

În mod similar, dacă utilizați sisteme bazate pe RHEL sau CentOS, HAProxy este disponibil din managerul de pachete „yum”. Rulați următoarele comenzi:





$ sudo yum actualizare
$ sudo yum install haproxy

În cazul nostru, folosim Ubuntu. Astfel, avem comanda noastră după cum urmează:



Putem verifica apoi versiunea sa pentru a ne asigura că am reușit să instalăm HAProxy cu succes.

$ haproxy --version

Cum se configurează HAProxy

Cu HAProxy instalat, acum puteți deschide fișierul său de configurare ( / etc/haproxy/haproxy.cfg) și definiți setările pe care doriți să le utilizați pentru echilibrul de încărcare.

Deschideți fișierul de configurare folosind un editor, cum ar fi nano sau vim.

$ sudo nano /etc/haproxy/haproxy.cfg

Obțineți un fișier de configurare ca cel din următorul:

Din fișierul de configurare, veți observa că acesta vine cu două secțiuni principale:

  1. global - Este prima secțiune din fișier și valorile sale nu ar trebui modificate. Conține setările procesului care definesc modul în care funcționează HAProxy. De exemplu, definește detaliile de înregistrare și grupurile sau utilizatorii care pot executa funcțiile HAProxy. Rețineți că în acest fișier de configurare, puteți avea o singură secțiune globală, iar valorile sale ar trebui să rămână nemodificate.
  1. implicite - Această secțiune conține valorile implicite pentru noduri. De exemplu, puteți adăuga timeout-urile sau modul operațional pentru HAProxy în această secțiune. În plus, este posibil să aveți numeroase secțiuni implicite în fișierul dvs. de configurare HAProxy.

Iată un exemplu de secțiune „Valori implicite”:

În imaginea dată, modul definește modul în care HAProxy va gestiona cererile primite. Puteți seta modul la HTTP sau TCP. În ceea ce privește timeout-ul, acesta specifică cât de mult ar trebui să aștepte HAProxy. De exemplu, timeout connect este timpul de așteptare înainte ca o conexiune backend să fie realizată. Clientul timeout este cât de mult ar trebui să aștepte HAProxy pentru ca un client să trimită datele. Serverul de timeout este timpul de așteptare pentru ca serverul corespunzător să trimită datele care vor fi redirecționate către client. Modul în care definiți valorile implicite contează foarte mult în îmbunătățirea timpului de răspuns al aplicației dvs.

Mai sunt trei secțiuni pe care ar trebui să le definiți pentru ca echilibratorul de încărcare să funcționeze conform așteptărilor.

  1. în față - Această secțiune conține adresele IP pe care doriți să le folosească clienții dumneavoastră pentru a stabili conexiunea.
  2. backend - Acesta arată pool-urile de servere care gestionează cererile, așa cum sunt definite în secțiunea frontend.
  3. asculta - Este folosit succesiv atunci când doriți să direcționați un anumit grup de servere. Această secțiune combină sarcinile frontend-ului și backend-ului.

Să avem un exemplu

Pentru acest exemplu, definim frontend-ul pentru a utiliza localhost cu un anumit port. Apoi, îl legăm cu backend-ul care rulează localhost și apoi rulăm un server Python pentru a testa dacă totul funcționează conform așteptărilor pentru echilibrarea încărcăturii. Urmați pașii dați.

Pasul 1: Configurarea secțiunii implicite

În secțiunea „Valori implicite”, setăm valorile care urmează să fie partajate între noduri. Pentru cazul nostru, setăm modul la HTTP și setăm timeout-urile pentru client și server. Puteți ajusta timpul în funcție de nevoile dvs.

Amintiți-vă că toate aceste modificări sunt în configurația HAProxy situată la „/etc/haproxy/haproxy.cfg”. Odată ce secțiunea implicită este configurată, să definim frontend-ul.

Pasul 2: Configurarea secțiunii Frontend

În secțiunea frontend, definim modul în care dorim ca aplicația sau site-ul web să fie accesat de clienți online. Oferim adresele IP pentru aplicație. Dar pentru acest caz, lucrăm cu localhost. Prin urmare, adresa noastră IP este adresa de rezervă a 127.0.0.1 și dorim să acceptăm conexiunile prin portul 80.

Trebuie să adăugați cuvântul cheie „bind” care acționează ca ascultător pentru adresa IP pe portul specificat. Adresa IP și portul pe care le definiți sunt ceea ce folosește echilibratorul de încărcare pentru a accepta cererile primite.

După adăugarea liniilor anterioare în fișierul de configurare, trebuie să repornim „haproxy.service” cu următoarea comandă:

$ sudo systemctl reporniți haproxy

În acest moment, putem încerca să trimitem cererile către site-ul nostru web folosind comanda „curl”. Rulați comanda și adăugați adresa IP țintă.

$ curl

Deoarece încă nu am definit cum va fi backend-ul HAProxy-ului nostru, obținem o eroare 503, așa cum se arată în continuare. Deși echilibratorul de încărcare a reușit să primească cererile, în prezent niciun server nu este disponibil pentru a le gestiona, de unde și eroarea.

Pasul 3: Configurarea backend-ului

Secțiunea backend este locul unde definim serverele care vor gestiona orice solicitare primită. Echilibratorul de încărcare se referă la această secțiune pentru a ști cum ar trebui să distribuie cererile primite pentru a se asigura că niciun server nu este supraîncărcat.

Eroarea 503 pe care am primit-o mai devreme a fost pentru că nu aveam niciun backend pentru a gestiona solicitările. Să începem prin a defini „default_backend” pentru a gestiona solicitările. Îl definiți în secțiunea frontend. L-am numit „linux_backend” pentru acest caz.

Apoi, creați o secțiune backend care să aibă același nume cu cel definit în secțiunea frontend. Apoi, trebuie să utilizați cuvântul cheie „server” urmat de numele serverului și adresa IP a acestuia. Următoarea imagine arată că am definit serverul „linuxhint1” folosind IP 127.0.0.1 și portul 8001:

Puteți avea un grup de servere backend, dar am definit doar unul pentru acest caz. Asigurați-vă că salvați fișierul. Trebuie să repornim din nou serviciul HAProxy.

Pentru a testa echilibrul de încărcare HAProxy creat, creăm un server web folosind Python3 pentru a lega porturile backend folosind adresa IP pe care am specificat-o. Executăm comanda după cum urmează:

$ python3 -m http.server 8001 --bind 127.0.0.1

Asigurați-vă că înlocuiți valorile pentru a se potrivi cu adresa IP și portul pe care doriți să-l legați. Observați cum este creat serverul web și ascultă orice solicitări primite.

Pe alt terminal, să folosim comanda „curl” pentru a trimite o solicitare către server.

$ curl

Spre deosebire de modul în care am primit eroarea 503 mai devreme, care arată că niciun server nu este disponibil pentru a gestiona cererea, de data aceasta obținem o ieșire care confirmă că echilibrul nostru de încărcare HAProxy funcționează.

Dacă reveniți la terminalul anterior unde am creat serverul web, veți vedea că obținem o ieșire de succes 200 care confirmă că HAProxy a primit cererea și a gestionat-o trimițând-o către serverul definit în secțiunea noastră de backend.

Așa puteți seta un simplu HAProxy pentru site-ul sau aplicația dvs.

Lucrul cu reguli

Înainte de a termina acest tutorial HAProxy pentru începători, să vorbim rapid despre cum puteți defini regulile pentru a ghida modul în care cererile vor fi gestionate de echilibrator de încărcare.

Urmând aceiași pași ca înainte, să lăsăm intactă secțiunea noastră implicită și să definim diferite adrese IP în secțiunea de front-end. Legăm aceeași adresă IP, dar acceptăm conexiunile din porturi diferite.

Mai mult, avem „default_backend” și un alt „use_backend” care este un grup diferit de servere pe care îl vom folosi în funcție de portul de unde provin cererile. În configurația următoare, toate cererile prin portul 81 sunt gestionate de serverele din „Linux2_backend”. Orice alte solicitări sunt gestionate de „default_backend”.

Apoi creăm secțiunile backend așa cum sunt definite în frontend. Rețineți că pentru fiecare backend avem un server diferit pe care îl specificăm să îl folosim pentru gestionarea cererilor.

Reporniți rapid serviciul HAProxy.

Să creăm serverul web folosind Python3 și să legăm cererile pe portul 8002, care este serverul backend alternativ.

Când trimitem cereri către acesta, specificăm portul ca 81 pentru a declanșa echilibratorul de încărcare să trimită cererile către serverul alternativ, care nu este cel implicit.

Reverificând serverul nostru web, putem vedea că reușește să primească și să gestioneze cererile și dă un răspuns de 200 (succes).

Așa puteți defini regulile pentru a ghida modul în care echilibratorul dvs. de încărcare va primi și gestiona solicitările.

Concluzie

HAProxy este o soluție ideală pentru echilibrarea încărcării pentru aplicațiile TCP/HTTP. Odată instalat, puteți edita cu ușurință fișierul de configurare pentru a defini secțiunile implicite, frontend și backend pentru a ghida modul în care va funcționa echilibrul de încărcare. Această postare este un ghid pentru începători pentru HAProxy. A început prin definirea HAProxy și a caracteristicilor sale. Apoi, s-a săpat în înțelegerea modului de configurare HAProxy și a concluzionat dând un exemplu despre cum să utilizați HAProxy ca echilibrator de încărcare.