GNU/Linux >> Znalost Linux >  >> Linux

Vyrovnávání zátěže pomocí HAProxy, Nginx a Keepalived v Linuxu

Správné nastavení nástroje pro vyrovnávání zatížení umožňuje vašemu webovému serveru hladce zpracovat vysoký provoz, aniž by se zhroutil.

Co je vyrovnávání zátěže?

Vyvažování zátěže je proces distribuce zátěže na více serverů. Je to jako rozdělovat pracovní zátěž mezi pracovníky na denní a noční směny ve firmě. Vyrovnávání zátěže zlepšuje spolehlivost serveru, protože překonává selhání jednoho bodu.

Níže je uveden příklad toho, jak vypadá server bez vyrovnávání zátěže.

V tomto příkladu, pokud dojde k výpadku webového serveru, nelze webový požadavek uživatele získat v reálném čase. Také pokud počet uživatelů požaduje stejnou webovou stránku současně, může být obsluhovaní webového požadavku uživatele jediným webovým serverem pomalým procesem. Proto se nástroje pro vyrovnávání zatížení používají ke zvýšení výkonu serveru, poskytování zálohy a předcházení selhání.

V tomto tutoriálu nastavíme nástroj pro vyrovnávání zatížení pro webový server pomocí Nginx, HAProxy a Keepalived.

Níže je uveden příklad toho, jak vypadají servery s nástroji pro vyrovnávání zatížení.

Co jsou tedy Nginx, Haproxy a Keepalived?

Nginx

Nginx, vyslovovaný jako Engine-x, je webový server s otevřeným zdrojovým kódem. Více než jen webový server může fungovat jako reverzní proxy server, poštovní proxy server, vyvažovač zátěže, odlehčený souborový server a HTTP cache. Nginx byl použit na mnoha populárních webech, jako je BitBucket, WordPress, Pinterest, Quora a GoDaddy.

HAProxy

HAProxy znamená High Availability Proxy. Jedná se o open source nástroj pro vyrovnávání zatížení, který poskytuje vyrovnávání zatížení, vysokou dostupnost a proxy řešení pro aplikace založené na TCP a HTTP. Nejlépe se hodí pro rozložení zátěže na více serverů pro zlepšení výkonu a spolehlivosti serverů.

Funkcí Haproxy je předat webový požadavek od koncového uživatele na jeden z dostupných webových serverů. Může používat různé algoritmy pro vyrovnávání zátěže, jako je Round Robin, Least Connections atd.

Keepalived

Co když selže HAProxy load balancer?

Keepalived je program s otevřeným zdrojovým kódem, který podporuje vyrovnávání zátěže a vysokou dostupnost. Je to v podstatě směrovací software a poskytuje dva typy vyvažování zátěže:

  • Vrstva 4 (přenosová vrstva)
  • Vrstva 7 (aplikační vrstva)

Keepalived může provádět následující funkce:

  • Kontrola stavu (zda jsou servery v provozu nebo ne)
  • Implementuje protokol VRRP (virtual redundancy routing protocol) pro zvládnutí převzetí služeb při selhání s vyvážením zatížení

Keepalived používá VIP (virtuální IP adresu) jako plovoucí IP, která se pohybuje mezi Master load balancerem a Backup load balancerem a používá se k přepínání mezi nimi. Pokud selže hlavní nástroj pro vyrovnávání zatížení, použije se k předání webového požadavku záložní nástroj pro vyrovnávání zatížení.

Pojďme k simulaci toho, jak je u webových serverů udržována vysoká dostupnost a vyrovnávání zátěže.

Nastavení nástroje pro vyrovnávání zatížení v Linuxu pomocí Nginx, HAProxy a Keepalived

Toto je experiment testovací laboratoře, což znamená, že je to pouze testovací nastavení, které vám pomůže začít. Možná budete muset provést nějaké vyladění, pokud jej implementujete na skutečných serverech. Použijte tento výukový program jako výukový materiál místo toho, abyste jej slepě následovali pro své vlastní nastavení.

V tomto tutoriálu jsem použil distribuci CentOS Linux. Můžete použít jiné distribuce Linuxu, ale nemohu zaručit, že všechny příkazy (zejména ty instalační) budou fungovat v jiných distribucích.

Požadavky na nastavení nástroje pro vyrovnávání zatížení

