Równoważenie obciążenia

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacja, szukaj
Balanceamento de carga (NAT).jpg
Commons in image icon.svg

Równoważenie obciążenia (ang. load balancing) – technika rozpraszania obciążenia pomiędzy wiele procesorów, komputerów, dysków, połączeń sieciowych lub innych zasobów.

Przykładowy system load balancing mógłby zapewniać bezawaryjną i optymalną pracę na N-aplikacjach znajdujących się na bliźniaczych M-serwerach (zawierających równoważne aplikacje). Podczas gdy wielu użytkowników wysyła wiele żądań, trafiają one najpierw do SLB, który analizuje obciążenie na poszczególnych M-serwerach. Następnie dokonuje optymalnego wyboru – odsyłając użytkownika do jednego z serwerów do konkretnej aplikacji – według żądania.

Optymalny wybór zazwyczaj ma prowadzić do równomiernego obciążenia wszystkich bliźniaczych serwerów. SLB zapewnia że awaria jednego z serwerów nie jest odczuwalna przez użytkowników aplikacji.

Użycie wielu komponentów z równoważeniem obciążenia zamiast pojedynczego komponentu może zwiększyć niezawodność pomimo redundancji. Równoważenie obciążenia jest zazwyczaj obsługiwane przez dedykowane oprogramowanie lub sprzęt takie jak np. przełącznik wielowarstwowy lub serwer DNS.

Zastosowanie[edytuj | edytuj kod]

Jednym z najczęstszych przypadków użycia równoważenia obciążenia, jest zapewnienie obsługi pojedynczej usługi przez wiele serwerów, nazywanych farmą serwerów lub klastrem serwerów. Powszechnie, systemy równoważenia obciążenia stosowane są w popularnych stronach Web, wielkich sieciach IRC, szerokopasmowych stronach FTP, serwerach NNTP i serwerach DNS. Kilka systemów równoważenia obciążenia stosuje się w obsłudze baz danych, i jako takie nazywane są bazodanowymi równoważeniami obciążenia.
W serwisach internetowych, obsługą równoważenia obciążenia zajmuje się dedykowany program, który nasłuchuje porty wyjściowe klientów podłączone do serwisu. Program przekazuje żądanie od klienta do jednego z dostępnych serwerów, i oczekuje na jego odpowiedź. Umożliwia to przekazanie odpowiedzi klientowi bez powiadamiania go o wewnętrznym rozdzielaniu funkcji. Jednocześnie zabezpiecza to przed bezpośrednim dostępem klienta do wszystkich dostępnych serwerów, co z kolei umożliwia ukrycie wewnętrznej struktury systemu i zapobiec atakom na systemowe zasoby lub uzyskanie nieautoryzowanego dostępu do niepowiązanych serwisów działających na innych portach.

Kilka programów obsługujących równoważenie obciążenia zapewnia wykonanie specjalnych instrukcji w przypadku, gdy nie ma dostępnych żadnych zasobów.Na przykład przekazanie do innego programu obsługującego równoważenia obciążenia lub wyświetlenie informacji o braku możliwości obsługi żądania.

Metody[edytuj | edytuj kod]

Round robin DNS[edytuj | edytuj kod]

Alternatywna metoda równoważenia obciążenia, która nie wymaga dedykowanego oprogramowania czy węzła systemowego, nazywana jest round robin DNS. W tej metodzie, wiele adresów IP jest powiązanych z jedną domeną internetową; to klient decyduje z którym serwerem spośród wskazanych (dostępnych) chce się połączyć. W odróżnieniu od dedykowanego systemu równoważenia rozkładu obciążenia, ta technika pokazuje częściową strukturę wewnętrzną i umożliwia klientowi dostęp do wielu serwerów. Metoda ma swoje zalety i wady, przesłanki do stosowania zależą od wymaganego stopnia kontroli nad DNS i granulacji pożądanego równoważenia obciążenia.

Delegowanie DNS[edytuj | edytuj kod]

Inną, bardziej efektywną techniką równoważenia obciążenia DNS jest delegowanie np. www.example.org jako subdomeny, obsługiwanej przez te same serwery, które obsługują samą witrynę internetową. Technika działa szczególnie dobrze gdy serwery są rozrzucone geograficznie. Dla tego przykładu:

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

Adresy IP rozwijane są odpowiednio:
na serwerze one:

@ in a 192.0.2.1

na serwerze two:

@ in a 203.0.113.2

W ten sposób, kiedy serwer jest wyłączony, jego DNS nie udzielając odpowiedzi spowoduje, że nie zostanie do niego przekazane żądanie wykonania usługi. Jeśli łącze do jednego serwera jest przeciążone, zawodność DNS zapewnia obniżenie żądań HTTP przekazywanych do niego. Ponadto najczęściej, najszybsza odpowiedź jest uzyskiwana od najbliższego serwera, co zapewnia czułość geograficzną systemu równoważenia obciążenia. Krótki czas życia pakietu (TTL) pomaga zapewnić szybkie przekazanie obciążenia w przypadku gdy serwer przestanie być dostępny. Na uwagę zasługuje fakt, że ta technika umożliwia przełączanie pojedynczych klientów pomiędzy serwerami w trakcie trwania sesji.

Request Counting[edytuj | edytuj kod]

Algorytm równoważenia obciążenia oparty na idei przesyłania zapytań do nodów w ilości opartej na zdefiniowanym wcześniej wskaźniku udziału. W sytuacji gdy wartość wskaźnika udziałów na wszystkich serwerach jest równy, każdy z nich otrzyma proporcjonalną liczbę zapytań. W przypadku gdy wskaźniki udziałów zadeklarowane zostaną różnie dla różnych serwerów – algorytm skieruje odpowiednio więcej lub mniej zapytań do danego serwera. Asymetryczna deklaracja udziałów pozwala dostosować ilość zapytań jakie przetwarza serwer do jego mocy.

Podsumowanie[edytuj | edytuj kod]

Programy równoważenia obciążenia stosują szeroki wachlarz algorytmów szeregowania aby wykryć, do którego z dostępnych serwerów przekazać żądanie klienta. Najprostsze algorytmy oparte są na losowym wybieraniu lub round robin. Bardziej zaawansowane programy równoważenia obciążenia opierają się na dodatkowych czynnikach takich jak statystyka obciążenia, aktualny czas odpowiedzi, ilość aktywnych połączeń, lokalizacja geograficzna. Bardzo zaawansowane, wydajne systemy mogą używać wielowarstwowego równoważenia obciążenia.

Jako dodatek do sprzętowych rozwiązań równoważenia obciążenia, dostępne są programowe rozwiązania nawet jako otwarte oprogramowanie.