# Jak ustawić Load balancer?

Dzięki usłudze Load balancera, możliwy jest monitoring (healthcheck - sprawdzanie stanu aplikacji uruchomionej na maszynie wirtualnej OCI) oraz równomiernie rozdzielenie obciążenia pomiędzy maszynami. W ten sposób możemy zapewnić maksymalnie wydajne funkcjonowanie usług i aplikacji.

# Obsługiwane protokoły

  • HTTP(80) - wyłącznie port 80,
  • HTTP(80) + Włącz SSL - porty 80 i 443,
  • HTTPS(443) - wyłącznie port 443,
  • SMTP(25) - wyłącznie port 25,
  • Port - dowolnie wybrany port.

# Podstawowa konfiguracja

Aby Load Balancer uruchomić, wybierz kolejno OCI >> Sieci >> Load balancer. Wyświetlą się dodatkowe pola ze szczegółowymi ustawieniami. W pierwszej kolejności dodaj wcześniej stworzoną grupę maszyn wirtualnych. Następnie należy określić, jaka usługa ma być objęta Load balancerem (do wyboru min. HTTP, HTTPS, SMTP, Port) oraz zdecydować czy włączyć protokół SSL, jak też możliwą, wspólną persystencję HTTP i HTTPS.

# Algorytmy pracy

  • Least connection – kieruje ruch do maszyny z najmniejszą liczbą połączeń,
  • Least response time – kieruje ruch do maszyny o najkrótszym czasie odpowiedzi,
  • Source IP Hash – kieruje ruch z danego adresu IP stale do tej samej maszyny,
  • Round Robin - kieruje ruch do każdej maszyny po kolei, bez względu na obciążenie.

# Least response time

Łączy metodę Least connection (kierowanie ruchu do serwera z najmniejszą liczbą aktywnych połączeń) z czasem średniej odpowiedzi od serwerów. Ilość aktywnych połączeń jest mnożona przez średni czas odpowiedzi od serwera i tak otrzymany wynik porównywany jest z wynikami inny serwerów, ten z najmniejszym wynikiem staje się celem zapytania. Czas odpowiedzi mierzony jest w zależności od wybranej usługi, w przypadku usług http/https to czas między wysłaniem zapytania a pierwszym bajtem odpowiedzi (kodem 200 OK) zwracanym przez serwer.​

W przypadku włączonego monitoringu usług http/https, jeżeli serwer www nie odpowie w zdefiniowanym czasie jednym z kodów 200, 30* - zostanie oznaczony jako niedostępny i zapytania nie będą do niego trafiać mimo, że samo OCI może pozostawać uruchomione.

W kolejnym kroku zdefiniuj sposób obsługiwania sesji - persystencja po source IP, bądź jej brak.

Na końcu należy określić wersję protokołu – IPv4 lub IPv6 (bądź oba) i zdecydować, czy ma być przeprowadzane sprawdzenie dostępności usług. Aby Load balancer najpełniej spełniał swoje zadanie, sugerujemy włączenie tej opcji. W przypadku rozkładania ruchu HTTP, co 5 sekund wysyłane jest zapytanie HEAD do instancji umieszczonej w kontenerze. W przypadku braku odpowiedzi od serwera WWW, w ciągu 2 sekund jednym z kodów z zakresu 200, 301-303, 307, serwer taki oznaczany jest jako niedostępny i ruch przestaje być do niego kierowany. W przypadku włączonego monitoringu warto się upewnić, że opisane zapytanie zwróci kod odpowiedzi z podanego zakresu.

Po uruchomieniu, do usługi zostanie przypisany adres IP grupy (kontenera), do którego możesz podpiąć swoją domenę. W widoku wyświetlać się będzie również status usług (jeżeli zostało zaznaczone sprawdzanie dostępności) wraz z ilością żądań, odpowiedzi i połączeń, jak również ogólne informacje na temat danego Load balancera.

Adres IP Load Balancera, tak samo jak w przypadku maszyn wirtualnych, może zostać ustawiony jako stały. W tym celu przejdź do zakładki OCI, a następnie kliknij Adresy IP. Kliknij prawym przyciskiem na adres Load Balancera i wybierz "ustaw statyczny". Od teraz w przypadku usunięcia Load Balancera, adres IP zostanie zachowany i będzie mógł zostać wykorzystany w przyszłości, jednak będzie mógł zostać przypisany tylko do innego Load Balancera. Przypisanie do maszyny wirtualnej nie będzie możliwe.

# Obsługa sesji

  • Persystencja po source IP - klient jest jest rozpoznawany po adresie IP i wszystkie sesje z tego IP trafiają zawsze do tej samej maszyny końcowej,
  • Persystencja po cookie - klient jest rozpoznawany po head zawartym w pliku cookie i wszystkie sesje o tym samym znaczniku są kierowane do jednej maszyny końcowej niezależnie od IP użytkownika,
  • Brak persystencji - przydzielanie maszyny końcowej do sesji odbywa się na zasadzie czystej losowości.

# Wersja Proxy Protocol

Proxy Protocol jest protokołem internetowym używanym do bezpiecznego przenoszenia informacji o połączeniu ze źródła żądającego połączenia do miejsca docelowego. Do nagłówka żądania dodawany jest nagłówek z informacjami o połączeniu, takimi jak źródłowy adres IP, docelowy adres IP i numery portów. Nagłówek ten jest następnie wysyłany do instancji jako część żądania.

  • brak - Proxy Protocol nie będzie wykorzystywany,
  • v1 - ta wersja używa nagłówka czytelnego dla człowieka,
  • v2 - ta wersja używa nagłówka zapisanego w systemie binarnym.

# Uruchomienie Proxy Protocol

obsługę Proxy Protocol można włączyć przy tworzeniu lub edycji loadbalancera:


Szczegółowe informacje o wersjach Proxy Protocol jak i różnicach między nimi znajdziesz w dokumentacji: http://www.haproxy.org/download/1.8/doc/proxy-protocol.txt.

# Sprawdzenie dostępności usług

W przypadku rozkładania ruchu http, stosowane jest zapytanie 'HEAD /' wykonywane co 5 sekund. W przypadku braku odpowiedzi od serwera www w ciągu 2 sekund jednym z kodów z zakresu 200, 301-303, 307, serwer taki oznaczany jest jako niedostępny i ruch przestaje być do niego kierowany. W przypadku włączonego monitoringu musisz się upewnić, że opisane zapytanie zwróci kod odpowiedzi z podanego zakresu.

# Przekazywanie IP użytkownika

Informacja o źródłowym IP połączenia (Src IP) przekazywana jest w nagłówku "X-Forwarded-For". Nie będzie działać dla żądań HTTPs bowiem są one szyfrowane - w logach maszyny wirtualnej widoczny będzie IP LB.