GNU/Linux >> Znalost Linux >  >> Cent OS

Jak nastavit HAProxy jako Load Balancer pro Nginx na CentOS 7

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

Ulož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.conf

Chcete-li povolit připojení UDP, odkomentujte tento řádek:

$ModLoad imudp
$UDPServerRun 514

Pokud chcete použít konkrétní IP, můžete přidat nový řádek, jako je ten níže:

$UDPServerAddress 127.0.0.1

Uložte soubor a ukončete.

Poté vytvořte nový konfigurační soubor haproxy pro rsyslog:

cd /etc/rsyslog.d/
vi haproxy.conf

Vlož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, loadbalancer

Uložte a ukončete.

Nyní restartujte rsyslog a poté spusťte haproxy:

systemctl restart rsyslog
systemctl start haproxy

Př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-release

Nyní můžete nainstalovat Nginx:

yum -y nainstalujte nginx

Nginx 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 nginx2

Dále přidejte Nginx, aby se spustil při spouštění, a poté jej spusťte:

systemctl povolit nginx
systemctl spustit nginx

Ujistě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á.


Cent OS
  1. Jak nainstalovat Nginx na CentOS 7

  2. Jak nakonfigurovat HAProxy load balancer

  3. Jak nastavit VNC Server pro nového uživatele v CentOS/RHEL 5

  1. Jak nainstalovat Nginx na CentOS 8

  2. Jak nainstalovat Magento 2.1 na CentOS 7

  3. Jak nastavit HAProxy jako Load Balancer pro MariaDB na CentOS 7

  1. Jak nastavit SVN server na CentOS

  2. Jak nastavit vysoce dostupný NGINX s KeepAlived na CentOS 8

  3. Jak nastavit Percona Cluster s HAproxy Loadbalancer na CentOS 7