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 --reload4. 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.htmlKrok 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 haproxy7. 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 haproxyOvěřte stav HAProxy v CentOS 8
8. Nyní nakonfigurujeme HAProxy pomocí následujícího konfiguračního souboru.
# vi /etc/haproxy/haproxy.cfgKonfigurač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 hapoxy16. 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 --reloadKrok 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.lan18. 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/statsPoté 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 -lVytvoř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_serversNakonfigurujte 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.service23. 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
Jak nastavit Redis Cluster v CentOS 8 – část 3 Jak nainstalovat Varnish Cache 6 pro Nginx na CentOS/RHEL 8Cent OS