4 nainstalované systémy CentOS (pro tento tutoriál stačí minimální instalace)

  • 2 CentOS bude nastaven s nginx
  • 2 CentOS bude nastaven s HAProxy a Keepalived

V tomto tutoriálu jsme jako příklad pracovali na následujících IP adresách. Ty lze změnit podle vašeho systému. Nemyslete si, že se jedná o statické IP adresy.

Webové servery:

  • 10.13.211.169
  • 10.13.211.158

LoadBalancer:

  • 10.13.211.194
  • 10.13.211.120

Virtuální IP:

  • 10.13.211.10

IP adresu můžete snadno získat v příkazovém řádku Linuxu.

Krok 1:Nastavení webových serverů pomocí Nginx

V této části použijeme jako webový server dva systémy CentOS. Nejprve na ně musíme nainstalovat Nginx.

Za tímto účelem přidejte úložiště obsahující nginx a poté jej nainstalujte odtud:

yum install epel-release
yum install nginx

Po instalaci nginx spusťte službu Nginx:

systemctl start nginx

Povolte službu nginx i po každém spuštění:

systemctl enable nginx

Zkontrolujte stav služby nginx:

systemctl status nginx

Povolit webový provoz v nginx, který je ve výchozím nastavení blokován firewallem CentOS.

firewall-cmd --zone=public --permanent --add-service=http
firewall-cmd --zone=public --permanent --add-service=https
firewall-cmd –reload 

Opakujte výše uvedené kroky také na druhém webovém serveru CentOS.

Nyní věnujte pozornost dalším krokům.

Webové soubory pro nginx jsou umístěny v /usr/share/nginx/html Změňte obsah souboru index.html, abyste identifikovali webové servery.

Pro první webový server:

echo “this is first webserver” > /usr/share/nginx/html/index.html

Pro druhý webový server:

echo “this is second webserver” > /usr/share/nginx/html/index.html

POZNÁMKA:Pokud jste na virtuálním počítači, je lepší nainstalovat a nakonfigurovat Nginx na jeden systém a poté systém naklonovat. Poté můžete překonfigurovat na druhém systému. Šetří čas a chyby.

Nyní potvrďte stav webového serveru tím, že ve svém prohlížeči přejdete na následující adresu URL:http://SERVER_DOMAIN_NAME nebo Local_IP_Address. Příklad zde:

http://10.13.211.169

Nebo v terminálu stočte Local_IP_Address. Příklad zde:

curl 10.13.211.169

Dostanete výstup jako:

Krok 2:Nastavení vyrovnávání zátěže pomocí HAProxy

Na ostatních dvou systémech použijte k instalaci HAProxy následující příkazy:

yum -y update
yum -y install haproxy

Konfigurační soubor HAProxy se nachází v /etc/haproxy. Pomocí příkazu cd přejděte do adresáře a před úpravou soubor zazálohujte.

cd /etc/haproxy/
mv haproxy.cfg haproxy.cfg_bac

Vytvořte nový soubor haproxy.cfg a otevřete jej pomocí libovolného editoru.

touch haproxy.cfg
vim haproxy.cfg

Nyní do souboru vložte následující řádky:

global
   log /dev/log local0
   log /dev/log local1 notice
   chroot /var/lib/haproxy
   stats timeout 30s
   user haproxy
   group haproxy
   daemon
defaults
log global
mode http
option httplog
option dontlognull
timeout connect 5000
timeout client 50000
timeout server 50000

#frontend
#---------------------------------
frontend http_front
bind *:80
stats uri /haproxy?stats
default_backend http_back

#round robin balancing backend http
#-----------------------------------
backend http_back
balance roundrobin
#balance leastconn
mode http
server webserver1 10.13.211.169:80 check    # ip_address_of_1st_centos_webserver
server webserver2 10.13.211.158:80 check    # ip_address_of_2nd_centos_webserver

Nyní povolte a spusťte službu HAProxy.

systemctl enable haproxy
systemctl start haproxy

Zkontrolujte stav HAProxy:

systemctl status haproxy

Přejděte ve svém prohlížeči na adresu URL a potvrďte službu haproxy:http://IP adresa nástroje pro vyrovnávání zatížení/haproxy?stats. Příklad použitý zde:

