Instalowanie modułu równoważenia obciążenia HAProxy na CentOS

Tłumaczenie artykułu zostało przygotowane w przeddzień rozpoczęcia kursu „Administrator Linuksa. Wirtualizacja i klastrowanie”

Instalowanie modułu równoważenia obciążenia HAProxy na CentOS

Równoważenie obciążenia to powszechne rozwiązanie w przypadku aplikacji internetowych skalowanych poziomo na wielu hostach, zapewniających użytkownikom pojedynczy punkt dostępu do usługi. HAPROXY to jedno z najpopularniejszych programów do równoważenia obciążenia typu open source, które zapewnia również wysoką dostępność i funkcjonalność proxy.

HAProxy stara się optymalizować wykorzystanie zasobów, maksymalizować przepustowość, minimalizować czas reakcji i unikać przeciążenia poszczególnych zasobów. Można go zainstalować na różnych dystrybucjach Linuksa, takich jak CentOS 8, na którym skupimy się w tym przewodniku, a także na systemach Debian 8 и Ubuntu 16.

Instalowanie modułu równoważenia obciążenia HAProxy na CentOS

HAProxy jest szczególnie odpowiedni dla stron internetowych o bardzo dużym ruchu i dlatego często jest używany do poprawy niezawodności i wydajności konfiguracji usług internetowych z wieloma serwerami. W tym przewodniku opisano kroki konfigurowania HAProxy jako modułu równoważenia obciążenia na hoście w chmurze CentOS 8, który następnie kieruje ruch do serwerów internetowych.

Warunkiem uzyskania najlepszych wyników jest posiadanie co najmniej dwóch serwerów internetowych i serwera równoważącego obciążenie. Na serwerach internetowych musi być uruchomiona przynajmniej podstawowa usługa internetowa, taka jak nginx lub httpd, aby przetestować równoważenie obciążenia między nimi.

Instalowanie HAProxy na CentOS 8

Ponieważ HAProxy jest szybko rozwijającą się aplikacją typu open source, dystrybucja dostępna w standardowych repozytoriach CentOS może nie być najnowszą wersją. Aby sprawdzić aktualną wersję, uruchom następujące polecenie:

sudo yum info haproxy

HAProxy zawsze udostępnia trzy stabilne wersje do wyboru: dwie najnowsze obsługiwane wersje i trzecią, starszą wersję, która wciąż otrzymuje krytyczne aktualizacje. Zawsze możesz sprawdzić najnowszą stabilną wersję wymienioną na stronie HAProxy, a następnie zdecydować, z którą wersją chcesz pracować.

W tym poradniku będziemy instalować najnowszą stabilną wersję 2.0, która w chwili pisania poradnika nie była jeszcze dostępna w standardowych repozytoriach. Będziesz musiał zainstalować go z oryginalnego źródła. Ale najpierw sprawdź, czy spełniłeś warunki niezbędne do pobrania i skompilowania programu.

sudo yum install gcc pcre-devel tar make -y

Pobierz kod źródłowy za pomocą poniższego polecenia. Możesz sprawdzić, czy jest dostępna nowsza wersja Strona pobierania HAProxy.

wget http://www.haproxy.org/download/2.0/src/haproxy-2.0.7.tar.gz -O ~/haproxy.tar.gz

Po zakończeniu pobierania wyodrębnij pliki za pomocą poniższego polecenia:

tar xzvf ~/haproxy.tar.gz -C ~/

Przejdź do rozpakowanego katalogu źródłowego:

cd ~/haproxy-2.0.7

Następnie skompiluj program dla swojego systemu:

make TARGET=linux-glibc

I na koniec zainstaluj sam HAProxy:

sudo make install

HAProxy jest teraz zainstalowany, ale wymaga pewnych dodatkowych manipulacji, aby działał. Kontynuujmy konfigurowanie oprogramowania i usług poniżej.

