GNU/Linux >> Znalost Linux >  >> Cent OS

Jak nastavit HAProxy jako Load Balancer pro Nginx na CentOS 8

Pro zajištění maximální dostupnosti webových aplikací, škálovatelnosti a vysokého výkonu je nyní běžné implementovat technologie, které zavádějí redundanci, jako je klastrování serverů a vyrovnávání zátěže. Například nastavením clusteru serverů, na kterých všechny běží stejné aplikace, a následným nasazením vyvažovačů zátěže před ně za účelem distribuce provozu.

HAProxy je open source, výkonný, vysoce výkonný, spolehlivý, bezpečný a široce používaný TCP/HTTP s vysokou dostupností load balancer, proxy server a SSL/TLS terminátor vytvořený pro weby s velmi vysokou návštěvností. Na Linuxu běží spolehlivě dobře , Solaris , FreeBSD , OpenBSD stejně jako operační systémy AIX.

Tato příručka ukazuje, jak nastavit vyhrazený nástroj pro vyrovnávání zatížení s vysokou dostupností pomocí HAProxy na CentOS 8 k řízení provozu v clusteru NGINX webové servery. Také ukazuje, jak nakonfigurovat SSL/TLS ukončení v HAProxy .

Předpoklady:

Celkem 4 servery s minimální instalací CentOS 8.

Nastavení testovacího prostředí

----------- Nastavení serveru HAProxy ----------- HA Proxy Server – název hostitele:haproxy-server.tecmint.lan; IP:10.42.0.247 Doména testovacího webu:www.tecmint.lan----------- Nastavení klientských webových serverů ----------- Webový server č. 1 – název hostitele:websrv1.tecmint.lan; IP:10.42.0.200Webový server #2 – název hostitele:websrv2.tecmint.lan; IP:10.42.0.21Webový server #3 – název hostitele:websrv3.tecmint.lan; IP:10.42.0.34

Krok 1:Nastavení Nginx HTTP serveru na klientských počítačích

1. Přihlaste se do všech svých CentOS 8 klientské počítače a nainstalujte Nginx webový server pomocí správce balíčků dnf, jak je znázorněno.

# dnf nainstalovat Nginx

2. Dále spusťte Nginx prozatím povolte, aby se automaticky spouštěla ​​při spouštění systému a ověřte, že je v provozu, kontrolou stavu pomocí příkazů systemctl (proveďte to na všech klientských počítačích).

# systemctl start nginx# systemctl enable nginx# systemctl status nginx

3. Pokud je služba firewalld spuštěna na všech klientských počítačích (což můžete zkontrolovat spuštěním systemctl start firewalld), musíte přidat HTTP a HTTPS služby v konfiguraci brány firewall, aby požadavky z nástroje pro vyrovnávání zatížení procházely přes bránu firewall do Nginx webové servery. Poté znovu načtěte firewall služby pro provedení nových změn (proveďte to na všech klientských počítačích).

# firewall-cmd --zone=public --permanent --add-service=http# firewall-cmd --zone=public --permanent --add-service=https# firewall-cmd --reload 

4. Dále otevřete webový prohlížeč na místních počítačích a otestujte, zda je Nginx instalace funguje dobře. Jakmile uvidíte Nginx, použijte k navigaci adresy IP klienta testovací stránku, znamená to, že webový server nainstalovaný na klientském počítači funguje správně.

Otestujte instalaci Nginx na všech klientských počítačích CentOS 8

5. Dále musíme na klientských počítačích vytvořit testovací stránky, které později použijeme k testování HAProxy nastavení.

----------- Webový server č. 1 ----------- # cp /usr/share/nginx/html/index.html /usr/share/nginx/html/index.html.orig# echo "Zobrazuji stránky z websrv1.tecmint.lan"> /usr/share/nginx/html/ index.html----------- Webový server č. 2 ----------- # cp /usr/share/nginx/html/index.html /usr/share/nginx/html/index.html.orig# echo "Zobrazuji stránky z websrv2.tecmint.lan"> /usr/share/nginx/html/ index.html----------- Webový server č. 3 ----------- # cp /usr/share/nginx/html/index.html /usr/share/nginx/html/index.html.orig# echo "Zobrazuji stránky z websrv3.tecmint.lan"> /usr/share/nginx/html/ index.html

