Artykuł pochodzi z wydania: Kwiecień 2023
Load balancing, czyli równoważenie obciążenia, to funkcjonalność, do której zdążyliśmy przywyknąć, zwłaszcza jeśli chodzi o usługi chmurowe. Oprócz najważniejszych dostawców chmury istnieją także producenci, którzy specjalizują się w load balancingu, i właśnie jeden z tego typu produktów przetestujemy tym razem.
Dostępność i skalowalność usług sieciowych oraz aplikacji to kluczowe aspekty dobrze zaprojektowanego systemu IT. Redundancja na wielu poziomach ma za zadanie zapewnić niemal nieprzerwany dostęp do zróżnicowanych zasobów dostępnych w sieci, zarówno lokalnej, jak i w internecie. Nadmiarowość zazwyczaj zaczyna się od warstwy sprzętu odpowiedzialnego za świadczenie usług. Duplikujemy zasilacze, adaptery sieciowe, linie zasilania, łączymy dyski w grupy RAID. W końcu ograniczeni wydajnością sprzętu zaczynamy dostawiać kolejne urządzenia, zapewniając zarówno większą dostępność, jak i wydajność dzięki zwielokrotnieniu możliwości przetwarzania danych na wielu węzłach sieciowych naraz.
Na tym etapie konieczne jest zastosowanie rozwiązania, które na podstawie z góry określonego algorytmu będzie w stanie inteligentnie rozłożyć obciążenie na wszystkie maszyny świadczące daną usługę – i to tak, by móc automatycznie reagować na zmiany w sieci. Istnieje wiele sposobów na zrealizowanie tego zadania. Szeroko rozumiane klastrowanie na poziomie systemu operacyjnego i aplikacji to jedno z rozwiązań. Inne to zastosowanie load balancera, czyli oprogramowania pozwalającego na przekazanie ruchu sieciowego do wskazanej grupy węzłów w mniej lub bardziej wysublimowany sposób.
Z rozwiązaniami firmy Kemp mieliśmy już do czynienia wcześniej. Niespełna dwa lata temu po raz pierwszy testowaliśmy LoadMastera, a ponad osiem lat temu – Flowmona. Patrząc na numerację kolejnych wersji, można odnieść wrażenie, że niewiele się zmieniło. W dalszym ciągu mamy bowiem do czynienia z główną wersją oznaczoną cyfrą siedem, a jedynie kolejna liczba w oznaczeniu wypustu nieznacznie wzrosła. Tuż po naszym poprzednim teście zmienił się za to właściciel marki. Obecnie firma należy do znanego na rynku przedsiębiorstwa Progress Software.
> Funkcje
Podstawowa funkcjonalność każdego load balancera to świadczenie usługi typu reverse proxy. Oznacza to w dużym skrócie maskowanie grupy maszyn hostujących zróżnicowane usługi sieciowe za pojedynczym, wirtualnym adresem IP (ang. virtual IP address, VIP). Kemp LoadMaster, podobnie jak rozwiązanie konkurencji, oferuje znacznie więcej. Aby skutecznie przekazać ruch sieciowy do odpowiedniego serwera za load balancerem, konieczne jest sprawdzenie, czy taki host działa poprawnie. Przekazywanie zapytań do przeciążonych maszyn lub do takich, które nie są w stanie poprawnie odpowiedzieć, nie miałoby większego sensu. Tu z pomocą przychodzi zestaw wbudowanych health checków dla najbardziej popularnych usług sieciowych, wśród których znaleźć można chociażby HTTP, HTTPS, FTP, DNS SMTP, POP3, IMAP czy ICMP. Testowanie dostępności usługi może się odbywać zarówno w warstwie czwartej, jak i siódmej. Domyślnie używane są standardowe porty zgodne z RFC, choć administrator ma również sposobność zdefiniowania własnych ustawień dla protokołu TCP. W zależności od badanego protokołu możliwe jest zweryfikowanie konkretnych kodów odpowiedzi, jak chociażby w przypadku HTTP(S). Na podstawie zwracanej wartości administrator z łatwością sprawdzi, czy dana maszyna za load balancerem jest dostępna i działa zgodnie z założeniami. Oczywiście mechanizm health checkingu można sparametryzować, definiując odpowiednio interwały pomiędzy odpytaniem o dostępność usługi, maksymalny czas odpowiedzi, po przekroczeniu którego odliczana jest liczba nieudanych prób, aby w końcu usunąć taki serwer z grupy hostów w ramach wirtualnej usługi. To właśnie wirtualna usługa reprezentuje określoną aplikację sieciową, za którą stoi konkretna liczba rzeczywistych hostów. Wśród innych konfigurowalnych parametrów można znaleźć chociażby opcję określającą minimalną liczbę hostów za load balancerem, aby uznać daną usługę za dostępną. W przypadku wspomnianych już protokołów webowych HTTP i HTTPS sprawdzenie dostępności usługi jest nieco bardziej rozbudowane i może opierać się chociażby na walidacji osiągalności określonego adresu URL wraz z wybranym kodem oczekiwanej odpowiedzi. Oczywiście można tu także wybrać odpowiednią metodę komunikacji: HEAD, GET oraz POST.
Wirtualna usługa (ang. virtual service, VS) to podstawowy obiekt w LoadMasterze. Stworzenie go oznacza wybranie nowego adresu VIP, za którym będzie schowany serwis, podanie portu TCP lub UDP oraz – opcjonalnie – nadanie nazwy usłudze. W kolejnych krokach można już dowolnie parametryzować wirtualną usługę, dobierając konkretny rodzaj aplikacji sieciowej, a także ustawiając mnóstwo dodatkowych opcji. Przydatnym ustawieniem jest dobór sposobu rozrzucania ruchu na serwery znajdujące się za load balancerem. W tym zakresie nie zmieniło się zupełnie nic względem poprzedniego testu LoadMastera. W dalszym ciągu mamy do wyboru 10 algorytmów, począwszy od najprostszego i zarazem najpopularniejszego round robin, poprzez weighted round robin, least connection, weighted least connection, agent-based adaptive balancing, resource-based (SDN adaptive), fixed weighted, weighted response time, source IP hash, na url hash kończąc. Zdecydowana większość algorytmów nie wymaga dodatkowych objaśnień z racji popularności w różnych innych zastosowaniach w świecie IT. Dobór odpowiedniej metody balansowania będzie się różnił w zależności od usługi sieciowej, której skalowalność i wysoką dostępność zamierzamy osiągnąć z wykorzystaniem LoadMastera.
[…]
Marcin Jurczyk
Autor pracuje jako architekt IT w firmie Kyndryl. Zajmuje się infrastrukturą sieciowo-serwerową, wirtualizacją infrastruktury i pamięcią masową.