Konfigurowanie HAProxy dla Twojego serwera

Teraz dodaj następujące katalogi i plik statystyczny dla wpisów HAProxy:

sudo mkdir -p /etc/haproxy
sudo mkdir -p /var/lib/haproxy 
sudo touch /var/lib/haproxy/stats

Utwórz dowiązanie symboliczne do plików binarnych, aby móc uruchamiać polecenia HAProxy jako zwykły użytkownik:

sudo ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy

Jeśli chcesz dodać serwer proxy do swojego systemu jako usługę, skopiuj plik haproxy.init z przykładów do katalogu /etc/init.d. Edytuj uprawnienia do pliku, aby skrypt się uruchomił, a następnie zrestartuj demona systemd:

sudo cp ~/haproxy-2.0.7/examples/haproxy.init /etc/init.d/haproxy
sudo chmod 755 /etc/init.d/haproxy
sudo systemctl daemon-reload

Musisz także zezwolić usłudze na automatyczne ponowne uruchomienie po uruchomieniu systemu:

sudo chkconfig haproxy on

Dla wygody zaleca się również dodanie nowego użytkownika w celu uruchomienia HAProxy:

sudo useradd -r haproxy

Następnie możesz ponownie sprawdzić numer zainstalowanej wersji, używając następującego polecenia:

haproxy -v
HA-Proxy version 2.0.7 2019/09/27 - https://haproxy.org/

W naszym przypadku powinna to być wersja 2.0.7, jak pokazano w powyższym przykładzie.

Wreszcie domyślna zapora sieciowa w CentOS 8 jest dość restrykcyjna dla tego projektu. Użyj następujących poleceń, aby zezwolić na wymagane usługi i zresetować zaporę:

sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-port=8181/tcp
sudo firewall-cmd --reload

Konfiguracja modułu równoważenia obciążenia

Konfigurowanie HAProxy jest dość prostym procesem. Zasadniczo wszystko, co musisz zrobić, to powiedzieć HAProxy, jakich połączeń ma nasłuchiwać i gdzie powinien je przekazywać.

Odbywa się to poprzez utworzenie pliku konfiguracyjnego /etc/haproxy/haproxy.cfg z definiującymi ustawieniami. Możesz przeczytać o opcjach konfiguracyjnych HAProxy na stronie dokumentacjijeśli chcesz dowiedzieć się więcej na ten temat.

Równoważenie obciążenia w warstwie transportowej (warstwa 4)

Zacznijmy od podstawowej konfiguracji. Utwórz nowy plik konfiguracyjny, na przykład za pomocą vi za pomocą poniższego polecenia:

sudo vi /etc/haproxy/haproxy.cfg

Dodaj następujące sekcje do pliku. Zastępować server_name co powinno wywoływać Twoje serwery na stronie statystyk i prywatny_ip — prywatne adresy IP serwerów, na które chcesz kierować ruch sieciowy. Możesz sprawdzić prywatne adresy IP w panelu sterowania UpCloud i na karcie Prywatna sieć w menu Sieć.

global
   log /dev/log local0
   log /dev/log local1 notice
   chroot /var/lib/haproxy
   stats timeout 30s
   user haproxy
   group haproxy
   daemon

defaults
   log global
   mode http
   option httplog
   option dontlognull
   timeout connect 5000
   timeout client 50000
   timeout server 50000

frontend http_front
   bind *:80
   stats uri /haproxy?stats
   default_backend http_back

backend http_back
   balance roundrobin
   server server_name1 private_ip1:80 check
   server server_name2 private_ip2:80 check

Definiuje to moduł równoważenia obciążenia warstwy transportowej (warstwa 4) o nazwie http_front, nasłuchujący na porcie 80, który następnie przekazuje ruch do domyślnego backendu o nazwie http_back. Dodatkowe statystyki /haproxy?stats łączy stronę statystyk z podanym adresem.

