Jak skonfigurować haproxy jako równowagę obciążenia dla Nginx na centroS 8

Jak skonfigurować haproxy jako równowagę obciążenia dla Nginx na centroS 8

Aby zapewnić maksymalną dostępność aplikacji internetowych, skalowalność i wysoką wydajność, teraz często jest wdrażanie technologii wprowadzania redundancji, takich jak klastrowanie serwerów i równoważenie obciążenia. Na przykład konfigurowanie klastra serwerów, które wszystkie uruchamiają te same aplikacje, a następnie wdrażanie przed nimi równoważenia obciążenia, aby rozprowadzić ruch.

Haproxy to otwarta, potężna, wysoka wydajność, niezawodna, bezpieczna i szeroko stosowana wysoka dostępność TCP/HTTP Balancer obciążenia, serwer proxy i terminator SSL/TLS zbudowany dla stron internetowych o bardzo wysokim ruchu. Działa niezawodnie dobrze Linux, Solaris, FreeBSD, OpenBSD a także systemy operacyjne AIX.

Ten przewodnik pokazuje, jak skonfigurować dedykowany równoważenie obciążenia o wysokiej dostępności Haproxy NA Centos 8 kontrolować ruch w klastrze Nginx serwery internetowe. Pokazuje także, jak skonfigurować SSL/TLS zakończenie w Haproxy.

Wymagania wstępne:

W sumie 4 serwery z instalacją minimal.

Konfiguracja środowiska testowego

----------- Konfiguracja serwera Haproxy ----------- HA serwer proxy - nazwa hosta: haproxy -server.Tecmint.Lan; IP: 10.42.0.247 Domena witryny testowej: www.Tecmint.Lan ----------- Konfiguracja serwerów WWW klienta ----------- Serwer WWW nr 1 - nazwa hosta: WebSrv1.Tecmint.Lan; IP: 10.42.0.200 serwer WWW #2 - nazwa hosta: WEBRV2.Tecmint.Lan; IP: 10.42.0.21 Serwer WWW #3 - nazwa hosta: WebSRv3.Tecmint.Lan; IP: 10.42.0.34 

Krok 1: Konfigurowanie serwera Nginx HTTP na maszynach klientów

1. Zaloguj się do wszystkich Centos 8 maszyny klientów i zainstaluj Nginx serwer WWW za pomocą menedżera pakietów DNF, jak pokazano.

# DNF instaluj nginx 

2. Następnie zacznij Nginx Usługa na razie włącz go automatycznie uruchamianie w rozruchu systemowym i potwierdzić, że jest uruchomiona, sprawdzając jego status, korzystając z poleceń SystemCTL (rób to na wszystkich maszynach klienckich).

# Systemctl start nginx # Systemctl Włącz Nginx # Systemctl Status Nginx 

3. Ponadto, jeśli usługa Firewalld działa na wszystkich maszynach klientów (które można sprawdzić, uruchamiając systemCTL Start Firewalld), musisz dodać Http I Https Usługi w konfiguracji zapory, aby umożliwić przechodzenie żądań z równoważenia obciążenia przez zaporę do Nginx serwery internetowe. Następnie ponownie załaduj Firewalld usługa w celu wprowadzenia nowych zmian (zrób to na wszystkich maszynach klientów).

# Firewall-CMD --Zone = public --permanent --add-service = http # firewall-cmd --zone = public --Permanent --add-service = https # firewalll-cmd--relad 

4. Następnie otwórz przeglądarkę internetową na lokalnych maszynach i sprawdź, czy Nginx Instalacja działa dobrze. Użyj adresu IP klienta do nawigacji, gdy zobaczysz Nginx Strona testowa oznacza, że ​​serwer WWW zainstalowany na komputerze klienckim działa poprawnie.

Testuj instalację Nginx na wszystkich maszynach klientów Centos 8

5. Następnie musimy utworzyć strony testowe na maszynach klienckich, których użyjemy później, aby przetestować Haproxy organizować coś.

