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