Równoważenie obciążenia HAProxy między serwerami sieciowymi Nginx

W tym artykule pokażemy ustawienia harmonogramu. HAProxy dla dwóch serwerów z zainstalowanym serwerem internetowym Nginx (można zastąpić Apache). We wszystkich przypadkach CentOS jest używany jako system operacyjny.

HAProxy - oprogramowanie serwerowe zapewniające wysoką dostępność i równoważenie obciążenia dla aplikacji TCP i HTTP poprzez dystrybucję przychodzących żądań do kilku serwerów. HAProxy jest używany w wielu popularnych zasobach, w tym Twitter, Instagram, Github, Avito, Amazonka i inni.

HAProxy jest zainstalowany na osobnym serwerze, który przyjmuje żądania klientów i przekierowuje je na serwery sieciowe Nginx. Ogólna architektura systemu została przedstawiona poniżej..

Treść

  • Konfigurowanie Nginx na serwerach zaplecza
  • Konfiguracja modułu równoważenia obciążenia HAProxy
  • Opcje pliku konfiguracyjnego Haproxy.cfg
  • Zbiór statystyk HAProxy

Konfigurowanie Nginx na serwerach zaplecza

Zacznijmy od instalacji i konfiguracji Nginx na naszych serwerach internetowych, pomiędzy którymi obciążenie będzie zrównoważone. Zainstaluj repozytorium EPEL i sam nginx, używając yum:

#yum zainstaluj epel-release -y
#yum zainstaluj nginx -y

Przeprowadziłem instalację na dwóch serwerach jednocześnie, ponieważ serwery są skonfigurowane jeden do jednego (do równoległego wykonywania poleceń na kilku serwerach możesz użyć pdsh).

Dalej w plikach konfiguracyjnych nginx.conf Zwracamy uwagę, że serwery powinny przetwarzać tylko żądania z serwera HaProxy i serwerów zaplecza:

1. serwer zaplecza:

serwer listen current_server_IP: 80 default_server; zezwól na IP_server_backend_server; zezwól na IP_haproxy; zaprzeczcie wszystkim; nazwa_serwera _; root / usr / share / nginx / html; # Załaduj pliki konfiguracyjne dla domyślnego bloku serwera. obejmują /etc/nginx/default.d/*.conf; lokalizacja /  

Drugi serwer zaplecza:

serwer listen current_server_IP: 80 default_server; zezwól na IP_first_backend_server; zezwól na IP_haproxy; zaprzeczcie wszystkim; nazwa_serwera _; root / usr / share / nginx / html; # Załaduj pliki konfiguracyjne dla domyślnego bloku serwera. obejmują /etc/nginx/default.d/*.conf; lokalizacja /  

Konfiguracja nginx jest standardowa, do której właśnie dodaliśmy słuchaj adresu IP serwery i zamknięty dostęp dla wszystkich oprócz naszych serwerów korzystających z dyrektyw pozwolić i zaprzeczać.

Aby serwer WWW działał, musisz otwierać połączenia w zaporze za pomocą firewalld lub iptables:

# firewall-cmd --permanent -add-service = http
# firewall-cmd -reload

Wykonaj test testowy na dowolnym serwerze zaplecza:

[root @ server ~] # curl Second_Server_IP

 tutaj powinieneś dostać dokument HTML 

Serwer podał standardowy plik indeksu nginx, co oznacza, że ​​serwery współdziałają ze sobą.

Dla wygody weryfikacji zmieniłem zawartość pliku indeksu na każdym serwerze zaplecza, aby podczas testów wyraźnie zobaczyć w przeglądarce, który serwer przetworzył żądanie.

Plik indeksu nginx znajduje się w / usr / share / nginx / html /.

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

Zacznijmy instalować i konfigurować HAProxy na serwerze, który będzie używany jako moduł równoważenia obciążenia.

Zainstaluj HaProxy i wykonaj podstawowe ustawienia balansera.

#yum zainstaluj epel-release -y

#yum zainstaluj haproxy -y

Załadowane wtyczki: najszybszy błąd Ładowanie prędkości lustra z buforowanego pliku hosta epel / x86_64 / metalink ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Uruchomiony transakcja Instalacja: haproxy-1.5.18-9.el7.x86_64 1/1 Weryfikacja: haproxy-1.5.18-9.el7.x86_64 1/1 Zainstalowano: haproxy.x86_64 0: 1.5.18-9.el7 Zakończone! 

Aby włączyć HaProxy, musisz dodać Włączone = 1 złożyć / etc / default / haproxy:

#nano / etc / default / haproxy

Teraz przejdźmy do samej konfiguracji HaProxy. W naszej najprostszej konfiguracji serwer równoważący przetwarza wszystkie żądania HTTP i przesyła je kolejno do serwerów zaplecza.

#nano /etc/haproxy/haproxy.cfg