----------- Serwer WWW nr 1 ----------- # cp/usr/share/nginx/html/indeks.html/usr/share/nginx/html/indeks.html.orig # echo "Pokazanie witryny z WebSrv1.Tecmint.lan ">/usr/share/nginx/html/indeks.html ----------- Serwer WWW #2 ----------- # cp/usr/share/nginx/html/indeks.html/usr/share/nginx/html/indeks.html.orig # echo "Pokazanie witryny z WebSrv2.Tecmint.lan ">/usr/share/nginx/html/indeks.html ----------- Serwer WWW #3 ----------- # cp/usr/share/nginx/html/indeks.html/usr/share/nginx/html/indeks.html.orig # echo "Pokazanie witryny z WebSrv3.Tecmint.lan ">/usr/share/nginx/html/indeks.html 

Krok 2: Instalowanie i konfigurowanie serwera Haproxy na CentOS 8

6. Teraz zainstaluj Haproxy pakiet na Haproxy serwer, uruchamiając następujące polecenie.

# DNF instaluj haproxy 

7. Następnie zacznij Haproxy Service, umożliwia automatyczne start w systemie i zweryfikował jego status.

# SystemCtl Start Haproxy # Systemctl Włącz Haproxy # Systemctl Status Haproxy 
Sprawdź status haproxy w Centos 8

8. Teraz skonfigurujemy haproxy za pomocą następującego pliku konfiguracyjnego.

# vi/etc/haproxy/haproxy.CFG 

Plik konfiguracyjny jest podzielony na cztery główne sekcje.

  • ustawienia ogólne - Ustawia parametry całego procesu.
  • domyślne - W niniejszej sekcji ustawia parametry domyślne dla wszystkich innych sekcji po jej deklaracji.
  • frontend - W tej sekcji opisano zestaw gniazd słuchowych akceptujących połączenia klientów.
  • Backend - W tej sekcji opisano zestaw serwerów, do których proxy połączy się z podłącznymi połączeniami.

Aby zrozumieć opcje poniżej ustawienia ogólne I domyślne, Przeczytaj dokumentację Haproxy (link podany na końcu artykułu). W tym przewodniku użyjemy domyślnych.

Konfigurowanie rejestrowania haproxy

9. Haproxy Kiedy po wdrożeniu odgrywa znaczącą rolę w infrastrukturze IT, w ten sposób konfiguracja rejestrowania jest podstawowym wymogiem; To pozwala uzyskać wgląd w każde połączenie z serwerami internetowymi Backend.

Parametr logów (podkreślone na poniższym zrzucie ekranu) deklaruje globalny Syslog serwer (taki jak RSYSLOG Domyślnie w Centos), który odbędzie komunikaty dziennika. Tutaj można zadeklarować więcej niż jeden serwer.

Domyślne punkty konfiguracji do Lokalny Gospodarz (127.0.0.1) I Local2 jest domyślnym kodem obiektu używanego do identyfikacji komunikatów dziennika haproxy w ramach Rsyslog.

Haproxy domyślny parametr dziennika

10. Następnie musisz powiedzieć Rsyslog serwer, jak odbierać i przetwarzać Haproxy Wiadomości dziennika. Otwórz plik konfiguracyjny RSysLog na /etc/rsyslog.conf lub utwórz nowy plik w ramach /etc/rsyslog.D na przykład katalog, na przykład /etc/rsyslog.D/Haproxy.conf.

# vi /etc /rsyslog.D/Haproxy.conf 

Skopiuj i wklej następującą konfigurację, aby zbierać dziennik UDP w domyślnym porcie 514.

$ Modload imudp $ UdpserverAddress 127.0.0.1 $ Udpserverrun 514 

Dodaj także te linie, aby poinstruować Rsyslog napisać do dwóch osobnych plików dziennika na podstawie nasilenia, gdzie Local2 to kod obiektu zdefiniowany w powyższej konfiguracji haproxy.

Local2.*/var/log/haproxy-ruch.Log Local2.zawiadomienie/var/log/haproxy-admin.dziennik 

11. Zapisz plik i zamknij go. Następnie uruchom ponownie Rsyslog usługa w celu zastosowania ostatnich zmian.

# Systemctl restart rsyslog 

Konfigurowanie haproxy front-end i zaplecze

12. W tej sekcji pokażemy, jak skonfigurować proxy Front-end i Back-end. Wróć do Haproxy plik konfiguracyjny i zmodyfikuj domyślne sekcje front-end i backend w następujący sposób. Nie przejdziemy do szczegółowego wyjaśnienia każdego parametru, zawsze możesz odnosić się do oficjalnej dokumentacji.

