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.