Load balancer
Load balancer (mechanizm równoważenia obciążenia) to element infrastruktury sieciowej, który rozdziela przychodzący ruch między wiele serwerów obsługujących tę samą usługę. Jego celem jest zapobieganie przeciążeniu pojedynczej maszyny oraz zapewnienie wysokiej wydajności i ciągłości działania aplikacji.
Na czym polega działanie load balancera
Load balancer stoi na wejściu do grupy serwerów (tzw. puli backendów) i dla każdego żądania decyduje, do której maszyny je skierować. Decyzję podejmuje na podstawie algorytmu równoważenia. Do najpopularniejszych należą: round robin (rotacyjne przekazywanie żądań po kolei), least connections (do serwera z najmniejszą liczbą aktywnych połączeń) oraz warianty ważone, uwzględniające różną moc maszyn. Kluczową funkcją są kontrole stanu (health checks) — load balancer regularnie sprawdza dostępność serwerów i automatycznie wyłącza z rotacji te, które przestały odpowiadać, kierując ruch wyłącznie do sprawnych węzłów.
Rozróżnia się load balancery warstwy 4 (transportowej, operujące na IP i portach) oraz warstwy 7 (aplikacyjnej, analizujące treść żądań HTTP). Te drugie potrafią kierować ruch na podstawie ścieżki URL czy nagłówków i często pełnią zarazem funkcję reverse proxy.
Zastosowanie w praktyce
Równoważenie obciążenia to fundament architektur o wysokiej dostępności. Rozproszenie ruchu między kilka serwerów pozwala nie tylko obsłużyć większy ruch, ale też przetrwać awarię pojedynczej maszyny bez przerwy w działaniu usługi. Load balancer umożliwia również skalowanie poziome — dokładanie kolejnych serwerów do klastra w miarę wzrostu obciążenia — oraz bezprzerwowe wdrożenia, gdy aktualizowane węzły są kolejno wyłączane z rotacji.
Funkcję tę pełnią zarówno dedykowane urządzenia i usługi chmurowe, jak i oprogramowanie w rodzaju Nginx czy HAProxy. Istotnym zagadnieniem przy równoważeniu obciążenia jest utrzymanie sesji użytkownika — jeśli aplikacja przechowuje stan lokalnie na serwerze, kolejne żądania tego samego klienta powinny trafiać na tę samą maszynę (tzw. sticky sessions) albo stan trzeba wynieść do współdzielonego magazynu. Sam load balancer bywa też punktem pojedynczej awarii, dlatego w krytycznych systemach zwielokrotnia się go w układzie redundantnym.
Powiązane pojęcia
Najczęstsze pytania
Czym różni się load balancer warstwy L4 od L7?
Load balancer warstwy 4 (transportowej) rozdziela ruch na podstawie adresów IP i portów, nie zaglądając w treść żądań — jest szybki i lekki. Warstwa 7 (aplikacyjna) analizuje zawartość żądań HTTP, dzięki czemu może kierować ruch na podstawie ścieżki URL, nagłówków czy ciasteczek, kosztem większego narzutu.
