Echilibrarea sarcinii

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită la 9 octombrie 2015; verificările necesită 44 de modificări .

În terminologia rețelelor de calculatoare , echilibrarea încărcăturii sau echilibrarea încărcăturii ( eng.  load balancing ) este o metodă de distribuire a sarcinilor între mai multe dispozitive de rețea (de exemplu, servere ) cu scopul de a optimiza utilizarea resurselor, de a reduce timpul de serviciu de interogare, de scalare orizontală a clusterelor ( adăugarea/înlăturarea dinamică a dispozitivelor), precum și asigurarea toleranței la erori ( redundanță ).

În computere, echilibrarea încărcăturii distribuie sarcina pe mai multe resurse de calcul, cum ar fi computere, clustere de computere , rețele, procesoare sau discuri. Scopul echilibrării încărcării este de a optimiza utilizarea resurselor, de a maximiza debitul, de a îmbunătăți timpul de răspuns și de a preveni supraîncărcarea oricărei resurse. Utilizarea mai multor componente de echilibrare a sarcinii în loc de o singură componentă poate îmbunătăți fiabilitatea și disponibilitatea prin redundanță . Echilibrarea încărcăturii implică de obicei prezența unui software sau hardware special, cum ar fi un comutator multistrat sau un sistem de nume de domeniu, ca proces de server.

Echilibrarea încărcăturii diferă de o conexiune fizică prin aceea că echilibrarea încărcăturii împarte traficul dintre interfețele de rețea într-o soclu de rețea (modelul OSI layer 4), în timp ce conexiunea prin legătură implică divizarea traficului între interfețele fizice la un nivel inferior sau într-un pachet (OSI). model layer 3) sau pe un canal de comunicare (model OSI layer 2).

Exemple de dispozitive cărora li se aplică echilibrarea:

Echilibrarea încărcăturii poate fi utilizată pentru a împuternici o fermă de servere cu mai mult de un server. De asemenea, vă poate permite să continuați să lucrați chiar și în condițiile în care mai multe dispozitive executive (servere) au eșuat. Datorită acestui fapt, toleranța la erori crește și devine posibilă ajustarea dinamică a resurselor de calcul utilizate prin adăugarea/eliminarea dispozitivelor executive din cluster .

Servicii de internet

Una dintre cele mai frecvent utilizate aplicații de echilibrare a încărcăturii este crearea unui singur serviciu de Internet cu mai multe servere , uneori cunoscute sub numele de ferme de servere . De obicei, sistemele de echilibrare a încărcăturii includ site-uri web populare, magazine online mari, site -uri FTP ( File Transfer Protocol ), sistemul de nume de domeniu (DNS) și baze de date.

Pentru internet, un echilibrator de încărcare este de obicei un program care ascultă pe portul în care clienții externi se conectează la servicii. Echilibratorul de încărcare înaintează cererile către unul dintre „serverele” serverului, care de obicei răspunde la echilibratorul de încărcare. Acest lucru permite echilibratorului de sarcină să răspundă clientului fără a cunoaște separarea internă a preocupărilor. De asemenea, permite clienților să contacteze direct serverele back-end, ceea ce poate avea beneficii de securitate și poate ascunde structura internă a rețelei și poate preveni atacurile asupra nucleului, stivei de rețea sau a serviciilor necorelate care rulează pe alte porturi.

Unele dispozitive de echilibrare a încărcăturii oferă un mecanism pentru a face ceva special în cazul în care întregul backend al serverului este indisponibil. Aceasta poate include redirecționarea către un sistem de echilibrare de rezervă sau afișarea unui mesaj de eroare.

De asemenea, este important ca echilibratorul de sarcină să nu devină un singur punct de defecțiune. În mod obișnuit, echilibratoarele de încărcare sunt implementate în înaltă disponibilitate , care poate, de asemenea, replica sesiunile de persistență dacă este necesar pentru o anumită aplicație. [unu]

DNS round robin

O metodă alternativă de echilibrare a încărcăturii care nu necesită neapărat software special gazdă sau hardware se numește DNS robin round . În această tehnică, mai multe adrese IP asociate cu același nume de domeniu ; clienții trebuie să selecteze un server la care să se conecteze. Spre deosebire de utilizarea unui echilibrator de încărcare dedicat, această tehnică permite clienților să aibă mai multe servere. Tehnica are avantajele și dezavantajele ei, în funcție de gradul de control asupra serverelor DNS și de granularitatea încărcării necesare.

O altă metodă, mai eficientă, de echilibrare a încărcăturii folosind DNS este de a delega www.example.org ca sub-domeniu pentru care zona este întreținută de fiecare dintre aceleași servere care deservesc site-ul web. Această tehnică funcționează bine mai ales acolo unde serverele individuale sunt împrăștiate geografic pe Internet. De exemplu:

one.example.org A 192.0.2.1 doi.exemplu.org A 203.0.113.2 www.example.org NS one.example.org www.example.org NS two.example.org

Cu toate acestea, fișierul de zonă pentru www.example.org de pe fiecare server este diferit, astfel încât fiecare server decide cum să folosească adresa IP ca înregistrare A. Pe serverul de fișiere cu zonă unică pentru raportare www.example.org:

