GNU/Linux >> Znalost Linux >  >> Ubuntu

Vyrovnávání zatížení webového serveru pomocí HAProxy na Ubuntu 14.04

Co je HAProxy?

HAProxy (High Availability Proxy) je open-source load-balancer, který dokáže vyvažovat zatížení libovolné TCP služby. HAProxy je bezplatné, velmi rychlé a spolehlivé řešení, které nabízí vyrovnávání zátěže, vysokou dostupnost a proxy pro aplikace založené na TCP a HTTP. Je zvláště vhodný pro webové stránky s velmi vysokou návštěvností a pohání mnoho z nejnavštěvovanějších na světě.

Od své existence se stal de-facto standardním open-source load-balancerem. I když se nepropaguje, ale je široce používán. Níže je základní schéma toho, jak nastavení vypadá:

Instalace HAProxy

Používám Ubuntu 14.04 a nainstaluji jej pomocí:

apt-get install haproxy

Verzi můžete zkontrolovat:

haproxy -v


Musíme povolit spuštění HAProxy init skriptem /etc/default/haproxy. Nastavte možnost POVOLENO na 1 jako:

ENABLED=1

Chcete-li ověřit, zda je tato změna provedena správně, spusťte iniciační skript HAProxy bez jakýchkoli parametrů. Měli byste vidět následující:

$ service haproxy 
reload   restart  start    status   stop

HAProxy je nyní nainstalován. Nyní vytvoříme nastavení, ve kterém máme 2 (dvě) instance webového serveru Apache a 1 (jednu) instanci HAProxy. Níže jsou informace o nastavení:

Budeme používat tři systémy, vytvořené virtuálně prostřednictvím VirtualBoxu:

Instance 1 – Load Balancer

Název hostitele:haproxy
OS:Ubuntu
Soukromá IP:192.168.205.15

Instance 2 – Web Server 1

Název hostitele:webser01
OS:Ubuntu s LAMP
Soukromá IP:192.168.205.16

Instance 2 – Web Server 2

Název hostitele:webserver02
OS:Ubuntu s LAMP
Soukromá IP:192.168.205.17

Zde je schéma, jak vypadá nastavení:

Nyní nakonfigurujeme HAProxy.

Konfigurace HAProxy

Zálohujte původní soubor jeho přejmenováním:

mv /etc/haproxy/haproxy.cfg{,.original}

Vytvoříme si vlastní soubor haproxy.cfg. Pomocí svého oblíbeného textového editoru vytvořte soubor /etc/haproxy/haproxy.cfg jako:

global log /dev/log local0 log 127.0.0.1 local1 notification maxconn 4096 user haproxy group haproxy daemondefaults log global mode http option httplog option dontlognull retries 3 option redispatch0 maxconn 2000 contimeout 5000 clitimeout sfartimeout 0.0listen webtimeout 5000. http statistiky povolit statistiky uri /haproxy?stats balance roundrobin option httpclose option forwardfor server webserver01 192.168.205.16:80 check server webserver02 192.168.205.17:80 check

Vysvětlení:

globální log /dev/log local0 log 127.0.0.1 local1 upozornění maxconn 4096 user haproxy group haproxy démon

Direktiva log zmiňuje server syslog, na který budou zasílány zprávy protokolu.
Direktiva maxconn určuje počet souběžných připojení na front-endu. Výchozí hodnota je 2000 a měla by být vyladěna podle konfigurace vašeho systému.
Direktivy user a group změní proces HAProxy na zadaného uživatele/skupinu. Ty by se neměly měnit.

výchozí log globální režim http volba httplog volba dontlognull opakování 3 volba redispatch maxconn 2000 contimeout 5000 clitimeout 50000 srvtimeout 50000

Výše uvedená část má výchozí hodnoty. Možnost redispatch umožňuje redistribuci relace v případě selhání připojení. Pokud tedy dojde k výpadku instance webového serveru, bude setrvání relace přepsáno.
Direktiva retries nastavuje počet opakování, která se mají provést na instanci webového serveru po selhání připojení.
Hodnoty, které je třeba upravit, jsou různé direktivy timeoutu. Volba contimeout určuje maximální dobu čekání na úspěšný pokus o připojení k instanci webového serveru.
clitimeout a srvtimeout se použijí, když se očekává, že klient nebo server potvrdí nebo odešle data během procesu TCP. HAProxy doporučuje nastavit časové limity klienta a serveru na stejnou hodnotu.

 