Różne algorytmy równoważenia obciążenia.

Określenie serwerów w sekcji backendu umożliwia HAProxy użycie tych serwerów do równoważenia obciążenia zgodnie z algorytmem okrężnym, jeśli to możliwe.

Algorytmy równoważące służą do określenia, do którego serwera w zapleczu przekazywane jest każde połączenie. Oto kilka przydatnych opcji:

  • Roundrobin: Każdy serwer jest używany po kolei, zgodnie z jego wagą. Jest to najpłynniejszy i najuczciwszy algorytm, gdy czas przetwarzania serwerów jest równomiernie rozłożony. Algorytm ten jest dynamiczny, co pozwala na bieżąco dostosowywać wagę serwera.
  • Najmniejconn: wybrany zostanie serwer z najmniejszą liczbą połączeń. Praca okrężna jest wykonywana pomiędzy serwerami o tym samym obciążeniu. Używanie tego algorytmu jest zalecane w przypadku długich sesji, takich jak LDAP, SQL, TSE itp., ale nie jest zbyt odpowiednie w przypadku krótkich sesji, takich jak HTTP.
  • Pierwszy: Pierwszy serwer z dostępnymi slotami połączeń odbiera połączenie. Serwery są wybierane od najniższego identyfikatora numerycznego do najwyższego, co domyślnie oznacza pozycję serwera w farmie. Gdy serwer osiągnie maxconn, używany jest następny serwer.
  • Źródło: Źródłowy adres IP jest szyfrowany i dzielony przez całkowitą wagę działających serwerów, aby określić, który serwer otrzyma żądanie. W ten sposób ten sam adres IP klienta będzie zawsze trafiał do tego samego serwera, podczas gdy serwery pozostaną takie same.

Konfigurowanie równoważenia obciążenia na poziomie aplikacji (warstwa 7)

Inną dostępną opcją jest skonfigurowanie modułu równoważenia obciążenia do działania w warstwie aplikacji (warstwa 7), co jest przydatne, gdy części aplikacji internetowej znajdują się na różnych hostach. Można to osiągnąć ograniczając transmisję połączenia, na przykład po adresie URL.

Otwórz plik konfiguracyjny HAProxy za pomocą edytora tekstu:

sudo vi /etc/haproxy/haproxy.cfg

Następnie skonfiguruj segmenty frontend i backend zgodnie z poniższym przykładem:

frontend http_front
   bind *:80
   stats uri /haproxy?stats
   acl url_blog path_beg /blog
   use_backend blog_back if url_blog
   default_backend http_back

backend http_back
   balance roundrobin
   server server_name1 private_ip1:80 check
   server server_name2 private_ip2:80 check

backend blog_back
   server server_name3 private_ip3:80 check

Frontend deklaruje regułę ACL o nazwie url_blog, która ma zastosowanie do wszystkich połączeń ze ścieżkami zaczynającymi się od /blog. Use_backend określa, że ​​połączenia spełniające warunek url_blog powinny być obsługiwane przez backend o nazwie blog_back, a wszystkie pozostałe żądania są obsługiwane przez backend domyślny.

Po stronie backendu konfiguracja tworzy dwie grupy serwerów: http_back, jak poprzednio, oraz nową o nazwie blog_back, która obsługuje połączenia z example.com/blog.

Po zmianie ustawień zapisz plik i zrestartuj HAProxy za pomocą następującego polecenia:

sudo systemctl restart haproxy

Jeśli podczas uruchamiania pojawią się jakiekolwiek ostrzeżenia lub komunikaty o błędach, sprawdź ich konfigurację i upewnij się, że utworzyłeś wszystkie niezbędne pliki i foldery, a następnie spróbuj uruchomić ponownie.

Testowanie konfiguracji