Poniższa konfiguracja określa Słuchać Sekcja używana do obsługi Statystyki Haproxy strona. wiązać Parametr przypisuje słuchacz do danego adresu IP (* dla wszystkich w tym przypadku) i Port (9000).

Statystyki włączać Ustawienie umożliwia stronę statystyki, do której można uzyskać dostęp za pomocą URI /statystyki (I.mi http: // server_ip: 9000/Stats).

Statystyki Auth Ustawienie służy do dodania podstawowego uwierzytelnienia podczas uzyskiwania dostępu do strony (wymień Haproxy I [chroniony e -mail] z wybraną nazwą użytkownika i hasłem).

Słuchaj statystyk Bind *: 9000 statystyk Włącz statystyki Ukryj statystyki URI /statystyki administratora If Localhost Stats Auth Haproxy: [e-mail chroniony] 

13. Następna konfiguracja określa sekcję frontendową o nazwie Tl (możesz podać nazwę swoich upodobań). tryb parametr definiuje tryb Haproxy działa w.

ACL (Lista kontroli dostępu) Parametr służy do podjęcia decyzji na podstawie treści wyodrębnionej z żądania. W tym przykładzie żądanie jest uważane za proste Http Jeśli to się nie skończyło SSL.

A później HTTP-Request Set-Header Ustawienie służy do dodania nagłówka HTTP do żądania. To pomaga poinformować Nginx że początkowe żądanie zostało złożone Http (lub przez port 80).

default_backend Lub użyj_backu Dyrektywa definiuje serwery zaplecza, w tym przypadku, do którego odwołuje się TL_WEB_SERVERS.

Zauważ, że Haproxy zwróci „503 Niedostępny błąd”Jeśli żądanie nie jest kierowane przez użyj_backu Lub default_backend dyrektywa.

frontend tl BIND *: 80 tryb http acl http ssl_fc, a nie http-request set-header x-forwarted-protocol http Jeśli http default_backend tl_web_servers 

14. Następnie musimy zdefiniować sekcję zaplecza, w którym balansować Ustawienie określa, jak Haproxy Wybiera serwery zaplecze do przetworzenia żądania, jeśli żadna metoda trwałości nie zastąpi tego wyboru.

ciastko Dyrektywa umożliwia oparte na plikach cookie trwałość, instruuje Haproxy wysłać ciasteczko nazwane ServerId do klienta i kojarzyć go z ID serwera, który udzielił początkowej odpowiedzi.

serwer Dyrektywa służy do zdefiniowania serwerów upstream w formacie Nazwa sectle_name (mi.G WebSrv1), server_ip: port I opcje.

Jedną z kluczowych opcji jest sprawdzać co mówi Haproxy Aby sprawdzić dostępność serwera i raport na stronie statystyk.

Backend TL_WEB_SERVERS.42.0.200: 80 WEBLE WEBSRV1 Sprawdź serwer WEBRV2 10.42.0.21:80 WEBLE Web.42.0.34:80 WEBIER WEBRV3 

Skomentuj wszelkie inne sekcje frontend i zaplecza, jak pokazano na wyniku zrzutu ekranu. Zapisz plik i zamknij go.

Konfigurowanie haproxy front-end i zaplecze

15. Teraz uruchom ponownie Haproxy Usługa w celu zastosowania nowych zmian.

# Systemctl restart haproxy 

16. Następnie upewnij się, że Http (Port 80) I Https (Port 433) Usługi są otwierane w zaporze, aby zaakceptować żądania klientów w następujący sposób. Również otwarty port 9000 W zaporze zapory w celu uzyskania dostępu do strony statystyki i ponownie załaduj ustawienia zapory.

# firewall-cmd --zone = public --Permanent --add-service = http # firewall-cmd --zone = public --Permanent -add-service = https # firewalll-cmd –zone = public --Permanent- -Add-Port = 9000/TCP # Firewall-CMD-RELOOD 

Krok 3: Testowanie konfiguracji Haproxy i przeglądania statystyk

17. Teraz nadszedł czas, aby przetestować Hapxoy organizować coś. Na lokalnym komputerze stacjonarnym, w którym uzyskujesz dostęp do wszystkich serwerów, dodaj następujący wiersz w /etc/hosts Plik, który umożliwia nam korzystanie z domeny witryny manekina.

10.42.0.247 www.Tecmint.Lan 

18. Następnie otwórz przeglądarkę i nawiguj za pomocą adresu serwera lub domeny witryny.

http: // 10.42.0.247/lub http: // www.Tecmint.Lan/ 
Sprawdź konfigurację Haproxy

19. Aby uzyskać dostęp do Haproxy Strona statystyczna, użyj następującego adresu.

http: // 10.42.0.247: 9000/statystyki 

Następnie użyj nazwy użytkownika i hasła zdefiniowanego w pliku konfiguracyjnym Haproxy (patrz parametr Auth STATS).

Strona logowania statystyk Haproxy

Po udanym logowaniu wylądujesz na Haproxy Strona statystyk, która pokazuje wskaźniki obejmujące zdrowie twoich serwerów, aktualne wskaźniki żądań, czasy reakcji i wiele więcej.

Aby pokazać, jak działa raport o stanie w sprawie kodów kolorów, umieściliśmy jeden z serwerów zaplecza.

Raport statystyki Haproxy

Krok 4: Konfigurowanie HTTPS w Haproxy za pomocą certyfikatu SSL z podpisem SSL

20. W tej ostatniej sekcji zademonstrujemy, jak skonfigurować SSL/TLS Aby zabezpieczyć całą komunikację między serwerem Haproxy a klientem. Haproxy obsługuje cztery główne Https Tryby konfiguracyjne, ale do tego przewodnika będziemy używać SSL/TLS odciążenie.

W SSL/TLS Tryb rozładunku, Haproxy rozszyfrowuje ruch po stronie klienta i łączy się w wyraźnym ruchu z serwerami zaplecza.

Zaczniemy od utworzenia certyfikat I klucz Jak pokazano (odpowiedz odpowiednio na pytania na podstawie szczegółów Twojej firmy podczas tworzenia certyfikatu, jak podkreślono na zrzucie ekranu).

# mkdir/etc/ssl/tecmint.LAN # cd/etc/ssl/tecmint.LAN/ # OpenSsl Req -x509 -nodes -Days 365 -Newkey RSA: 2048 -Keyout/etc/ssl/tecmint.Lan.klucz -ut/etc/ssl/tecmint.Lan.crt # cd/etc/ssl/tecmint.LAN/ # CAT TECMINT.CRT Tecmint.Klucz> Tecmint.pem # ls -l 
Utwórz SSL dla haproxy

21. Następnie otwórz Haproxy plik konfiguracyjny (/etc/haproxy/haproxy.CFG) i edytuj sekcję front-end.

Frontend TL BIND *: 80 BIND *: 443 SSL CRT/ETC/SSL/TECMINT.LAN/TECMINT.Schemat przekierowania PEM HTTPS IF !ssl_fc tryb http acl http ssl_fc, nie ACL https ssl_fc http-request set-header x-forward-protocol http, jeśli http http-request set-header x-forward-protocol https default_bacend tl_web_servers 
Skonfiguruj Haproxy Front-end z SSL

Zapisz plik i zamknij go.

22. Następnie uruchom ponownie usługę Haproxy, aby zastosować nowe zmiany.

# Systemctl restart haproxy.praca 

23. Następnie otwórz przeglądarkę internetową i spróbuj ponownie uzyskać dostęp do strony. Przeglądarka pokaże błąd z powodu samowystarczalnego certyfikatu, kliknij Zaawansowany kontynuować.

Haproxy SSL Błąd połączenia Kontynuuj połączenie Dostęp do witryny przez HTTPS

To wszystko na teraz! Każda aplikacja internetowa ma swój własny zestaw wymagań, musisz zaprojektować i skonfigurować równoważenie obciążenia, aby odpowiadać infrastrukturze IT i wymagania dotyczące aplikacji.

Aby uzyskać więcej informacji na temat niektórych opcji konfiguracji używanych w tym przewodniku i ogólnie sposobu korzystania Haproxy, Zobacz oficjalną dokumentację Haproxy Community Edition lub dokumentację wersji przedsiębiorstwa Haproxy. Możesz zamieścić wszelkie pytania lub przemyślenia za pośrednictwem poniższego formularza opinii.