Strona korzysta z plików cookies w celu realizacji usług i zgodnie z Polityką Plików Cookies.
Data publikacji: 27-08-2020 | Autor: | Konrad Kubecki |
Zapewnienie wysokiej dostępności wymaga zaprojektowania odpowiedniej architektury – jednym z jej elementów jest równoważenie obciążenia pomiędzy wieloma serwerami obsługującymi tę samą witrynę lub aplikację.
Witryna lub aplikacja, która nie generuje zbyt dużego ruchu, może rezydować na jednym serwerze. Architektura rozwiązania zmienia się diametralnie, gdy głównymi celami staje się osiągnięcie wysokiej dostępności oraz przygotowanie usługi do przyjęcia dużej ilości użytkowników. Wtedy pojawia się potrzeba uruchomienia load balancera, który będzie rozdzielał żądania pomiędzy większą liczbę serwerów pracujących równolegle.
> Między węzłami
Istnieje wiele produktów do równoważenia obciążenia. Do wyboru są między innymi sprzętowe load balancery oraz płatne i darmowe oprogramowanie. Load balancing to także jedna z funkcji opcjonalnych, którą można uruchomić w najpopularniejszym serwerze webowym – Apache.
Zastosowanie load balancera rozrzucającego żądania pomiędzy węzłami pozwala na osiągnięcie wielu istotnych celów:
> Algorytmy i wagi
Serwer Apache obsługuje cztery różne algorytmy do rozrzucania ruchu pomiędzy węzłami. Użycie dowolnego z nich oznacza potrzebę instalacji dodatkowego modułu, po czym wystarczy wskazać jego nazwę w pliku konfiguracyjnym. Moduły te nie oferują żadnych dodatkowych opcji, które można byłoby wykorzystać. Domyślnie stosowanym algorytmem jest by request. Implementuje go moduł mod_lbmethod_byrequest.
Jest to algorytm typu round-robin, który w podstawowej konfiguracji równomiernie rozrzuca przychodzące żądania pomiędzy węzłami. Obciążeniem poszczególnych serwerów można jednak sterować poprzez stosowanie wag. Wtedy żądania nie są przesyłane przez load balancer do serwerów backend w stopniu równym. Waga to liczba w zakresie od 1 do 100, która przypisywana jest serwerom backend. Im większa, tym większą pracę wykona dany serwer. Jeżeli serwer nr 1 będzie posiadał wagę równą 1, a serwer nr 2 wagę równą 2, to drugi z nich wykona dwukrotnie większą pracę niż pierwszy. Jeśli skonfigurowane zostaną trzy serwery typu backend i każdy otrzyma wagę równą 1, to każdy z nich wykona 1/3 pracy. Serwery o większej wadze dostają więcej żądań do obsłużenia. Analogicznie serwery o mniejszej wadze obsługują mniej żądań.
Podobnym algorytmem do powyższego jest by traffic, którego użycie wymaga instalacji modułu mod_lbmethod_bytraffic. Algorytm ten rozdziela żądania na podstawie ruchu, który wygenerowały poszczególne węzły, aby obsłużyć żądania. W przeciwieństwie do algorytmu by request nie bierze pod uwagę ilości obsłużonych żądań. Trzeci algorytm wspierany przez Apache’a to by business. Rozdzielanie pracy odbywa się na podstawie liczby żądań obsługiwanych w danym momencie. Nowe żądanie trafia do serwera, który zajmuje się aktualnie najmniejszą liczbą żądań. Taki sposób poprowadzenia klientów do serwerów backend pozwala kierować żądania tam, gdzie będą one obsłużone, bez długiego oczekiwania w kolejce. Ostatnim algorytmem jest mod_lbmethod_heartbeat, w którym serwery backend informują load balancera o swoim aktualnym stanie (liczbie obsługiwanych połączeń). Na tej podstawie load balancer podejmuje decyzje o wyborze serwera do obsłużenia kolejnego żądania. Użycie tego modułu oznacza zaangażowanie do pracy kolejnych kilku modułów. Serwery backend wysyłają swój status poprzez moduł mod_heartbeat. Te dane load balancer odbiera dzięki modułowi mod_heartmonitor.
[...]
Specjalista ds. utrzymania infrastruktury i operacji. Zajmuje się problematyką budowy i utrzymania centrów przetwarzania danych oraz zarządzania nimi i koordynowaniem zmian dotyczących krytycznej infrastruktury IT.
Artykuł pochodzi z miesięcznika: IT Professional
Pełna treść artykułu jest dostępna w papierowym wydaniu pisma.
Transmisje online zapewnia: StreamOnline