GNU/Linux >> Znalost Linux >  >> Linux

Jak nastavit HAProxy jako Load Balancer pro Nginx v CentOS 7

HAProxy, také známý jako High Availability Proxy, napsaný v C od Willyho Tarreaua, je rychlý a lehký nástroj pro vyrovnávání zatížení HTTP a proxy server. Má nízké využití procesoru a je způsobeno malými nároky na paměť. Nástroj pro vyrovnávání zatížení používají populární weby, jako je StackOverflow, Twitter, Github a Tumblr, abychom zmínili jen několik.

V této příručce vám ukážeme, jak nastavit HAProxy jako load balancer pro webový server Nginx na CentOS 7. Load balancer bude sedět před 2 webovými servery Nginx a spravedlivě distribuovat HTTP požadavky na servery.

Algoritmus vyvážení HAProxy

Toto je algoritmus používaný nástrojem pro vyrovnávání zátěže pro výběr webových serverů při distribuci zátěže.

1. Roundrobin

Toto je nejjednodušší z algoritmů. V zásadě bude každé nové připojení zpracováno dalším webovým serverem. Pokud máte například 4 back-end servery, každý z nich bude zpracovávat požadavky postupně. Po dosažení posledního webového serveru v seznamu se nástroj pro vyrovnávání zatížení spustí znovu od prvního webového serveru.

2. Lastconn

Zde bude nový požadavek zpracován serverem s nejmenším počtem připojení. To se hodí, když se zatížení a časy požadavků liší velkými odchylkami.

Začínáme

Chcete-li začít, proveďte předletový kontrolní seznam a ujistěte se, že máte následující.

1. Servery CentOS 7

Název hostitele IP adresa serveru
vyvažovač zátěže 173.82.168.96
web-server-1 173.82.2.236
web-server-2 173.82.94.57

2. SSH přístup na všechny servery

Níže je grafické znázornění nastavení.

Krok 1:Konfigurace souboru /etc/hosts v nástroji pro vyrovnávání zatížení

Přihlaste se do nástroje pro vyrovnávání zatížení pomocí SSH a přidejte IP adresy a názvy hostitelů webových serverů Nginx, jak je znázorněno.

vim /etc/hosts


173.82.2.236    web-server-1

173.82.94.57    web-server-2

Uložte a ukončete textový editor vim.

Dále se přihlaste ke každému z webových serverů (web-server-1 a web-server-2) a upravte /etc/hosts soubor tak, aby ukazoval na nástroj pro vyrovnávání zatížení.


173.82.168.96   load-balancer

Uložte a ukončete textový editor.

Krok 2:Nainstalujte a nakonfigurujte HAProxy na serveru pro vyrovnávání zatížení

Úložiště HAProxy je snadno dostupné v úložišti CentOS. Chcete-li nainstalovat a nastavit HAProxy, nejprve se přihlaste a aktualizujte systémová úložiště.

 yum update -y

Dále nainstalujte HAProxy pomocí příkazu:

yum -y install haproxy

Ukázkový výstup

Jakmile je instalace úspěšná a dokončena, přejděte do adresáře haproxy.

cd /etc/haproxy

Zálohujte soubor haproxy.cfg soubor přejmenováním na haproxy.cfg.bak

mv haproxy.cfg  haproxy.cfg.bak

Dále vytvořte nový konfigurační soubor HAproxy.

vim haproxy.cfg


#---------------------------------------------------------------------
# Global settings
#---------------------------------------------------------------------
global
    log         127.0.0.1 local2     #Log configuration

    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy             #Haproxy running under user and group "haproxy"
    group       haproxy
    daemon

    # turn on stats unix socket
    stats socket /var/lib/haproxy/stats

#---------------------------------------------------------------------
# common defaults that all the 'listen' and 'backend' sections will
# use if not designated in their block
#---------------------------------------------------------------------
defaults
    mode                    http
    log                     global
    option                  httplog
    option                  dontlognull
    option http-server-close
    option forwardfor       except 127.0.0.0/8
    option                  redispatch
    retries                 3
    timeout http-request    10s
    timeout queue           1m
    timeout connect         10s
    timeout client          1m
    timeout server          1m
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 3000

#---------------------------------------------------------------------
#HAProxy Monitoring Config
#---------------------------------------------------------------------
listen haproxy3-monitoring *:8080                #Haproxy Monitoring run on port 8080
    mode http
    option forwardfor
    option httpclose
    stats enable
    stats show-legends
    stats refresh 5s
    stats uri /stats                             #URL for HAProxy monitoring
    stats realm Haproxy\ Statistics
    stats auth Password123: Password123            #User and Password for login to the monitoring dashboard
    stats admin if TRUE
    default_backend app-main                    #This is optionally for monitoring backend