Krok 2:Instalace a konfigurace serveru HAProxy na CentOS 8

6. Nyní nainstalujte HAProxy balíček na HAProxy serveru spuštěním následujícího příkazu.

# dnf nainstalovat haproxy

7. Dále spusťte HAProxy službu, povolte její automatické spouštění při spouštění systému a ověřte její stav.

# systemctl spustit haproxy# systemctl povolit haproxy# systemctl stav haproxy

Ověřte stav HAProxy v CentOS 8

8. Nyní nakonfigurujeme HAProxy pomocí následujícího konfiguračního souboru.

# vi /etc/haproxy/haproxy.cfg

Konfigurační soubor je rozdělen do čtyř hlavních částí.

  • globální nastavení – nastavuje parametry celého procesu.
  • výchozí – tato sekce nastavuje výchozí parametry pro všechny ostatní sekce po její deklaraci.
  • frontend – tato část popisuje sadu naslouchacích soketů přijímajících klientská připojení.
  • Backend – tato část popisuje sadu serverů, ke kterým se proxy připojí k předávání příchozích spojení.

Chcete-li porozumět možnostem v části globální nastavení a výchozí , přečtěte si dokumentaci HAProxy (odkaz na konci článku). V této příručce použijeme výchozí hodnoty.

Nastavení protokolování HAProxy

9. HAProxy po nasazení bude hrát významnou roli ve vaší IT infrastruktuře, takže konfigurace protokolování je základním požadavkem; to vám umožní získat přehled o každém připojení k vašim backendovým webovým serverům.

Parametr protokolu (zvýrazněno na následujícím snímku obrazovky) deklaruje globální Syslog server (jako je rsyslog výchozí v CentOS), který bude přijímat zprávy protokolu. Zde lze deklarovat více než jeden server.

Výchozí konfigurace ukazuje na localhost (127.0.0.1 ) a místní2 je výchozí kód zařízení používaný k identifikaci zpráv protokolu HAProxy pod rsyslog .

Výchozí parametr protokolu HAProxy

10. Dále musíte sdělit rsyslog server, jak přijímat a zpracovávat HAProxy protokolovat zprávy. Otevřete konfigurační soubor rsyslog na /etc/rsyslog.conf nebo vytvořte nový soubor v /etc/rsyslog.d adresář, například /etc/rsyslog.d/haproxy.conf .

# vi /etc/rsyslog.d/haproxy.conf

Zkopírujte a vložte následující konfiguraci pro sběr protokolu pomocí UDP na výchozím portu 514 .

$ModLoad imudp $UDPServerAddress 127.0.0.1 $UDPServerRun 514 

Přidejte také tyto řádky pro pokyn rsyslog pro zápis do dvou samostatných souborů protokolu na základě závažnosti, kde místní2 je kód zařízení definovaný v konfiguraci HAProxy výše.

local2.* /var/log/haproxy-traffic.log local2.notice /var/log/haproxy-admin.log

11. Uložte soubor a zavřete jej. Poté restartujte rsyslog pro použití posledních změn.

# systemctl restart rsyslog

Konfigurace HAProxy front-end a back-endů

12. V této části si ukážeme, jak nakonfigurovat front-end a back-end proxy. Vraťte se do HAProxy konfiguračního souboru a upravte výchozí sekce front-end a backend následovně. Nebudeme se pouštět do podrobného vysvětlování každého parametru, vždy se můžete podívat na oficiální dokumentaci.

Následující konfigurace definuje poslech sekce sloužící k poskytování HAProxy Stats strana. Vazba parametr přiřadí posluchače k ​​dané IP adrese (* pro všechny v tomto případě) a port (9 000 ).