Výše uvedený blok obsahuje konfiguraci pro frontend i backend. Konfigurujeme HAProxy pro naslouchání na portu 80 pro webfarmu, což je pouze název pro identifikaci aplikace.
Direktivy statistik aktivují stránku statistik připojení. Tuto stránku lze zobrazit s adresou URL uvedenou ve statistice uri, takže v tomto případě je to http://192.168.205.15/haproxy?stats zde si můžete prohlédnout ukázku této stránky.
Direktiva balance specifikuje vyrovnávání zátěže algoritmus k použití. Dostupné možnosti algoritmu jsou:

  • Round Robin (roundrobin),
  • Statický Round Robin (static-rr),
  • Nejméně připojení (leastconn),
  • Zdroj (zdroj),
  • URI (uri) a
  • Parametr adresy URL (url_param).

Informace o každém algoritmu lze získat z oficiální dokumentace.

Direktiva serveru deklaruje backend server, syntaxe je:

server  [:port] [param*] 

Jméno, které zde zmíníme, se objeví v protokolech a upozorněních. Tato směrnice podporuje několik dalších parametrů a v tomto článku použijeme parametr kontroly. Možnost kontroly umožňuje kontroly stavu instance webového serveru, jinak je instance webového serveru ?vždy považována za dostupnou.

Po dokončení konfigurace spusťte službu HAProxy:

spuštění haproxy služby sudo

Testování vyrovnávání zátěže a převzetí služeb při selhání

Připojíme název serveru do výchozího souboru index.html, který se standardně nachází na adrese /var/www/index.html

Na Instance 2 – Web Server 1 (webserver01 s IP-192.168.205.16) připojte pod řádek jako:

sudo sh -c "echo \Název hostitele:webový server01 \(192.168.205.16\)\<\/h1\>>> /var/www/index.html"

Na Instance 3 – Web Server 2 (webserver02 s IP-192.168.205.17) připojte pod řádek jako:

sudo sh -c "echo \Název hostitele:webový server02 \(192.168.205.17\)\<\/h1\>>> /var/www/index.html"

Nyní otevřete webový prohlížeč na místním počítači a procházejte haproxy IP, tj. http://192.168.205.15

Pokaždé, když kartu obnovíte, uvidíte, že zátěž je distribuována na každý webový server. Níže je snímek obrazovky mého prohlížeče:

Poprvé, když navštívím http://192.168.205.15, dostanu:

A podruhé, tj. když stránku obnovím, dostanu:

Statistiky haproxy můžete také zkontrolovat na adrese http://192.168.205.15/haproxy?stats

S tímto nastavením můžete udělat více. Některé nápady zahrnují:

  • přepněte jeden nebo oba webové servery do režimu offline a otestujte, co se stane, když přistoupíte k HAProxy
  • nakonfigurujte HAProxy tak, aby poskytovala vlastní stránku údržby
  • nakonfigurujte webové rozhraní tak, abyste mohli vizuálně sledovat statistiky HAProxy
  • změňte plánovač na něco jiného než cyklické
  • nakonfigurujte priority/váhy pro konkrétní servery

To je vše!


Ubuntu
  1. Jak nainstalovat webový server Cherokee s PHP5 a MySQL na Ubuntu 11.04

  2. Nainstalujte webový server Apache na Ubuntu 12.10

  3. Nastavení webového serveru Ubuntu?

  1. Počáteční nastavení serveru s Ubuntu 14.04

  2. Jak nakonfigurovat HAProxy na serveru Debian 9 / Ubuntu 16.04

  3. Jak nainstalovat Caddy Web Server s PHP-FPM na Ubuntu 16.04

  1. Monitorování serveru pomocí Shinken na Ubuntu 16.04

  2. Monitorování serveru pomocí OpenNMS na Ubuntu 16.04

  3. Jak nainstalovat OpenLiteSpeed ​​Web Server na Ubuntu 20.04