#---------------------------------------------------------------------
# FrontEnd Configuration
#---------------------------------------------------------------------
frontend main
    bind *:80
    option http-server-close
    option forwardfor
    default_backend app-main

#---------------------------------------------------------------------
# BackEnd round robin as balance algorithm
#---------------------------------------------------------------------
backend app-main
    balance roundrobin                                     #Balance algorithm
    option httpchk HEAD / HTTP/1.1\r\nHost:\ localhost    #Check the server application is up and healty - 200 status code
    server web-server-1 173.82.2.236:80 check                 #Nginx1
    server web-server-2 173.82.94.57:80 check                 #Nginx2

Poznamenejte si webové servery, které byly specifikovány v posledních 2 řádcích, jak je uvedeno ve výstupu.

Uložte a ukončete textový editor.

Dále nakonfigurujeme rsyslog démona pro protokolování statistik HAProxy.

Upravte soubor rsyslog.conf aby rsyslog mohl používat UDP port 514.

vim /etc/rsyslog.conf

Chcete-li povolit připojení UDP přes port 154, odkomentujte následující řádky.


$ModLoad imudp
$UDPServerRun 514

Uložte a ukončete textový editor.

Dále vytvořte nový konfigurační soubor HAProxy pro syslog.

vim  /etc/rsyslog.d/haproxy.conf

Vložte následující konfiguraci


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 textový editor.

Pokračujte a restartujte rsyslog.

systemctl restart rsyslog

Dále spusťte a povolte spuštění Haproxy při spuštění.


systemctl start haproxy
systemctl enable haproxy

Chcete-li potvrdit, že HaProxy je v provozu, spusťte:

systemctl status haproxy

V dalším kroku nainstalujeme Nginx na naše webové servery.

Krok 3:Instalace a konfigurace Nginx

Jediným rozhodujícím krokem, který zbývá, je instalace Nginx na každý z našich webových serverů.

Nejprve však nainstalujte úložiště EPEL, jak je znázorněno

yum install epel-release

Dále nainstalujte Nginx

yum install nginx -y

Ukázkový výstup

S nainstalovaným Nginx na obou serverech upravíme index.html soubory na každém z webových serverů Nginx, aby se vytvořil rozdíl mezi jednotlivými servery při simulaci pomocí nástroje pro vyrovnávání zatížení HAproxy.

Přejděte do adresáře html, jak je znázorněno:

cd /usr/share/nginx/html/

Zálohujte soubor index.html

mv index.html index.html.bak

Dále vytvořte nový soubor index.html a vložte ukázkový obsah.

Pro webový server 1

echo "web-server-1. Hey ! This is your first web server" > index.html 

Pro webový server 2

echo "web-server-2. Hey ! This is your second web server" > index.html 

Dále spusťte Nginx na obou webových serverech a potvrďte, zda je služba spuštěna


systemctl start  nginx
systemctl status nginx

Testování vyvažování zátěže

Chcete-li ověřit, že vše proběhlo v pořádku, spusťte opakovaně následující příkaz.

curl 173.82.168.96

Váš výstup by měl být podobný tomuto.

Jak můžete pozorně pozorovat, s každým dalším spuštěním příkazu curl se výstup střídá mezi prvním a druhým obsahem webového serveru Perfektní!

Nyní zkusme testování pomocí webového prohlížeče.

https://load-balancer-IP-address

Tím se zobrazí obsah na kterémkoli z webových serverů, v tomto případě web-server-2.

Nyní zkuste obnovit jednou nebo dvakrát a výstup bude ukazovat na druhý webový server, v tomto případě web-server-1.

Úžasný! To potvrzuje, že náš nástroj pro vyrovnávání zatížení je schopen spravedlivě distribuovat požadavky HTTP mezi naše webové servery.

Chcete-li získat další statistiky prohlížeče pro vyrovnávání zatížení, přejděte na následující adresu URL

https://load-balancer-IP:8080/stats

Použijte Password123 jako uživatelské jméno a heslo, jak jsme definovali v haproxy.cfg konfigurační soubor.

Toto shrnuje tento návod, jak nastavit HAProxy load balancer pro Nginx na CentOS 7. Neváhejte to vyzkoušet a sdílejte tento návod na svých sociálních sítích. Jako vždy oceníme vaši zpětnou vazbu.


Linux
  1. Jak nastavit HAProxy v Ubuntu 16.04

  2. Jak nakonfigurovat HAProxy load balancer

  3. Jak nastavit NTP server v CentOS?

  1. Jak nakonfigurovat NGINX jako TCP/UDP Load Balancer v Linuxu

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

  3. Jak nastavit VSFTPD na CentOS 7.x?

  1. Jak nastavit HAProxy jako Load Balancer pro Nginx na CentOS 7

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

  3. Jak nastavit Nginx jako reverzní proxy pro Apache na Debianu 11