[Serwery] Load balancing.

  • Post author:
  • Post category:Serwery

Load balancing (równoważenie obciążenia) jest to technika rozkładania ruchu sieciowego lub obciążenia obliczeniowego między serwerami, aby zapewnić optymalną wydajność, dostępność i niezawodność aplikacji lub usług. Głównym celem równoważnego obciążenia jest zapobieganie przeciążenia serwerów, co mogłoby prowadzić do spadku wydajności aplikacji/usługi lub jej całkowitej niedostępności.

To jak działa ten load balancing?

Zapotrzebowanie użytkowników (żądania sieciowe)

Kiedy użytkownik odwiedza stronę internetową lub korzysta z aplikacji online, jego żądanie (np. otwarcie strony) trafia najpierw do specjalnego urządzenia lub oprogramowania zwanego load balancerem (równoważnikiem obciążenia). Pamiętaj, że dany system np. aplikacja internetowa może mieć więcej niż 1 serwer, który obsługuje daną aplikację i w danym momencie wielu użytkowników (setki a może nawet i tysiące) próbuje wejść do tej aplikacji jednocześnie.

Load balancer (pośrednik)

Load balancer działa jak pośrednik pomiędzy użytkownikami a serwerami. Jego zadaniem jest zdecydowanie, który z serwerów w farmie ma obsłużyć konkretne żądanie. Przy wyborze dba aby serwery były równomiernie obciążone a użytkownik otrzymał odpowiedź jak najszybciej.

Algorytmy rozkładania obciążenia

Aby wybrać odpowiedni serwer, load balancer korzysta z różnych algorytmów, które decydują, jak rozdzielić ruch. Oto najpopularniejsze z nich:

Round Robin

Load balancer rozdziela ruch sekwencyjnie na każdy z dostępnych serwerów. Każde żądanie trafia na kolejny serwer w kolejce np.: masz 5 serwerów, pierwsze żądanie trafi na serwer 1, drugie na serwer 2, trzecie na serwer 3 itd.

Least Connections

Wybiera serwer, który ma aktualnie najmniej aktywnych połączeń. Ten algorytm jest użyteczny, gdy żądania różnią się w ilości zasobów, jakie zużywają np.: jeden serwer obsługuje tylko 6 użytkowników, a inny ma 20 aktywnych połączeń, nowe żądanie zostanie skierowane na serwer o mniejszym obciążeniu.

IP Hash

W tym algorytmie load balancer przypisuje użytkownika do serwera na podstawie jego adresu IP. Dzięki temu ten sam użytkownik będzie zawsze kierowany na ten sam serwer (co może być ważne np. dla sesji użytkownika).

Weighted Round Robin

Każdy serwer dostaje określoną wagę w zależności od swoich zasobów (np. serwer z większą ilością pamięci i CPU dostaje większą wagę). Serwery o większej wadze otrzymują większą ilość żądań.

Zwykle administrator systemu lub inżynier sieciowy wybiera odpowiedni algorytm podczas konfigurowania load balancera, w zależności od potrzeb i specyfiki aplikacji.

Przekazywanie żądania do odpowiedniego serwera

Po wybraniu serwera, load balancer przekazuje żądanie do niego, a serwer przetwarza je, generuje odpowiedź (np. strona internetowa) i wysyła ją z powrotem do użytkownika.

Monitorowanie serwerów

Load balancer ciągle monitoruje stan serwerów w farmie, aby upewnić się, że są one dostępne i działają poprawnie. Używa specjalnych testów (tzw. health checks) do monitorowania zdrowia serwerów, sprawdzając na przykład: czy serwer odpowiada na zapytania w odpowiednim czasie? lub czy jest w stanie obsłużyć nowe żądania?

Jeśli któryś z serwerów przestaje działać np. następuje awaria sprzętu lub oprogramowania, load balancer automatycznie wyklucza go z rotacji i kieruje ruch do innych dostępnych serwerów. Po naprawieniu serwera może on zostać ponownie dodany do puli.

Zabezpieczenie przed przeciążeniem

Dzięki load balancerowi aplikacja lub strona internetowa może obsługiwać większe ilości ruchu bez ryzyka przeciążenia jednego serwera. Load balancer rozkłada ruch tak, aby każdy serwer pracował w optymalnych warunkach, a użytkownicy nie odczuwali opóźnień.

Failover

W przypadku awarii jednego z serwerów, load balancer automatycznie przełączy ruch na pozostałe serwery. Jest to nazywane failover, czyli mechanizm awaryjny. Dzięki temu aplikacja może dalej działać bez przerw, mimo problemów z pojedynczym serwerem.

Skalowanie

Load balancing umożliwia łatwe skalowanie horyzontalne, czyli dodawanie nowych serwerów do farmy bez zmiany samej aplikacji. Jeśli Twoja aplikacja zaczyna obsługiwać coraz więcej użytkowników, wystarczy dodać kolejne serwery, a load balancer automatycznie zacznie rozdzielać na nie ruch.

Rodzaje load balancerów

Sprzętowe

To dedykowane urządzenia do równoważenia obciążenia, oferujące wysoką wydajność i niezawodność np.: F5 Networks, Citrix NetScaler.

Programowe

Są to rozwiązania oparte na oprogramowaniu, które można zainstalować na serwerze np.: NGINX, HAProxy, czy Apache Traffic Server.

Chmurowe

Dostępne w chmurze, zarządzane przez dostawców takich jak Amazon Web Services (AWS Elastic Load Balancer), Google Cloud (Cloud Load Balancing), czy Microsoft Azure (Azure Load Balancer).

Podsumowanie zalet load balancing:

Podsumowując load balancing to większa wydajność, redundancja, elastyczność i skalowalność oraz niezawodność naszych systemów lub aplikacji.