Co to Load Balancing? #
Load Balancing (ang. równoważenie obciążenia) to technika polegająca na przekierowywaniu zestawu zadań na różne serwery. Jej celem jest optymalizacja czasu przetwarzania tych procesów. Równoważenie obciążenia może zoptymalizować czas reakcji i pozwolić uniknąć nierównomiernego przeciążenia niektórych serwerów.
Jak działa Load Balancing #
Statyczny – statyczny rodzaj Load Balancingu rozprowadza procesy równomiernie, nie biorąc pod uwagę stanu serwerów. Oznacza to, że zadanie zostanie podzielone na równe części między serwery, bez uwzględniania np. tego, czy jeden z nich ma więcej dostępnych zasobów niż drugi. Wprowadzanie statycznego Load Balancingu wymaga dużej wiedzy o środowisku, na którym jest wprowadzany oraz tego, żeby środowisko miało bardzo małe wahania w obciążeniach.
- Round Robin – jest to metoda Load Balancingu, która działa według prostego algorytmu. Rozprowadza on żądania klienta po kolei, do każdej maszyny. Gdy dotrze do końca listy, wraca do pierwszej maszyny i powtarza proces.
- Weighted Round Robin – w tym algorytmie każdej maszynie ręcznie przypisuje się wartość, maksymalnie do 100. Wartość ta oznacza, jak wydajna jest maszyna i ile procesów można jej przypisać. W takim przypadku ruch będzie rozprowadzany na każdy serwer po kolei. Zanim jednak połączenie zostanie przekierowanie dalej, sprawdzona zostanie wartość. Przykładowo, jeżeli mamy 2 serwery – jeden o wartości 50, drugi o wartości 100, to ruch zostanie przekierowany w ten sposób:
serwer 1 – 1 połączenie, 4 połączenie, 7 połączenie
serwer 2 – 2 połączenie, 3 połączenie, 5 połączenie, 6 połączenie, 8 połączenie, 9 połączenie - IP Hash – używa algorytmu haszującego do dystrybuowania ruchu pomiędzy maszynami. Algorytm, wykorzystując źródłowy i docelowy adres IT, decyduje, gdzie przekierować ruch. Zapewnia on też spójne mapowanie. Oznacza to, że klient zawsze zostanie przekierowany do tego samego serwera. W przypadku awarii jednej maszyny, ruch zostanie automatycznie równo rozłożony między pozostałe maszyny.
Dynamiczny – dynamiczny rodzaj Load Balancing używa algorytmów biorących pod uwagę aktualny stan maszyn i rozprowadza ruch biorąc go pod uwagę.
- Least Connections – algorytm ten uwzględnia aktualną liczbę połączeń do serwerów i przekierowuje ruch do serwera, który ma ich najmniej. Algorytm Least connections minimalizuje przeciążenie serwera, ponieważ wysyła żądania tylko do serwerów z najmniejszą liczbą aktywnych połączeń. Nie bierze on jednak pod uwagę wydajności serwera. Co sprawia, że ten rodzaj Load Balancingu najlepiej sprawdza się dla żądań różniących się czasem wykonywania oraz dla serwerów z podobną mocą obliczeniową.
- Weighted Least Connections – tak jak w przypadku weighted round robin, algorytm Weighted Least Connections wprowadza koncept wagi do algorytmu Least Connections. Ten sposób Load Balancingu bierze pod uwagę zarówno ilość aktualnych połączeń, jak i wagę przypisaną do serwera. Dopiero na podstawie tych dwóch wartości podejmuje decyzję, któremu serwerowi przekazać następne połączenie.
Zalety Load Balancingu #
Dostępność – Load Balancing zapewnia dostępność, rozkładając ruch i zapobiegając przeciążeniu jednego serwera. Dodatkowo, w przypadku awarii ruch zostanie przekierowany na inne działające serwery, co zapewni ciągłość działania.
Skalowalność – Load Balancing ułatwia skalowalność w odpowiedzi na aktualny ruch. Zapewnia stałą wydajność w godzinach szczytu i przy zmieniających się wymaganiach.
Redundancja i High Availability – gdy serwer ulegnie awarii, ruch może zostać przekierowany na inne serwery. Podobnie dzieje się, gdy jedna z maszyn musi przejść aktualizacje – Load Balancing pozwala wtedy zachować ciągłość działania pomimo wyłączenia jednej maszyny.
Optymalność – poprzez równomierne rozprowadzenie ruchu między serwerami, możliwe jest optymalne korzystanie z dostępnych zasobów. Load Balancer pozwala również na zoptymalizowanie użycia publicznych adresów IP. Na przykładzie naszego klienta Turbine Analytics, dzięki zastosowaniu Load Balancera zmniejszyliśmy zużycie publicznych IP z 13 adresów aż do 3 adresów. Było to możliwe dzięki odpowiedniej konfiguracji kierowania ruchu na backendy w ustawieniach Load Balancera.
Bezpieczeństwo – dzisiejsze Load Balancery mają wbudowane protokoły bezpieczeństwa sieci, co zapewnia dodatkową warstwę ochrony dla aplikacji internetowych. Mogą one również monitorować ruch oraz są pomocnym narzędziem w zwalczaniu ataku DDoS. Jako że ten atak polega na przeciążeniu serwera zbyt dużą ilością jednoczesnych żądań, można za pomocą Load Balancera przekierować ruch atakującego do różnych serwerów backendowych, żeby złagodzić jego skutki.
Monitorowanie usług – Load Balancery pomagają w monitorowaniu stanu serwerów za pomocą protokołu heartbeat, który okresowo wysyła sygnał do serwerów w celu potwierdzenia normalnego działania. Dzięki temu Load Balancer sprawnie wykryje awarię serwera.
Terminowanie Certyfikatu SSL – Load Balancer można użyć do terminowania certyfikatów SSL, czyli dopasowywania certyfikatów SSL dla stron czy usług. Umożliwia to również dodanie certyfikatu dla całej domeny/subdomeny co ułatwia zarządzanie certyfikatami dla rozbudowanych środowisk z wieloma usługami.
Dwuetapowa weryfikacja logowania – Load Balancer umożliwia integrację z narzędziami do obsługi MFA (Multi Factor Authentication). Ma to na celu zapewnienie dwuetapowej weryfikacji przy logowaniu do wystawianych przez Load Balancer usług. Przykładem jej zastosowania jest środowisko wirtualne na serwerach ARM dla firmy Mikomax Smart Office.
Można również ograniczać dostęp do konkretnych zasobów m.in. poprzez filtrację IP na ruchu przychodzącym.
Hardware vs Software Load Balancing #
Hardware Load Balancing – znajduje się pomiędzy przychodzącym ruchem a serwerami. Użytkownik np. wchodząc na stronę internetową, najpierw zostanie przekierowany do Load Balancera, a dopiero później do wybranego już serwera.
Software Load Balancing – aktualnie nie różni się już znacząco od hardware Load Balancingu, oferując podobne możliwości. Główną różnicą między dwoma rodzajami Load Balancingu jest to, że ten nie wymaga oddzielnej maszyny fizycznej do działania.
Load Balancery na modelu OSI #
Model OSI (Open Systems Interconnection) – rodzaj kategoryzacji struktury komunikacyjnej w sieci komputerowej. Składa się z siedmiu warstw: 1 – Warstwa fizyczna, 2 – Warstwa łącza danych, 3 – Warstwa sieciowa, 4 – Warstwa transportowa, 5 – Warstwa sesji, 6 – Warstwa prezentacji, 7 – Warstwa aplikacji
Load Balancery mogą pracować na dwóch warstwach w modelu OSI – warstwie czwartej i warstwie siódmej.
Można lSO OSI można opisać w innym miejscu i tutaj dać tylko hiperłącze. Wtedy będzie można lepiej to opisać i jednocześnie nie zaśmiecać wpisu o Load Balancingu
Load Balancing warstwy transportowej – zarządza ruchem sieciowym, korzystając z informacji sieciowych, takich jak porty aplikacji i protokoły. Dzięki temu, że wiadomości nie są ani sprawdzane, ani odszyfrowywane, możliwe jest szybkie i efektywne przesyłanie ich. Jednak, skutkiem tego jest to, że Load Balancer nie jest w stanie przekierowywać ruchu na podstawie treści wiadomości.
Load Balancing warstwy aplikacji – korzysta z protokołów HTTP i SMTP, żeby podjąć decyzję na podstawie zawartości każdej z wiadomości. Ten rodzaj Load Balancingu pozwala na podejmowanie dokładniejszych decyzji o przekierowaniu ruchu – np. korzystając z adresu IP klienta.
Global Server Load Balancing (GSLB) #
Global Server Load Balancing (GSLB) – globalne równoważenie obciążenia serwerów. Polega na rozprowadzeniu ruchu pomiędzy różnymi lokalizacjami w celu zapewnienia szybszego działania systemu.
Sticky Sessions #
Sticky Sessions – sposób przeprowadzania ruchu, według którego żądania od tego samego klienta, trafiają do tego samego serwera. Rozwiązanie to tworzy ryzyko nierównomiernego rozprowadzenia ruchu. Sticky sessions są wykorzystywane do obsługi spersonalizowanych danych np. koszyka na stronie internetowej sklepu. Znajdują również zastosowanie w systemach i aplikacjach, w których konieczne jest utrzymanie sesji użytkownika końcowego na konkretnym serwerze, np. gdy zapytania muszą być kierowane do tego samego procesu.