Statistiky povolí nastavení povoluje stránku statistik, která bude přístupná pomocí URI /stats (tj. http://server_ip:9000/stats ).

Statistiky autorizují nastavení se používá k přidání základního ověření při přístupu na stránku (nahraďte haproxy a [e-mail chráněn] s uživatelským jménem a heslem dle vašeho výběru).

poslouchat statistiky bind *:9000 statistiky povolit statistiky skrýt-verze statistiky uri /stats stats admin if LOCALHOST stats auth haproxy:[email protected]

13. Další konfigurace definuje frontendovou sekci nazvanou TL (můžete si pojmenovat dle libosti). režim Parametr definuje režim, ve kterém HAProxy pracuje.

acl Parametr (Access Control List) se používá k rozhodování na základě obsahu extrahovaného z požadavku. V tomto příkladu je požadavek považován za prostý HTTP pokud není vytvořen přes SSL .

Poté záhlaví souboru požadavku http nastavení se používá k přidání HTTP hlavičky k požadavku. To pomáhá informovat Nginx že původní požadavek byl podán přes HTTP (nebo přes port 80 ).

default_backend nebo use_backend direktiva definuje backend servery, v tomto případě odkazované TL_web_servers .

Všimněte si, že HAProxy vrátí „Chyba 503 Služba není k dispozici ” pokud požadavek není směrován pomocí use_backend nebo default_backend směrnice.

frontend TL bind *:80 režim http acl http ssl_fc, nikoli http-request set-header X-Forwarded-Protocol http, pokud http default_backend TL_web_servers

14. Poté musíme definovat backendovou sekci, kde je zůstatek nastavení definuje, jak HAProxy vybere servery typu back-end pro zpracování požadavku, pokud žádná metoda trvalého nastavení nepřepíše tento výběr.

cookie direktiva umožňuje založené na souborech cookie persistence, dává pokyn HAProxy k odeslání souboru cookie s názvem SERVERID ke klientovi a přiřadit jej k ID serveru, který poskytl počáteční odpověď.

server direktiva se používá k definování nadřazených serverů ve formátu název_severu (např. websrv1 ), IP_serveru:port a možnosti .

Jednou z klíčových možností je kontrola který říká HAProxy průběžně kontrolovat dostupnost serveru a podávat zprávy na stránce statistik.

backend TL_web_servers režim http zůstatek kolorobin volba httpchk HEAD / cookie SERVERUID vložit nepřímé nocache server websrv1 10.42.0.200:80 cookie websrv1 zkontrolovat server websrv2 10.42.0.21:80 cookie websrv2 zkontrolovat server websrv3 0.0..0 před> 

Zakomentujte všechny ostatní části frontendu a backendu, jak je znázorněno na následujícím snímku obrazovky. Uložte soubor a zavřete jej.

Konfigurace front-endu a back-endů HAProxy

15. Nyní restartujte HAProxy službu použít nové změny.

# systemctl restart hapoxy

16. Dále se ujistěte, že HTTP (port 80 ) a HTTPS (port 433 ) služby se otevírají ve firewallu pro přijímání požadavků klientů následovně. Otevřete také port 9000 ve firewallu pro přístup na stránku statistik a znovu načtěte nastavení firewallu.

# firewall-cmd --zone=public --permanent --add-service=http# firewall-cmd --zone=public --permanent –add-service=https# firewall-cmd --zone=public - -permanent --add-port=9000/tcp# firewall-cmd --reload

Krok 3:Testování nastavení HAProxy a zobrazení statistik

17. Nyní je čas otestovat HAPrxoy založit. Na místním stolním počítači, ze kterého přistupujete ke všem serverům, přidejte následující řádek do /etc/hosts soubor, který nám umožní používat fiktivní doménu webu.

10.42.0.247 www.tecmint.lan

18. Poté otevřete prohlížeč a přejděte pomocí adresy serveru nebo domény webu.

http://10.42.0.247/ORhttp://www.tecmint.lan/

Zkontrolujte nastavení HAProxy

19. Pro přístup k HAProxy statistiky, použijte následující adresu.

http://10.42.0.247:9000/stats

Poté použijte uživatelské jméno a heslo, které jste definovali v konfiguračním souboru HAProxy (viz parametr stats auth).

Přihlašovací stránka statistik HAProxy

Po úspěšném přihlášení se dostanete na HAProxy stránku statistik, která zobrazuje metriky, které pokrývají stav vašich serverů, aktuální četnost požadavků, doby odezvy a mnoho dalšího.

Abychom demonstrovali, jak funguje stavová zpráva týkající se barevných kódů, umístili jsme jeden z back-endových serverů.

Statistika HAProxy

Krok 4:Konfigurace HTTPS v HAProxy pomocí certifikátu SSL s vlastním podpisem

20. V této poslední části si ukážeme, jak nakonfigurovat SSL/TLS k zabezpečení veškeré komunikace mezi serverem HAProxy a klientem. HAProxy podporuje čtyři hlavní HTTPS konfigurační režimy, ale pro tuto příručku použijeme SSL/TLS vykládka.

V SSL/TLS režim vykládky, HAProxy dešifruje provoz na straně klienta a připojí se v čistém provozu k backendovým serverům.

Začneme vytvořením certifikátu a klíč jak je uvedeno (odpovězte na otázky podle podrobností vaší společnosti během vytváření certifikátu, jak je zvýrazněno na snímku obrazovky).

# mkdir /etc/ssl/tecmint.lan# cd /etc/ssl/tecmint.lan/# openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/tecmint.lan. klíč -out /etc/ssl/tecmint.lan.crt# cd /etc/ssl/tecmint.lan/# cat tecmint.crt tecmint.key>tecmint.pem# ls -l

Vytvořte SSL pro HAProxy

21. Dále otevřete HAProxy konfigurační soubor (/etc/haproxy/haproxy.cfg ) a upravte sekci front-end.

frontend TL bind *:80 bind *:443 ssl crt /etc/ssl/tecmint.lan/tecmint.pem schéma přesměrování https if !{ ssl_fc } režim http acl http ssl_fc, ne acl https ssl_fc http-request set- hlavička X-Forwarded-Protocol http if http http-request set-header X-Forwarded-Protocol https if https default_backend TL_web_servers

Nakonfigurujte HAProxy front-end s SSL

Uložte soubor a zavřete jej.

22. Poté restartujte službu HAProxy, abyste použili nové změny.

# systemctl restart haproxy.service

23. Dále otevřete webový prohlížeč a zkuste web otevřít ještě jednou. V prohlížeči se zobrazí chyba kvůli certifikátu s vlastním podpisem, klikněte na Upřesnit pokračovat.

Chyba připojení HAProxy SSL

Pokračujte připojením

Přístup k webu přes HTTPS

To je prozatím vše! Každá webová aplikace má svůj vlastní soubor požadavků, musíte navrhnout a nakonfigurovat vyvažování zátěže tak, aby vyhovovalo vaší IT infrastruktuře a požadavkům aplikace.

Chcete-li získat více informací o některých možnostech konfigurace použitých v této příručce a obecně o tom, jak používat HAProxy naleznete v oficiální dokumentaci k edici komunity HAProxy nebo dokumentaci k podnikové verzi HAProxy. Prostřednictvím formuláře pro zpětnou vazbu níže můžete zveřejnit jakékoli dotazy nebo myšlenky.

Sharing is Caring…
Sdílet na FacebookuSdílet na TwitteruSdílet na LinkedinSdílet na Redditu
Cent OS
  1. Jak nastavit SFTP server na CentOS

  2. Jak nastavit SysLog Server na CentOS 7 / RHEL 7

  3. Jak nastavit VNC Server pro nového uživatele v CentOS/RHEL 5

  1. Jak nastavit server NFS na CentOS 7 / RHEL 7

  2. Jak nakonfigurovat HAProxy load balancer

  3. Jak nastavit replikaci MySQL na CentOS

  1. Jak nainstalovat Nginx na CentOS 8

  2. Jak nastavit server NFS na CentOS 8 / RHEL 8

  3. Jak nastavit HAProxy jako Load Balancer pro MariaDB na CentOS 7