@ într-un 192.0.2.1

Pe serverul doi, același fișier de zonă conține:

@într-un 203.0.113.2

Astfel, atunci când primul server este defect, DNS-ul său nu răspunde și serviciul web nu primește trafic. Dacă linia de pe un server este aglomerată, serviciul DNS neîncrezat oferă mai puțin trafic http pentru a ajunge la acel server. În plus, cel mai rapid răspuns DNS este aproape întotdeauna rezolvat din rețeaua celui mai apropiat server, datorită echilibrării sarcinii geo-sensibile. Un scurt TTL la o înregistrare A vă permite să redirecționați rapid traficul dacă serverul se blochează. Trebuie luată în considerare posibilitatea ca această tehnică să conducă la clienții individuali să poată comuta între servere separate în mijlocul unei sesiuni.

Algoritmi de planificare

Mulți algoritmi de programare sunt folosiți de echilibratorii de încărcare pentru a determina la ce server să trimită o solicitare. Algoritmii simpli includ selecția aleatorie sau round robin . Echilibratoarele de încărcare mai sofisticate pot lua în considerare factori suplimentari, cum ar fi ce servere au raportat încărcare, timpii de răspuns mai lenți, starea sus/în jos (determinată de monitorizarea prin sondaj de un anumit tip), numărul de conexiuni active, locația geografică, capabilități sau cât de mult trafic are a fost numit recent.

Persistență

O problemă importantă atunci când rulați un serviciu de echilibrare a încărcăturii este modul de a trata informațiile care trebuie stocate în mai multe solicitări într-o sesiune de utilizator. Dacă aceste informații sunt stocate local pe un singur server backend, atunci solicitările ulterioare care provin de la diferite servere backend nu le vor putea găsi. Acestea pot fi informații stocate în cache care pot fi recalculate, caz în care o solicitare de echilibrare a încărcăturii către un alt server backend rezolvă problema de performanță.

În mod ideal , clusterul de servere din spatele echilibratorului de încărcare ar trebui să țină cont de sesiune, astfel încât, dacă un client se conectează la orice server în orice moment, istoricul comunicării utilizatorului cu un anumit server este irelevant. Acest lucru se realizează de obicei folosind o bază de date partajată sau o sesiune de bază de date în memorie, cum ar fi memcached .

O soluție de bază la problema datelor de sesiune este trimiterea secvenţială a tuturor cererilor din sesiunea unui utilizator către același server. Aceasta se numește persistență sau lipiciitate . Un dezavantaj semnificativ al acestei tehnologii este lipsa failover -ului automat : dacă serverul se defectează, informațiile sale de sesiune devin indisponibile, toate sesiunile sunt pierdute. Aceeași problemă se aplică de obicei bazei de date centrale a serverului; chiar dacă serverele web sunt „stateless” (stateless) și nu „sticky” (sticky), baza de date centrală (vezi mai jos).

Atribuirea unui anumit server se poate baza pe numele de utilizator, adresa IP a clientului sau poate fi aleatorie. Din cauza modificărilor aduse adresei percepute de client care rezultă din DHCP , traducerea adresei de rețea și proxy web, această metodă poate fi nesigură. Lucrările aleatoare trebuie reținute de echilibrator de încărcare, care pune o sarcină asupra stocării. Dacă echilibratorul de încărcare este înlocuit sau scade, aceste informații se pot pierde și este posibil ca lucrările să fie șterse după o anumită perioadă de timp sau în perioadele de încărcare mare pentru a evita depășirea spațiului disponibil pentru tabelul de atribuire. Metoda de atribuire aleatorie necesită, de asemenea, ca clienții să accepte unele setări, ceea ce poate fi o problemă, de exemplu, atunci când browserul Web a dezactivat stocarea cookie-urilor. Echilibratoarele de încărcare complexe folosesc mai multe metode de persistență pentru a evita unele dintre dezavantajele oricărei metode.

O altă soluție este stocarea datelor de sesiune într-un DB . În general, acest lucru este rău pentru performanță, deoarece crește încărcarea bazei de date: baza de date este mai bine utilizată pentru a stoca informații mai puțin volatile decât datele sesiunii. Pentru a preveni ca baza de date să devină un singur punct de eșec și pentru a îmbunătăți scalabilitatea , bazele de date sunt adesea replicate pe mai multe mașini, iar echilibrarea încărcării este utilizată pentru a distribui indexul de încărcare între aceste replici. Tehnologia Microsoft ASP.net State Server este un exemplu de sesiune de bază de date. Toate serverele din ferma web stochează datele de sesiune pe serverul Master State Server și orice server din fermă pot prelua datele.

