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.
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ę..