Instalace nástroje HAProxy Load Balancer na CentOS

Překlad článku byl připraven v předvečer zahájení kurzu Správce Linuxu. Virtualizace a clustering »

Instalace nástroje HAProxy Load Balancer na CentOS

Vyvažování zátěže je běžné řešení pro škálování webových aplikací na více hostitelích a zároveň poskytuje uživatelům jeden přístupový bod ke službě. HAProxy je jedním z nejpopulárnějších open source softwaru pro vyrovnávání zátěže, který také poskytuje vysokou dostupnost a funkce proxy.

HAProxy si klade za cíl optimalizovat využití zdrojů, maximalizovat propustnost, minimalizovat dobu odezvy a vyhnout se přetížení jakéhokoli jednotlivého zdroje. Lze jej nainstalovat na různé linuxové distribuce, jako je CentOS 8, na který se zaměříme v této příručce, a také na systémy Debian 8 и ubuntu 16.

Instalace nástroje HAProxy Load Balancer na CentOS

HAProxy je zvláště vhodný pro weby s velmi vysokou návštěvností, a proto se často používá ke zlepšení spolehlivosti a výkonu konfigurací webových služeb s více servery. Tato příručka popisuje kroky k nastavení HAProxy jako nástroje pro vyrovnávání zatížení na cloudovém hostiteli CentOS 8, který pak směruje provoz na vaše webové servery.

Předpokladem pro dosažení nejlepších výsledků je, že byste měli mít alespoň dva webové servery a server pro vyrovnávání zátěže. Na webových serverech musí být spuštěna alespoň základní webová služba, jako je nginx nebo httpd, aby bylo možné zkontrolovat vyrovnávání zátěže mezi nimi.

Instalace HAProxy na CentOS 8

Protože HAProxy je rychle se vyvíjející open source aplikace, distribuce, kterou máte k dispozici ve standardních repozitářích CentOS, nemusí být nejnovější verzí. Chcete-li zjistit nejnovější verzi, spusťte následující příkaz:

sudo yum info haproxy

HAProxy vždy poskytuje tři stabilní verze na výběr: dvě nejnovější podporované verze a třetí, starší verzi, která stále přijímá důležité aktualizace. Vždy si můžete zkontrolovat nejnovější stabilní verzi uvedenou na webu HAProxy a poté se rozhodnout, se kterou verzí chcete pracovat.

V této příručce budeme instalovat nejnovější stabilní verzi 2.0, která v době psaní tohoto článku ještě nebyla dostupná ve standardních repozitářích. Budete jej muset nainstalovat z původního zdroje. Nejprve si ale zkontrolujte, zda jste splnili nezbytné podmínky pro stažení a sestavení programu.

sudo yum install gcc pcre-devel tar make -y

Stáhněte si zdrojový kód pomocí příkazu níže. Můžete zkontrolovat, zda je k dispozici novější verze Stránka ke stažení HAProxy.

wget http://www.haproxy.org/download/2.0/src/haproxy-2.0.7.tar.gz -O ~/haproxy.tar.gz

Po dokončení stahování extrahujte soubory pomocí příkazu níže:

tar xzvf ~/haproxy.tar.gz -C ~/

Přejděte do rozbaleného zdrojového adresáře:

cd ~/haproxy-2.0.7

Poté zkompilujte program pro váš systém:

make TARGET=linux-glibc

A nakonec nainstalujte samotné HAProxy:

sudo make install

Nyní je HAProxy nainstalován, ale vyžaduje některé další manipulace, aby fungoval. Pokračujme v nastavení softwaru a služeb níže.

Nastavení HAProxy pro váš server

Nyní přidejte následující adresáře a statistický soubor pro položky HAProxy:

sudo mkdir -p /etc/haproxy
sudo mkdir -p /var/lib/haproxy 
sudo touch /var/lib/haproxy/stats

Vytvořte symbolický odkaz na binární soubory, abyste mohli spouštět příkazy HAProxy jako běžný uživatel:

sudo ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy

Pokud chcete přidat proxy do vašeho systému jako službu, zkopírujte soubor haproxy.init z příkladů do vašeho adresáře /etc/init.d. Upravte oprávnění souboru, aby se skript spustil, a poté znovu načtěte démona systemd:

sudo cp ~/haproxy-2.0.7/examples/haproxy.init /etc/init.d/haproxy
sudo chmod 755 /etc/init.d/haproxy
sudo systemctl daemon-reload