În cazurile foarte frecvente în care clientul este un browser web, o abordare simplă, dar eficientă, este stocarea datelor de sesiune în browserul însuși. O modalitate de a realiza acest lucru este utilizarea cookie -urilor de browser , marcaje temporale criptate. O altă modalitate este rescrierea URL-ului. Stocarea datelor de sesiune pe client este de obicei soluția preferată: echilibratorul de încărcare este apoi liber să aleagă orice server pentru a procesa cererea. Cu toate acestea, această metodă de procesare a datelor de stare nu este potrivită pentru unele scenarii complexe de logică de afaceri în care starea sesiunii este o sarcină utilă mare și nu este posibil să o recitiți cu fiecare solicitare către server. Rescrierea URL-urilor are probleme serioase de securitate, deoarece utilizatorul final poate schimba cu ușurință URL-urile trimise și, astfel, poate schimba fluxurile de sesiune.

O altă soluție pentru stocarea datelor persistente este asocierea unui nume cu fiecare bloc de date, utilizarea unui tabel hash distribuit pentru a atribui pseudo-aleatoriu un nume unuia dintre serverele disponibile și apoi stocarea acel bloc de date pe serverul desemnat.

Funcții de echilibrare a încărcăturii

Echilibratoarele de încărcare hardware și software pot avea caracteristici speciale diferite. Caracteristica principală a unui echilibrator de încărcare este de a putea distribui cererile primite pe mai multe servere dintr- un cluster conform unui algoritm de programare. Cele mai multe dintre proprietățile specifice furnizorului enumerate mai jos:

Utilizări în rețelele de telecomunicații

Echilibrarea sarcinii poate fi utilă în aplicațiile de legătură redundante. De exemplu, o companie poate avea mai multe conexiuni la Internet, oferind acces la rețea dacă una dintre conexiuni este întreruptă. În sistemele de siguranță , aceasta ar însemna că o legătură este pentru utilizare normală, iar cealaltă este utilizată numai dacă legătura principală eșuează.

Folosind echilibrarea sarcinii, ambele legături pot fi ocupate tot timpul. Dispozitivul sau programul controlează prezența tuturor legăturilor și alege calea pentru trimiterea pachetelor. Utilizarea mai multor legături în același timp crește lățimea de bandă disponibilă.

Cea mai scurtă cale de a depăși

Standardul IEEE a aprobat standardul IEEE 802.1 rr în mai 2012 [2] este, de asemenea, cunoscut și documentat în majoritatea cărților ca cea mai scurtă cale (SCP). KPC permite tuturor legăturilor să fie active pe mai multe căi de importanță egală, oferă o convergență mai rapidă, reducând timpul de nefuncționare și ușurează utilizarea echilibrării sarcinii într- o rețea mesh (parțial și/sau complet conectată), permițând traficului să echilibreze încărcarea pe toate căile de rețea . [3] [4] PPC este conceput pentru a elimina practic erorile umane în timpul procesului de configurare și păstrează natura plug-and-play a plug-and-play, care creează Ethernet ca protocol de facto în al doilea strat. [5]

Rutare

Multe companii de telecomunicații au mai multe rute prin rețelele lor sau către rețele externe. Ei folosesc sarcini complexe pentru a schimba traficul de la o cale la alta pentru a evita congestionarea rețelei la orice legătură anume și, uneori, pentru a minimiza costul de tranzit prin rețele externe sau pentru a îmbunătăți fiabilitatea rețelei.

O altă modalitate de a utiliza echilibrarea încărcării rețelei este cu monitorizarea activității. Echilibratoarele de încărcare pot fi folosite pentru a împărți fluxurile uriașe de date în mai multe sub-fluxuri și pentru a utiliza mai multe analizoare de rețea în care fiecare citește o parte din datele originale. Acest lucru este foarte util pentru monitorizarea rețelelor rapide, cum ar fi porturile de 10 gbe sau STM64, unde procesarea complexă a datelor ar putea să nu fie posibilă la viteza firului.

Relația cu toleranța la erori

Echilibrarea sarcinii este adesea folosită pentru a implementa toleranța la erori - continuarea unui serviciu după defecțiunea uneia sau mai multor componente ale acestuia. Componentele sunt monitorizate constant (de exemplu, serverele web pot fi controlate printr-un eșantion de pagini cunoscute), iar atunci când cineva nu mai răspunde, echilibratorul de încărcare este informat și nu mai trimite trafic către acel server. Când componenta revine online, echilibratorul de încărcare începe să direcționeze din nou traficul către ea. Pentru ca acest lucru să funcționeze, trebuie să existe cel puțin o componentă în plus față de capacitatea serviciului (N+1 rezervări). Acest lucru este mult mai ieftin și mai flexibil decât abordările de failover în care fiecare componentă activă este asociată cu o singură componentă de rezervă care preia controlul în cazul unei defecțiuni (redundanță modulară duală). Unele tipuri de sisteme RAID pot fi, de asemenea, folosite ca piese de rezervă pentru un efect similar.

Note

  1. „High Availability” Arhivat pe 11 ianuarie 2016 la Wayback Machine . linuxvirtualserver.org.
  2. Shuang Yu (8 mai 2012)
  3. Peter Ashwood-Smith (24 februarie 2011).
  4. Jim Duffy (11 mai 2012).
  5. „IEEE Approves New IEEE 802.1aq Shortest Path Bridging Standard” Arhivat 12 iunie 2012 la Wayback Machine .

Link -uri