Introducere în haproxy și de încărcare a principiilor de echilibrare

HAProxy (High Availability Proxy) - un server proxy popular pentru Linux, Solaris și FreeBSD cu sarcină de echilibrare TCP / HTTP open source. Sarcina sa principală - mediu de server, creșterea productivității prin distribuirea volumului de muncă între mai multe servere (web, aplicații, baze de date). Ele sunt astfel de bine-cunoscute proiecte, cum ar fi GitHub, Imgur, Instagram și Twitter.

terminologie HAProxy

Există unii termeni și condiții de bază, care ar trebui să înțeleagă în mod clar discuția de servere de echilibrare a sarcinii și proxy. Dar, înainte de a începe să înțeleagă termenii noi, este de a vorbi despre ceea ce ACL, backend și frontend.

Lista de control al accesului (ACL)

Când vorbim despre distribuția sarcinii, ACL este folosit pentru a verifica setul de reguli de alocare și pentru a începe o acțiune (de exemplu, selectarea server sau cererea de rețea de blocare), în funcție de normele aplicabile.

Utilizarea ACL permite gestionarea traficului flexibil, redirecționând-l în funcție de mai mulți factori, printre care se numără modelul de potrivire sau să limitezi numărul de conexiuni la backend și colab.

Pentru o descriere mai detaliată a utilizării ACL, consultați instrucțiunile de configurare HAProxy.

Este un set de servere backend care primesc cererile înaintate de utilizatori. Acestea sunt specificate în configurație Secțiunea backend. In general, backend determinată de următorii parametri:

  • Algoritmul de echilibrare a sarcinii
  • servere si setul de porturi

Backend poate include unul sau mai multe servere. Cu alte cuvinte, adaugand mai multe servere, va crește sarcina maximă posibilă, distribuirea acestuia la toate serverele. Ca urmare, crește toleranța la erori în cazul în care unul dintre serverele refuzat.

Aici este un exemplu în cazul în care două cereri de backend, web-backend și pe blog-backend de prelucrare? venind pe portul 80:

Bilanțul indică linia roundrobin algoritm de echilibrare, care este descris în secțiunea de mai jos algoritmii de distribuție a sarcinii.

Modul http indică faptul că va fi utilizat de către stratul proxy 7, care este de asemenea descrisă în tipurile de distribuție a sarcinii.

Parametru verificare înseamnă că aceste servere trebuie să fie verificate pentru întreținere.

Frontend determină modul în care solicitările ar trebui să fie direcționate către backend. Acestea sunt specificate în setările HAProxy secțiunea frontend. Definiția lor este formată din următoarele componente:

Frontend puteți specifica setări diferite pentru trafic de rețea diferite, pe care le vom discuta mai târziu.

Tipuri de distribuție de sarcină

Deci, ne-am dat seama termenii de bază, să trecem la tipul de echilibrare a sarcinii.

nici o sarcină

Cel mai simplu aplicației web fără echilibrare a sarcinii este, de obicei, după cum urmează:

Introducere în haproxy și de încărcare a principiilor de echilibrare

Distribuția nivelului de încărcare 4

Prezentăm o simplă diagramă un exemplu de aplicare a stratului de echilibrare 4:

Introducere în haproxy și de încărcare a principiilor de echilibrare

Utilizatorul accesează echilibrist, care, la rândul său, transmite cererea unui grup de servere backend web-backend. Serverul backend adecvat răspunde utilizatorului. În mod ideal, toate serverele ar trebui să emită un conținut identic, sau utilizatorul poate primi rezultate neașteptate. În general, toate serverul trebuie să fie conectat la aceeași bază de date.

Încărcare la nivel de distribuție 7

În continuare, un proces mai complex - stratul de echilibrare a sarcinii 7 (stratul de aplicație). Un astfel de procedeu permite de a controla fluxul de trafic în baza cererii de conținut. Deci, el este capabil să execute mai multe aplicații web pe același domeniu și port.

Prezentăm o simplă diagramă un exemplu de aplicare a stratului de echilibrare 7:

Introducere în haproxy și de încărcare a principiilor de echilibrare

În acest caz, în cazul în care utilizatorul este rugat să yourdomain.com/blog. acesta va fi redirecționat către backend, responsabil de blog-ul, care este, la servere care rulează o aplicație de pe blog. Toate celelalte cereri sunt trimise la web-backend, care utilizează deja o aplicație complet diferit. În acest exemplu, ambele folosesc un server de baze de date backend.

Frontend Configurare Exemplu de obicei, arată astfel:

Această setare determină frontend numit http. care este responsabil pentru tot traficul de intrare la 80 de porturi.

use_backend pe blog-backend dacă url_blog redirecționează sootetstvii trafic cu regulile ACL.

default_backend web-backend indică faptul că traficul va fi redirecționat către site-backend.

algoritmi de echilibrare a sarcinii

de echilibrare a sarcinii algoritm este responsabil pentru selectarea server pentru a procesa cererea utilizatorului. HAProxy ne oferă mai multe algoritmi. În plus față de algoritmul, putem specifica greutatea fiecărui server, potrivit căruia acesta va fi ales mai mult sau mai puțin frecvent.

Considerăm că numai algoritmii utilizați în mod obișnuit, deși HAProxy le oferă mult mai mult. Instrucțiunile de configurare HAProxy poti sa te uiti la ele mai în detaliu.

Aici sunt algoritmii de bază:

Algoritmul utilizat în mod implicit. Enumără unul câte un singur server.

Selectează serverul cu cel mai mic număr de compuși activi. Este recomandat pentru utilizare pentru sesiuni lungi. Servere într-un singur backend variază în mod ciclic.

Selectează un server bazat pe hash, care a fost construit pe baza utilizatorului IP. Astfel, utilizatorii au întotdeauna acces la același server.

durata sesiunii

Uneori, o aplicație necesită ca utilizatorul să fie conectat la același server. Acest lucru se poate realiza prin aplicarea parametrului pentru backend appsession necesar.

test de operabilitate

HAProxy folosește server de verificare a sănătății, pentru a determina dacă acesta este capabil să proceseze solicitarea. Așa că nu trebuie să excludă manual serverul din configurația backend. Implicit HAProxy încearcă să stabilească o conexiune TCP la server și verifică dacă la prelucrarea datelor primite de la portul 80.

În cazul în care serverul nu trece testul, acesta va fi exclus automat din backend și traficul pe ea nu este redirecționat către până când serverul devine din nou disponibil. Dacă vom cădea toate serverele, aplicația devine indisponibilă până când se reia activitatea sa cel puțin un server.

Pentru unii, aceleași tipuri de servere, cum ar fi serverele de baze de date, acest test nu este suficient.

alte soluții

Dacă HAProxy părea prea greu pentru a rezolva problema, încercați să ia în considerare următoarele opțiuni:

  • Linux Servere virtuale (LVS) - un balansier 4 niveluri incluse în cele mai multe distribuții Linux.
  • Nginx - server rapid și sigur, care poate fi, de asemenea, utilizat ca un balansier. El este foarte des folosit în combinație cu mulțumiri HAProxy cache-ul său și capacitatea de arhivare.

concluzie

Așa că trebuie să cunoască elementele de bază de echilibrare a sarcinii și să aibă o idee despre cum HAProxy în măsură să vă ajute. Acum puteți începe în condiții de siguranță să improvizeze, în scopul de a obține cele mai bune rezultate ale server.