Musíte také povolit automatické restartování služby při spuštění systému:

sudo chkconfig haproxy on

Pro pohodlí se také doporučuje přidat nového uživatele pro spuštění HAProxy:

sudo useradd -r haproxy

Poté můžete znovu zkontrolovat číslo nainstalované verze pomocí následujícího příkazu:

haproxy -v
HA-Proxy version 2.0.7 2019/09/27 - https://haproxy.org/

V našem případě by měla být verze 2.0.7, jak je znázorněno na ukázkovém výstupu výše.

A konečně, výchozí firewall v CentOS 8 je pro tento projekt docela omezující. Chcete-li povolit požadované služby a resetovat bránu firewall, použijte následující příkazy:

sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-port=8181/tcp
sudo firewall-cmd --reload

Nastavení load balanceru

Nastavení HAProxy je poměrně jednoduchý proces. V podstatě vše, co musíte udělat, je říct HAProxy, na kterých připojeních má naslouchat a kam je má předávat.

To se provádí vytvořením konfiguračního souboru /etc/haproxy/haproxy.cfg s definicí nastavení. Můžete si přečíst o možnostech konfigurace HAProxy na stránce dokumentacepokud se o tom chcete dozvědět více.

Vyrovnávání zátěže na transportní vrstvě (vrstva 4)

Začněme základním nastavením. Vytvořte nový konfigurační soubor, například pomocí vi s níže uvedeným příkazem:

sudo vi /etc/haproxy/haproxy.cfg

Přidejte do souboru následující oddíly. Nahradit název_serveru ten, který by měl volat vaše servery na stránce statistik, a private_ip - privátní IP adresy serverů, na které chcete přesměrovat webový provoz. Můžete zkontrolovat soukromé IP adresy v ovládacím panelu UpCloud a na kartě Soukromá síť v nabídce Síť.

global
   log /dev/log local0
   log /dev/log local1 notice
   chroot /var/lib/haproxy
   stats timeout 30s
   user haproxy
   group haproxy
   daemon

defaults
   log global
   mode http
   option httplog
   option dontlognull
   timeout connect 5000
   timeout client 50000
   timeout server 50000

frontend http_front
   bind *:80
   stats uri /haproxy?stats
   default_backend http_back

backend http_back
   balance roundrobin
   server server_name1 private_ip1:80 check
   server server_name2 private_ip2:80 check

To definuje nástroj pro vyrovnávání zatížení transportní vrstvy (vrstva 4) externě pojmenovaný http_front naslouchající na portu 80, který pak směruje provoz do výchozího backendu s názvem http_back. Další statistiky /haproxy?stats připojí stránku statistiky k zadané adrese.

Různé algoritmy vyvažování zátěže.

Zadání serverů v sekci backend umožňuje HAProxy používat tyto servery pro vyrovnávání zátěže podle algoritmu kruhového provozu, pokud je to možné.

Algoritmy vyvažování se používají k určení, na který server v backendu je každé připojení odesláno. Zde jsou některé z užitečných možností:

  • Roundrobin: každý server se používá postupně podle své hmotnosti. Toto je nejhladší a nejspravedlivější algoritmus, kdy doba zpracování serverů zůstává rovnoměrně rozložena. Tento algoritmus je dynamický, což vám umožňuje upravovat váhu serveru za chodu.
  • Leastconn: je vybrán server s nejmenším počtem připojení. Round robin 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 ID po nejvyšší, které ve výchozím nastavení odpovídá pozici serveru ve farmě. Jakmile server dosáhne hodnoty maxconn, použije se další server.
  • Zdroj: Zdrojová IP adresa je hašována a vydělena celkovou váhou běžících serverů, aby se určilo, který server obdrží požadavek. Stejná IP adresa klienta tedy vždy půjde na stejný server, zatímco servery zůstanou nezměněny.

Konfigurace vyvažování zátěže na aplikační vrstvě (vrstva 7)

Další dostupnou možností je nakonfigurovat nástroj pro vyrovnávání zatížení tak, aby fungoval na aplikační vrstvě (vrstva 7), což je užitečné, když jsou části vaší webové aplikace umístěny na různých hostitelích. Toho lze dosáhnout omezením přenosu připojení, například pomocí URL.

Otevřete konfigurační soubor HAProxy pomocí textového editoru:

sudo vi /etc/haproxy/haproxy.cfg

