HAProxy nebo High Availability Proxy je open source software pro vyrovnávání zátěže TCP a HTTP a proxy server. HAProxy byl napsán Willy Tarreau v C, podporuje SSL, komprese, zachování, vlastní formáty protokolů a přepisování záhlaví. HAProxy je rychlý a lehký proxy server a nástroj pro vyrovnávání zatížení s malou paměťovou náročností a nízkým využitím CPU. Používají ho velké weby jako Github, StackOverflow, Reddit, Tumblr, Twitter a další. V posledních letech se stal nejoblíbenějším softwarovým nástrojem pro vyrovnávání zatížení a proxy serverem.
V tomto tutoriálu vás provedu instalací a konfigurací HAProxy pro 3 servery, jeden load balancer a dva webové servery Nginx. Nainstalujeme HAProxy na jeden server a poté nainstalujeme webový server Nginx na ostatní servery. HAProxy funguje jako vyvažovač zatížení pro webové servery Nginx.
Základní koncept s HAProxy
Vrstva 4 a Vrstva 7
HAProxy může běžet ve dvou režimech:TCP režim Layer 4 a HTTP Mode Layer 7. V režimu Layer 4 TCP HAProxy předává RAW TCP pakety z klienta na aplikační servery. V režimu HTTP vrstvy 7 HAProxy analyzuje hlavičku HTTP, než je předá aplikačním serverům. V tomto tutoriálu použijeme Nginx jako webový server, který podporuje pouze režim HTTP Layer 7.
Algoritmus vyvážení
Toto je algoritmus, který používá HAProxy k výběru serveru při vyrovnávání zátěže. K dispozici jsou následující režimy:
Roundrobin
Toto je nejjednodušší balanční algoritmus. Každé nové připojení bude zpracováno dalším backendovým serverem. Pokud je dosaženo posledního backendového serveru v seznamu, začne znovu od začátku backendového seznamu.
Lastconn
Nové připojení bude zpracováno backendovým serverem s nejmenším počtem připojení. To je užitečné, když se čas a zatížení požadavků hodně liší.
Zdroj
Toto je pro pevné relace, IP klienta bude hashována, aby se určil backendový server, který přijal poslední požadavek z této IP. Takže IP A bude vždy zpracována backendem1 a IP B bude vždy zpracována banckend2, aby nedošlo k přerušení relací
Existuje oJiný algoritmus – podrobnosti naleznete na oficiálních stránkách HAProxy.
Předpoklady
- 3 CentOS 7
loadbalancer
192.168.1.102
nginx1
192.168.1.104
nginx2
192.168.1.105
- Oprávnění root na všech 3 serverech.
Krok 1 – Konfigurace souborů /etc/hosts
Přihlaste se k serveru nástroje pro vyrovnávání zatížení a upravte soubor /etc/hosts.
ssh [e-mail chráněný]
sudo su
vi /etc/hosts
Přidejte názvy hostitelů nginx1 a nginx2:
192.168.1.104 nginx1.loadbalancer.me nginx1
192.168.1.105 nginx2.loadbalancer.me nginx2
Uložte soubor a ukončete editor.
Dále upravte soubor hosts na serverech Nginx (nginx1 a nginx2):
ssh [chráněno e-mailem]
ssh [chráněno e-mailem]
Upravte a přidejte nový řádek pro nástroj pro vyrovnávání zatížení v souborech hostitelů:
vi /etc/host
Přidejte název hostitele loadbalanceru na každý server nginx:
192.168.1.102 loadbalancer
proveďte to na serveru nginx1 a nginx2.
Krok 2 – Instalace a konfigurace HAProxy
HAProxy je k dispozici v úložišti CentOS 7, přihlaste se k serveru loadbalancer a aktualizujte seznamy balíčků:
ssh [e-mail chráněný]
yum -y aktualizace
Nyní nainstalujte HAProxy pomocí tohoto příkazu yum:
yum -y nainstalujte haproxy
Po dokončení instalace přejděte do adresáře "/etc/haproxy/" a zazálohujte si původní konfigurační soubor:
cd /etc/haproxy/
mv haproxy.cfg haproxy.cfg.orig
Dále přidejte nový konfigurační soubor HAProxy soubor "haproxy.cfg" pomocí editoru vi:
vi haproxy.cfg
Vložte konfiguraci níže:
#--------------------------------------------- -----------------------
# Globální nastavení
#-------------- -------------------------------------------------- ----
globální
protokol 127.0.0.1 local2 #Konfigurace protokolu
chroot /var/lib/haproxy
pidfile /var/run/haproxy. br /> maxconn 4000
uživatel haproxy #Haproxy běží pod uživatelem a skupinou "haproxy uni"
em x zapněte skupinu
#
zapněte haproxy < # / > zapněte haproxy < # / > zap. soket statistik /var/lib/haproxy/stats
#------------------------------ -------------------------------------
# běžné výchozí hodnoty, že všechny 'poslouchat Sekce ' a 'backend' se
# použijí, pokud nejsou označeny ve svém bloku
#-------------------------- --------------------------------------------
výchozí nastavení
režim http
protokol globální
možnost httplog
Možnost dontlogll
Možnost http-server-close
Možnost dopředu pro 127.0.0.0/8
Možnost rediSPATCH
Opětí 3
Timeout http-request 10s 10s
fronta časového limitu 1 m
časový limit připojení 10 s
časový limit klienta 1 m
časový limit serveru doba kontroly 0 1 1 m
#--------------------------------------- ------------------------------
#HAProxy Monitoring Config
#------- -------------------------------------------------- ------------
poslouchejte haproxy3-monitoring *:8080 #Haproxy Monitoring běží na portu 8080
režim http
možnost forwardfor
možnost http zavřít
statistiky aktivují
statistiky ukazují legendy
statistiky se obnovují 5 s
statistiky uri /stats #UR L pro monitorování HAProxy
statistiky oblasti Haproxy\ Statistics
statistiky auth howtoforge:howtoforge #Uživatel a heslo pro přihlášení k řídicímu panelu monitorování
správce statistik, pokud je PRAVDA
Tato výchozí hlavní je volitelně pro monitorování backendu
#----------------------------------- ---------------------------------
# Konfigurace frontendu
#----- -------------------------------------------------- --------------
hlavní frontend
vazba *:80
možnost http-server-close
možnost forwardfor
default_backend app -hlavní
#-------------------------------------- ------------------------------
# BackEnd roundrobin jako balanční algoritmus
#----- -------------------------------------------------- --------------
hlavní backendové aplikace
balance roundrobin #Algoritmus vyvážení
:možnost httpchk 1 \ HTTP\n host. Ch zkontrolujte, zda je serverová aplikace funkční a v pořádku – stavový kód 200
server nginx1 192.168.1.104:80 check #Nginx1
2 server nginx2 5 192.168.1. 5Uložte konfigurační soubor a ukončete.
Dále nakonfigurujte rsyslog pro HAProxy.
Nakonfigurujeme démona rsyslog pro protokolování statistik HAProxy. Upravte soubor rsyslog.conf, aby rsyslog mohl používat port UDP 514.
vi /etc/rsyslog.confChcete-li povolit připojení UDP, odkomentujte tento řádek:
$ModLoad imudp
$UDPServerRun 514Pokud chcete použít konkrétní IP, můžete přidat nový řádek, jako je ten níže:
$UDPServerAddress 127.0.0.1Uložte soubor a ukončete.
Poté vytvořte nový konfigurační soubor haproxy pro rsyslog:
cd /etc/rsyslog.d/
vi haproxy.confVložte konfiguraci níže:
local2.=info /var/log/haproxy-access.log #For Access Log
local2.notice /var/log/haproxy-info.log #For Service Info – Backend, loadbalancerUložte a ukončete.
Nyní restartujte rsyslog a poté spusťte haproxy:
systemctl restart rsyslog
systemctl start haproxyPřidejte haproxy pro spuštění při spouštění:
systemctl umožňuje haproxy
Krok 3 – Instalace a konfigurace Nginx
V této části nainstalujeme Nginx z úložiště epel na server nginx1 a nginx2.
Přihlaste se na servery:
ssh [chráněno e-mailem]
ssh [chráněno e-mailem]Nainstalujte úložiště epel pomocí příkazu yum níže:
yum -y install epel-releaseNyní můžete nainstalovat Nginx:
yum -y nainstalujte nginxNginx je nainstalován. Přejděte do webového adresáře a změňte soubor indexu, abychom viděli, který ze dvou serverů doručil soubor html:
cd /usr/share/nginx/html/
echo "nginx1.loadbalance.me
"> index.html #Pro server nginx1
echo "nginx2 .loadbalance.me
"> index.html #Pro server nginx2Dále přidejte Nginx, aby se spustil při spouštění, a poté jej spusťte:
systemctl povolit nginx
systemctl spustit nginxUjistěte se, že tento krok provádíte na serveru nginx1 a nginx2.
Krok 4 – Testování
Testování z prohlížeče přístupem k IP loadbalanceru:192.168.1.102
Testování pomocí příkazu curl:
curl 192.168.1.102
Testování přihlášení k webovému monitorování HAProxy, které běží na portu 8080 s uživatelským jménem a heslem "howtoforge":
http://192.168.1.102:8080/stats
HAProxy funguje úspěšně a funguje jako nástroj pro vyrovnávání zátěže pro naše dva webové servery Nginx.
Závěr
HAProxy nebo High Availability proxy je software s otevřeným zdrojovým kódem, který poskytuje vysokou dostupnost pro služby založené na TCP, funguje jako vyrovnávání zatížení HTTP a proxy server. Tento software je napsán v C a podporuje SSL, keep-alive a kompresi. HAProxy je správnou volbou pro každého, kdo potřebuje nástroj pro vyrovnávání zátěže a proxy server, který je rychlý a lehký, má malé nároky na paměť a nízké využití CPU. Haproxy může běžet v režimu Layer 4 TCP a Layer 7 HTTP. Nginx podporuje pouze režim HTTP Layer 7 s HAProxy. Pokud chcete použít režim TCP na 4. vrstvě, můžete použít jiné webové servery, jako je apache. Na CentOS 7 je HAProxy k dispozici ve výchozím úložišti. Instalace a konfigurace je snadná.
Jak nastavit HAProxy jako Load Balancer pro MariaDB na CentOS 7 Monitorování serveru pomocí Icinga 2 a Icingaweb 2 na CentOS 7Cent OS