Haproxy je oblíbený pro vyvažování zátěže kvůli jeho účinnosti, spolehlivosti a nízké kapacitě paměti a CPU. Vyvažování zátěže je běžné řešení pro horizontální distribuci webových aplikací mezi více hostitelů a zároveň poskytuje uživatelům jeden přístupový bod ke službě.
Je k dispozici pro instalaci na hlavních distribucích Linuxu. V této příručce se naučíme, jak nainstalovat a nakonfigurovat HAProxy load balancer na Debian 11.
Zkontrolujte také:
- Jak nainstalovat a nakonfigurovat nástroj pro vyrovnávání zatížení HAProxy na Rocky Linux/Alma Linux 8
- Jak nainstalovat a nakonfigurovat nástroj pro vyrovnávání zatížení HAProxy na Ubuntu 20.04
HAProxy Algoritmy pro vyvažování zátěže
Algoritmy vyvažování se používají k rozhodnutí, na který server na backendu se každé spojení přenese. Některé z užitečných možností zahrnují následující:
- Roundrobin: Každý server se používá v tazích podle své váhy. Jedná se o nejplynulejší a nejspravedlivější algoritmus, kdy čas zpracování serverů zůstává rovnoměrně rozložen. Tento algoritmus je dynamický, což umožňuje upravovat váhy serveru za chodu.
- Leastconn: Je vybrán server s nejnižším počtem připojení. Roundrobin se provádí mezi servery se stejnou zátěží. Použití tohoto algoritmu se doporučuje pro dlouhé relace, jako je LDAP, SQL, TSE atd., ale není příliš vhodný pro krátké relace, jako je HTTP.
- První: První server s dostupnými připojovacími sloty přijme připojení. Servery jsou vybírány od nejnižšího číselného identifikátoru po nejvyšší, což je výchozí poloha serveru na farmě. Jakmile server dosáhne své hodnoty maxconn, použije se další server.
- Zdroj: Zdrojová IP adresa je zahašována a vydělena celkovou váhou běžících serverů, aby se určilo, který server přijme požadavek. Tímto způsobem se stejná IP adresa klienta vždy dostane na stejný server, zatímco servery zůstanou stejné.
Obsah
- Zajištění aktuálnosti serveru
- Instalace HAProxy
- Konfigurace HAProxy jako nástroje pro vyrovnávání zatížení
- Testování nastavení
- Stránka statistik HAProxy chrání heslem
1. Zajištění aktuálnosti serveru
Než budete pokračovat, ujistěte se, že je server aktuální. K dosažení tohoto cíle použijte tento příkaz:
sudo apt update
sudo apt upgrade -y
2. Instalace Haproxy
Balíček poskytující haproxy je dostupný ve výchozím Debian Repos. Nainstalujte pomocí tohoto příkazu:
sudo apt install -y haproxy
Potvrďte instalaci tímto příkazem:
$ apt-cache policy haproxy
haproxy:
Installed: 2.2.9-2+deb11u2
Candidate: 2.2.9-2+deb11u2
Version table:
2.4.9-1~bpo11+1 100
100 http://cdn-aws.deb.debian.org/debian bullseye-backports/main amd64 Packages
*** 2.2.9-2+deb11u2 500
500 http://cdn-aws.deb.debian.org/debian bullseye/main amd64 Packages
500 http://security.debian.org/debian-security bullseye-security/main amd64 Packages
100 /var/lib/dpkg/status
3. Konfigurace HAProxy jako nástroje pro vyrovnávání zátěže
Abychom nakonfigurovali HAProxy jako load balancer, musíme mu sdělit, jaký druh připojení by měl naslouchat a kam by měla být připojení přenášena. To se provádí vytvořením konfiguračního souboru /etc/haproxy/haproxy.cfg
s definujícími nastaveními.
Vyrovnávání zátěže na vrstvě 4
Při instalaci bude mít HAProxy již šablonu pro konfiguraci nástroje pro vyrovnávání zatížení. Otevřete konfigurační soubor pomocí textového editoru, já používám vim:
sudo vim /etc/haproxy/haproxy.cfg
Přidejte tento obsah ke konfiguraci naslouchacího rozhraní a backendového rozhraní, kde bude provoz vyrovnán zatížení.
frontend http_front
bind *:80
stats uri /haproxy?stats
default_backend http_back
backend http_back
balance roundrobin
server <server1 name> <private IP 1>:80 check
server <server2 name> <private IP 2>:80 check
Nahraďte
frontend http_front
bind *:80
stats uri /haproxy?stats
default_backend http_back
backend http_back
balance roundrobin
server web_server_1 10.70.5.41:80 check
server web_server_2 10.70.5.187:80 check
Výše uvedené definuje nástroj pro vyrovnávání zatížení vrstvy 4 s názvem front-endu http_front poslouchajícím číslo portu 80, který pak přesměruje provoz do výchozího backendu s názvem http_back. Dodatečné identifikátor URI statistik /haproxy?stats
povolí stránku statistik na zadané adrese.
Vyrovnávání zátěže na vrstvě 7
Můžeme také nakonfigurovat nástroj pro vyrovnávání zatížení, aby fungoval na vrstvě 7. To je užitečné, když jsou části vaší webové aplikace umístěny na různých hostitelích. Toho lze dosáhnout podmíněním přenosu připojení například pomocí adresy URL.
Otevřete konfigurační soubor pomocí textového editoru, já používám vim:
sudo vim /etc/haproxy/haproxy.cfg
Poté přidejte tyto konfigurace
frontend http_front
bind *:80
stats uri /haproxy?stats
acl url_blog path_beg /blog
use_backend blog_back if url_blog
default_backend http_back
backend http_back
balance roundrobin
server <server name> <private IP>:80 check
server <server name> <private IP>:80 check
backend blog_back
server <server name> <private IP>:80 check
server <server name> <private IP>:80 check
Rozhraní frontend deklaruje pravidlo ACL s názvem url_blog, které platí pro všechna připojení s cestami začínajícími na /blog. Use_backend definuje, že připojení vyhovující podmínce url_blog by měla obsluhovat backend s názvem blog_back, zatímco všechny ostatní požadavky zpracovává výchozí backend.
Na zadní straně konfigurace nastaví dvě skupiny serverů, http_back jako dříve a novou nazvanou blog_back , které se servery konkrétně připojují k example.com/blog.
Po provedení konfigurací uložte soubor a restartujte HAProxy dalším příkazem.
sudo systemctl restart haproxy
Pokud se při spuštění zobrazí nějaké chyby nebo varování, zkontrolujte konfiguraci, zda neobsahuje překlepy, a poté zkuste restartovat znovu.
Konfigurace SSL
Pokud máte soubor soukromého klíče a soubor certifikátu, které chcete použít s HAProxy, zkombinujte je s tímto příkazem.
cat citizix.fullchain.pem citizix.key > citizix.pem
Poté nakonfigurujte HAProxy tak, aby na frontendu používala certifikát SSL.
frontend http_front
bind *:80
bind *:443 ssl crt /etc/letsencrypt/live/apps.citizix.com/citizix.pem
4. Testování nastavení
S nakonfigurovaným a spuštěným HAProxy otevřete veřejnou IP svého serveru pro vyrovnávání zatížení ve webovém prohlížeči a zkontrolujte, zda jste správně připojeni k backendu. Parametr stats uri v konfiguraci aktivuje stránku statistik na definované adrese.
http://<Haproxy public IP>/haproxy?stats
Když načtete stránku statistik a všechny vaše servery se zobrazí zeleně, vaše konfigurace byla úspěšná!
Stránka statistik obsahuje užitečné informace, které vám pomohou sledovat vaše webové hostitele, včetně časů vzestupů a výpadků a počtu relací. Pokud je server uveden červeně, zkontrolujte, zda je server zapnutý a zda na něj můžete odeslat příkaz ping ze stroje pro vyrovnávání zatížení.
V případě, že váš nástroj pro vyrovnávání zatížení neodpovídá, zkontrolujte, zda připojení HTTP neblokuje brána firewall. Pomocí níže uvedeného příkazu také potvrďte, že HAProxy běží.
sudo systemctl status haproxy
5. Ochrana heslem stránky statistik HaProxy
Mít stránku statistik jednoduše uvedenou na předním konci je však veřejně přístupné pro kohokoli, což nemusí být tak dobrý nápad. Místo toho jej můžete nastavit na vlastní číslo portu přidáním příkladu níže na konec souboru haproxy.cfg
soubor. Nahraďte uživatelské jméno a heslo něčím bezpečným.
listen stats bind *:8181 stats enable stats uri / stats realm Haproxy\ Statistics stats auth username:password
Po přidání nové skupiny naslouchání odstraňte ze skupiny frontend starý odkaz na uri statistik. Po dokončení uložte soubor a znovu restartujte HAProxy.
sudo systemctl restart haproxy
Poté znovu otevřete nástroj pro vyrovnávání zatížení s novým číslem portu a přihlaste se pomocí uživatelského jména a hesla, které jste nastavili v konfiguračním souboru.
http://<load balancer public IP>:8181
Zkontrolujte, zda vaše servery stále hlásí vše zeleně, a poté ve webovém prohlížeči otevřete pouze IP vyrovnávání zátěže bez čísel portů.
http://<load balancer public IP>/
Pokud mají vaše backendové servery alespoň mírně odlišné vstupní stránky, všimnete si, že pokaždé, když stránku znovu načtete, dostanete odpověď od jiného hostitele.
Závěry
To je ono! V této příručce jsme se naučili, jak nainstalovat a nakonfigurovat HAProxy, aby provoz vyrovnal zatížení. To zvýší výkon a dostupnost vaší webové aplikace.