Poté nastavte segmenty frontend a backend podle níže uvedeného příkladu:

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_name1 private_ip1:80 check
   server server_name2 private_ip2:80 check

backend blog_back
   server server_name3 private_ip3:80 check

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 určuje, že připojení odpovídající podmínce url_blog by měla být obsluhována backendem s názvem blog_back a všechny ostatní požadavky jsou zpracovávány výchozím backendem.

Na zadní straně konfigurace nastaví dvě skupiny serverů: http_back jako dříve a novou s názvem blog_back, která zpracovává připojení k example.com/blog.

Po změně nastavení uložte soubor a restartujte HAProxy pomocí následujícího příkazu:

sudo systemctl restart haproxy

Pokud se při spouštění zobrazí nějaké varování nebo chyby, zkontrolujte, zda v konfiguraci není nějaké, a ujistěte se, že jste vytvořili všechny potřebné soubory a složky, a potom zkuste restartovat znovu.

Testování nastavení

Jakmile je HAProxy nakonfigurováno a spuštěno, otevřete v prohlížeči veřejnou IP adresu serveru pro vyrovnávání zatížení a zkontrolujte, zda jste se správně připojili k backendu. Parametr stats uri v konfiguraci vytvoří stránku statistik na zadané adrese.

http://load_balancer_public_ip/haproxy?stats

Když načtete stránku statistik, pokud jsou všechny vaše servery zelené, nastavení bylo úspěšné!

Instalace nástroje HAProxy Load Balancer na CentOS

Stránka se statistikami obsahuje některé užitečné informace pro sledování vašich webových hostitelů, včetně doby vzestupu a poklesu a počtu relací. Pokud je server označen červeně, ujistěte se, že je spuštěný a že na něj můžete pingnout z nástroje pro vyrovnávání zatížení.

Pokud váš nástroj pro vyrovnávání zatížení nereaguje, ujistěte se, že připojení HTTP nejsou blokována bránou firewall. Také se ujistěte, že HAProxy pracuje s příkazem níže:

sudo systemctl status haproxy

Ochrana stránky statistik heslem

Pokud je však stránka se statistikami uvedena pouze na frontendu, je otevřená veřejnosti, což nemusí být dobrý nápad. Místo toho mu můžete přiřadit vlastní číslo portu přidáním níže uvedeného příkladu na konec souboru haproxy.cfg. Nahradit uživatelské jméno и heslo na něco bezpečného:

listen stats
   bind *:8181
   stats enable
   stats uri /
   stats realm Haproxy Statistics
   stats auth username:password

Po přidání nové skupiny posluchačů odstraňte z frontendové skupiny starou referenci uri statistik. Po dokončení uložte soubor a 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 zadali v konfiguračním souboru.

http://load_balancer_public_ip:8181

Ujistěte se, že všechny vaše servery jsou stále zelené, a poté v prohlížeči otevřete pouze IP vyrovnávání zátěže bez čísel portů.

http://load_balancer_public_ip/

Pokud máte na svých interních serverech alespoň nějaké různé vstupní stránky, všimnete si, že pokaždé, když stránku znovu načtete, dostanete odpověď od jiného hostitele. Můžete vyzkoušet různé balanční algoritmy v sekci konfigurace nebo viz kompletní dokumentace.

Závěr: HAProxy Load Balancer

Gratulujeme k úspěšnému nastavení vašeho HAProxy load balanceru! I se základním nastavením vyvažování zátěže můžete výrazně zlepšit výkon a dostupnost vaší webové aplikace. Tato příručka je pouze úvodem do vyvažování zátěže pomocí HAProxy, která dokáže mnohem více, než co lze popsat v průvodci rychlým nastavením. Doporučujeme experimentovat s použitím různých konfigurací rozsáhlá dokumentacedostupné pro HAProxy a poté začněte plánovat vyrovnávání zátěže pro vaše produkční prostředí.

Při použití více hostitelů k ochraně vaší webové služby s rezervou může samotný nástroj pro vyrovnávání zatížení stále představovat bod selhání. Vysokou dostupnost můžete dále zlepšit nastavením pohyblivé IP mezi více nástroji pro vyrovnávání zatížení. Více se o tom můžete dozvědět v našem článek o plovoucích IP adresách na UpCloud.

Více o kurzu Správce Linuxu. Virtualizace a clustering »***

Zdroj: www.habr.com

Přidat komentář