GNU/Linux >> Znalost Linux >  >> Rocky Linux

Jak nainstalovat a nakonfigurovat HAProxy load balancer na Rocky Linux/Alma Linux 8

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 nástroj pro vyrovnávání zatížení HAProxy na Rocky Linux 8. Tato příručka funguje také na jiných distribucích založených na RHEL 8, jako je Alma Linux a Oracle Linux.

Zkontrolujte také:

  • Jak nainstalovat a nakonfigurovat nástroj pro vyrovnávání zatížení HAProxy v Debianu 11
  • 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 haš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

  1. Zajištění aktuálnosti serveru
  2. Instalace HAProxy
  3. Konfigurace HAProxy jako loadbalanceru
  4. Testování nastavení

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 dnf -y update

2. Instalace Haproxy

Balíček poskytující haproxy je dostupný ve výchozím Rocky Linux Repos. Nainstalujte pomocí tohoto příkazu:

sudo dnf install -y haproxy

Potvrďte instalaci tímto příkazem:

$ rpm -qi haproxy
Name        : haproxy
Version     : 1.8.27
Release     : 2.el8
Architecture: x86_64
Install Date: Tue 11 Jan 2022 09:39:45 PM UTC
Group       : System Environment/Daemons
Size        : 4446585
License     : GPLv2+
Signature   : RSA/SHA256, Wed 19 May 2021 05:13:23 AM UTC, Key ID 15af5dac6d745a60
Source RPM  : haproxy-1.8.27-2.el8.src.rpm
Build Date  : Wed 19 May 2021 02:37:50 AM UTC
Build Host  : ord1-prod-x86build004.svc.aws.rockylinux.org
Relocations : (not relocatable)
Packager    : [email protected]
Vendor      : Rocky
URL         : http://www.haproxy.org/
Summary     : HAProxy reverse proxy for high availability environments
Description :
HAProxy is a TCP/HTTP reverse proxy which is particularly suited for high
availability environments. Indeed, it can:
 - route HTTP requests depending on statically assigned cookies
 - spread load among several servers while assuring server persistence
   through the use of HTTP cookies
 - switch to backup servers in the event a main one fails
 - accept connections to special ports dedicated to service monitoring
 - stop accepting connections without breaking existing ones
 - add, modify, and delete HTTP headers in both directions
 - block requests matching particular patterns
 - report detailed status to authenticated users from a URI
   intercepted from the application

Číslo nainstalované verze můžete zkontrolovat pomocí následujícího příkazu.

haproxy -v

Toto je výstup na mém počítači

$ haproxy -v
HA-Proxy version 1.8.27-493ce0b 2020/11/06
Copyright 2000-2020 Willy Tarreau <[email protected]>

Poté je instalace dokončena. Pokračujte níže s pokyny, jak nakonfigurovat nástroj pro vyrovnávání zatížení pro přesměrování požadavků na vaše webové servery.

3. Konfigurace HAProxy jako nástroje pro vyrovnávání zátěže

Abychom nakonfigurovali HAProxy jako load balancer, musíme mu sdělit, na 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  tím, co chcete nazývat své servery na stránce statistik, a  soukromými IP adresami serverů, na které chcete přesměrovat webový provoz. Toto je konfigurace, kterou používám na svém serveru

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é 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 stránky statistik heslem

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í zelenou barvu, 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.


Rocky Linux
  1. Jak nainstalovat a nakonfigurovat docker v Rocky Linux/Centos 8

  2. Jak nainstalovat a nakonfigurovat Ansible na Rocky Linux/CentOS 8

  3. Jak nainstalovat Erlang na Rocky Linux/Alma Linux/CentOS 8

  1. Jak nainstalovat a používat Podman v Rocky Linux/Alma Linux/Centos 8

  2. Jak nainstalovat a nastavit PHP a Nginx (LEMP) na Rocky Linux/Alma Linux 8

  3. Jak nainstalovat a nakonfigurovat HAProxy load balancer na Debian 11

  1. Jak nainstalovat NodeJS a NPM na Rocky Linux/Alma Linux 8

  2. Jak nainstalovat a nakonfigurovat Memcached na Rocky Linux/Alma Linux 8

  3. Jak nainstalovat a nakonfigurovat nástroj pro vyrovnávání zatížení HAProxy na Ubuntu 20.04