http://10.13.211.194/haproxy?stats

nebo v terminálu použijte příkaz $ curl  LoadBalancer_IP_Address

curl 10.13.211.194
curl 10.13.211.194

stočte dvakrát a uvidíte různé výstupy příkazu curl. Je to proto, že odpověď přichází z různých webových serverů (po jednom) na váš požadavek v nástroji pro vyrovnávání zatížení.

Výstup by vypadal takto:

Krok 3:Nastavte vysokou dostupnost pomocí Keepalived

Keepalived musí být nainstalován do obou systémů CentOS s vyrovnávačem zátěže HAProxy (které jsme právě nakonfigurovali výše). Jeden funguje jako hlavní (hlavní load-balancer) a druhý funguje jako záložní load-balancer.

V obou systémech spusťte následující příkaz:

yum install -y keepalived

Konfigurační soubor Keepalived se nachází na adrese /etc/keepalived/keepalived.conf . Zálohujte původní soubor keepalived.conf a použijte následující konfiguraci v novém souboru keepalived .conf.

mv /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf_bac
touch /etc/keepalived/keepalived.conf
vim /etc/keepalived/keepalived.conf

Vložte následující řádky do konfiguračního souboru (nezapomeňte změnit e-mailové adresy):

global_defs {
notification_email {
linuxhandbook.com
[email protected]
}
notification_email_from [email protected]
smtp_server 10.13.211.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}

vrrp_instance VI_1 {
state MASTER
interface eth0 #put your interface name here. [to see interface name: $ ip a ]
virtual_router_id 51
priority 101 # 101 for master. 100 for backup. [priority of master> priority of backup]
advert_int 1
authentication {
auth_type PASS
auth_pass 1111 #password
}
virtual_ipaddress {
10.13.211.10 # use the virtual ip address. 
}
}

Poznámka:Virtuální adresy IP mohou být jakékoli živé adresy IP ve vaší síti. Téměř v rozsahu IP adresy Loadbalanceru. Zde jsou adresy IP nástroje pro vyrovnávání zatížení:10.13.211.194 &10.13.211.120 a VIP je 10.13.211.10

Upravte konfigurační soubor podle systémových předpokladů. Dávejte pozor na hlavní a záložní konfiguraci. Uložte soubor a spusťte a povolte proces Keepalived:

systemctl start keepalived
systemctl enable keepalived

Chcete-li zobrazit stav Keepalived:

systemctl status keepalived

Poznámka:Pokud jste na virtuálním počítači, je lepší nainstalovat a nakonfigurovat Haproxy a Keepalived na jeden systém a poté systém naklonovat. Poté můžete překonfigurovat na druhém systému. Šetří čas a chyby.

Chcete-li nyní zkontrolovat stav svého vysoce dostupného nástroje pro vyrovnávání zatížení, přejděte na terminál a stiskněte:

$ while true; do ; curl 10.13.211.10 ; sleep 1; done;

Stiskněte ctrl+c zastavit běh terminálu.

Výstup bude vypadat takto:

Pokud se při instalaci a konfiguraci souborů necítíte dobře, stáhněte si skripty z mého úložiště GitHub a jednoduše je spusťte.

Doufám, že vám tento tutoriál pomohl nastavit load balancer v Linuxu s vysokou dostupností. Bylo to samozřejmě jednoduché nastavení, ale rozhodně poskytuje představu o vyrovnávání zátěže a manipulaci s vysokou dostupností.

Máte-li dotazy nebo návrhy, zanechte níže komentář.

Autor :Rishi Raj Gautam je milovník Linuxu a aktivista open-source.


Linux
  1. Jak nainstalovat webový server Nginx na Linux

  2. Vyvažování bezpečnosti Linuxu a použitelnosti

  3. Nginx vyrovnávání zátěže

  1. Upravujte text v Linuxu pomocí KWrite a Kate

  2. Přizpůsobení mého linuxového terminálu pomocí tmux a Git

  3. Správa procesů na Linuxu pomocí kill and killall

  1. Použití HAProxy pro vyrovnávání zátěže na cloudu E2E:Lepkavost a zabezpečení relace

  2. Jak zpevnit a zabezpečit webový server NGINX v Linuxu

  3. Jak nastavit vysoce dostupný NGINX s KeepAlived v Linuxu