Po skonfigurowaniu i uruchomieniu HAProxy otwórz w przeglądarce publiczny adres IP serwera modułu równoważenia obciążenia i sprawdź, czy masz prawidłowe połączenie z backendem. Parametr stats uri w konfiguracji tworzy stronę statystyk pod określonym adresem.

http://load_balancer_public_ip/haproxy?stats

Jeśli po załadowaniu strony statystyk wszystkie serwery pokażą się na zielono, oznacza to, że konfiguracja przebiegła pomyślnie!

Instalowanie modułu równoważenia obciążenia HAProxy na CentOS

Strona statystyk zawiera przydatne informacje umożliwiające śledzenie hostów internetowych, w tym czas działania i liczbę sesji. Jeśli serwer jest zaznaczony na czerwono, upewnij się, że jest włączony i że możesz na niego pingować z komputera równoważącego obciążenie.

Jeśli moduł równoważenia obciążenia nie odpowiada, upewnij się, że połączenia HTTP nie są blokowane przez zaporę sieciową. Upewnij się także, że HAProxy działa, używając poniższego polecenia:

sudo systemctl status haproxy

Zabezpieczenie strony statystyk hasłem

Jeśli jednak strona ze statystykami jest po prostu wymieniona w interfejsie użytkownika, jest ona dostępna dla wszystkich, co może nie być dobrym pomysłem. Zamiast tego możesz przypisać mu niestandardowy numer portu, dodając poniższy przykład na końcu pliku haproxy.cfg. Zastępować nazwa użytkownika и password na coś bezpiecznego:

listen stats
   bind *:8181
   stats enable
   stats uri /
   stats realm Haproxy Statistics
   stats auth username:password

Po dodaniu nowej grupy słuchaczy usuń stary link uri statystyk z grupy frontonu. Po zakończeniu zapisz plik i uruchom ponownie HAProxy.

sudo systemctl restart haproxy

Następnie otwórz ponownie moduł równoważenia obciążenia, podając nowy numer portu i zaloguj się przy użyciu nazwy użytkownika i hasła podanego w pliku konfiguracyjnym.

http://load_balancer_public_ip:8181

Upewnij się, że wszystkie Twoje serwery nadal wyświetlają się na zielono, a następnie otwórz tylko adres IP modułu równoważenia obciążenia, bez numerów portów w przeglądarce.

http://load_balancer_public_ip/

Jeśli masz przynajmniej kilka różnych stron docelowych na swoich serwerach zaplecza, zauważysz, że za każdym razem, gdy ponownie ładujesz stronę, otrzymujesz odpowiedź od innego hosta. Możesz wypróbować różne algorytmy równoważenia w sekcji konfiguracji lub sprawdzić Pełna dokumentacja.

Wniosek: moduł równoważenia obciążenia HAProxy

Gratulujemy pomyślnej konfiguracji modułu równoważenia obciążenia HAProxy! Nawet przy podstawowej konfiguracji równoważenia obciążenia można znacznie poprawić wydajność i dostępność aplikacji internetowej. Ten przewodnik jest jedynie wprowadzeniem do równoważenia obciążenia za pomocą HAProxy, które oferuje znacznie więcej niż to, co można opisać w przewodniku szybkiej konfiguracji. Zalecamy eksperymentowanie z różnymi konfiguracjami za pomocą obszerną dokumentację, dostępne dla HAProxy, a następnie rozpocznij planowanie równoważenia obciążenia dla swojego środowiska produkcyjnego.

Używając wielu hostów do ochrony usługi internetowej z rezerwą, sam moduł równoważenia obciążenia może nadal stanowić punkt awarii. Możesz jeszcze bardziej poprawić wysoką dostępność, instalując zmienny adres IP między wieloma modułami równoważenia obciążenia. Więcej na ten temat znajdziesz w naszym artykuł o pływających adresach IP w UpCloud.

Więcej o kursie „Administrator Linuksa. Wirtualizacja i klastrowanie”***

Źródło: www.habr.com

Dodaj komentarz