log / dev / log local0 chroot / var / lib / haproxy pidfile /var/run/haproxy.pid maxconn 4000 użytkowników haproxy grupa haproxy demon domyślny tryb http log opcja globalna httplog opcja ponowne wysłanie ponawia próbę 3 limit czasu żądanie HTTP 10s kolejka limit czasu 1m limit połączenia 10-sekundowy limit czasu klienta 1-minutowy limit czasu serwera 1-minutowy limit czasu http-keep-alive 10-sekundowy limit czasu sprawdzania 10s maxconn 3000 frontend www równoważnik powiązań IP: 80 default_backend nginx_pool backend nginx_pool saldo roundrobin tryb http serwer web1 first_backend_server IP: 80 sprawdź serwer web2 80 second_backend_serwer: 

Po zapisaniu konfiguracji sprawdź składnię za pomocą polecenia:

#haproxy -f /etc/haproxy/haproxy.cfg -c

Jeśli wszystko jest w porządku, otrzymasz podobny wynik:

Plik konfiguracyjny jest prawidłowy

Następnie musisz zrestartować HaProxy i dodać jego uruchomienie CentOS. A także otwórz niezbędne reguły zapory.

#systemctl uruchom ponownie haproxy

#systemctl włącz haproxy

# firewall-cmd -permanent -add-service = http

# firewall-cmd -reload

To kończy konfigurację balansera, sprawdź wynik, otwierając serwer IP z HaProxy w przeglądarce:

Jak widać, oba serwery dostarczały treść z kolei, moduł równoważenia działa.

Opcje pliku konfiguracyjnego Haproxy.cfg

Rozważ główne przykłady algorytmów działania HaProxy:

  • roundrobin - domyślny algorytm z kolei wysyła żądania do serwerów. W naszym przykładzie zastosowaliśmy właśnie taką metodę;
  • najmniej - wybiera serwer z najmniejszą liczbą aktywnych połączeń. Zaleca się stosowanie do projektów, w których sesje mogą być angażowane przez długi czas;
  • źródło - wybiera serwer na podstawie skrótu zbudowanego na podstawie użytkowników IP. W tym trybie pracy ten sam klient będzie zawsze uzyskiwał dostęp do tego samego serwera, jeśli jego adres IP pozostanie niezmieniony;

Przejrzyjmy niektóre parametry w pliku konfiguracyjnym.

Blokuj globalny:

  • log - zachowaj log / dev / log saving local0 do „object”;
  • chroot - ustawienia bezpieczeństwa blokujące HAProxy w określonym katalogu;
  • maxconn - maksymalna liczba konkurujących połączeń na proces;
  • użytkownik - użytkownik, w imieniu którego program zostanie uruchomiony;
  • grupa - grupa użytkowników, w imieniu której program zostanie uruchomiony;
  • daemon - uruchom proces jako demon.

Blokuj domyślne. W tej sekcji opisano ustawienia domyślne dla wszystkich pozostałych sekcji po nim:

  • log - wskazuje, który dziennik należy zapisać (w tym przypadku globalny oznacza, że ​​używane są parametry określone w sekcji globalnej);
  • tryb - ustawia protokół interakcji, przyjmuje jedną z wartości: tcp, http lub health;
  • ponawia - liczba prób połączenia się z serwerem w przypadku awarii;
  • opcja httplog - format dziennika, w przypadku korzystania z HAProxy do pośredniczenia żądań HTTP;
  • opcja redispatch - Pozwala programowi zakończyć i ponownie przypisać sesję w przypadku awarii serwera;
  • contimeout - maksymalny czas oczekiwania na udane połączenie z serwerem.

Istnieje również duża liczba parametrów związanych z różnymi limitami czasu.

Zbiór statystyk HAProxy

Dodaj blok statystyk do pliku konfiguracyjnego:

nasłuchiwanie statystyki powiązanie: 10001 statystyki włącz statystyki uri / haproxy_stats stats auth admin: admin 

Opis:

  • wiązać - port, na którym będą działać statystyki wyświetlania;
  • statystyki włączyć - zawierać raporty ze statystykami;
  • statystyki uri - ustawienie adresu strony statystyk;
  • statystyki auth - login i hasło.
Możesz określić dowolny dogodny dla Ciebie port, jeśli określony w tym artykule jest zajęty lub nieodpowiedni dla Ciebie.

Ponadto, aby nasze haproxy_stats działało, musisz otworzyć wcześniej określony port w zaporze:

firewall-cmd --permanent -add-port = 10001 / tcp

firewall-cmd -reload

Aby zobaczyć raporty z pracy HAProxy, musisz kliknąć link:

http: // nazwa_hosta_haproxy: 10001 / haproxy_stats

Otwórz adres modułu równoważącego w przeglądarce i zacznij spamować F5. Statystyki określonych linków się zmieniają, narzędzie działa.

To kończy naszą konfigurację. W artykule przeanalizowaliśmy podstawową konfigurację HaProxy. W naszym projekcie serwer równoważenia obciążenia HaProxy staje się pojedynczym punktem awarii. Aby zwiększyć tolerancję na błędy konfiguracji, możesz dodać drugi serwer HaProxy i sprawdzić dostępność między serwerami za pomocą Keepalived. Dostajesz coś takiego.

Istnieje wiele innych opcji korzystania z modułu HAProxy i zawsze można w nim znaleźć aplikację..