Kif tuża Nginx bħala HTTP Load Balancer fil-Linux
Meta niġu għall-istabbiliment ta 'servers ta' applikazzjonijiet multipli għal redundancy, l-ibbilanċjar tat-tagħbija huwa mekkaniżmu użat komunement biex jitqassmu b'mod effiċjenti t-talbiet ta 'servizz deħlin jew it-traffiku tan-netwerk fuq grupp ta' servers back-end.
L-ibbilanċjar tat-tagħbija għandu diversi vantaġġi inkluż żieda fid-disponibbiltà tal-applikazzjoni permezz ta’ redundancy, affidabilità akbar u skalabbiltà (jistgħu jiżdiedu aktar servers fit-taħlita meta jiżdied it-traffiku). Iġġib ukoll prestazzjoni mtejba tal-applikazzjoni u ħafna benefiċċji oħra.
Aqra Rakkomandata: Il-Gwida Ultimate biex Tiżgura, Tibbies u Ttejjeb il-Prestazzjoni ta 'Nginx Web Server
Nginx jista 'jiġi skjerat bħala bilanċjar tat-tagħbija HTTP effiċjenti biex iqassam it-traffiku tan-netwerk deħlin u l-ammont ta' xogħol fost grupp ta 'servers tal-applikazzjoni, f'kull każ jirritorna r-rispons mis-server magħżul lill-klijent xieraq.
Il-metodi tal-ibbilanċjar tat-tagħbija appoġġjati minn Nginx huma:
- round-robin – li jqassam it-talbiet lis-servers tal-applikazzjoni b'mod round-robin. Jintuża awtomatikament meta l-ebda metodu ma jkun speċifikat,
- l-inqas konness – jassenja t-talba li jmiss lil server inqas okkupat (is-server bl-inqas numru ta' konnessjonijiet attivi),
- ip-hash – fejn tintuża funzjoni hash biex tiddetermina liema server għandu jintgħażel għat-talba li jmiss ibbażata fuq l-indirizz IP tal-klijent. Dan il-metodu jippermetti persistenza tas-sessjoni (jorbot klijent ma' server ta' applikazzjoni partikolari).
Barra minn hekk, tista 'tuża piżijiet tas-server biex tinfluwenza l-algoritmi tal-ibbilanċjar tat-tagħbija Nginx f'livell aktar avvanzat. Nginx jappoġġja wkoll kontrolli tas-saħħa biex jimmarka server bħala fallut (għal ammont ta 'żmien konfigurabbli, default huwa 10 sekondi) jekk ir-rispons tiegħu jonqos bi żball, u b'hekk jevita li jagħżel dak is-server għal talbiet sussegwenti deħlin għal xi żmien.
Din il-gwida prattika turi kif tuża Nginx bħala bilanċjar tat-tagħbija HTTP biex tqassam it-talbiet tal-klijenti deħlin bejn żewġ servers li kull wieħed ikollu istanza tal-istess applikazzjoni.
Għal skopijiet ta' ttestjar, kull istanza ta' applikazzjoni hija ttikkettjata (fuq l-interface tal-utent) biex tindika s-server li qed taħdem fuqu.
Load Balancer: 192.168.58.7 Application server 1: 192.168.58.5 Application server 2: 192.168.58.8
Fuq kull server tal-applikazzjoni, kull istanza tal-applikazzjoni hija kkonfigurata biex tiġi aċċessata bl-użu tad-dominju tecmintapp.lan
. Jekk nassumu li dan huwa dominju kompletament irreġistrat, inżidu dan li ġej fis-settings tad-DNS.
A Record @ 192.168.58.7
Dan ir-rekord jgħid lit-talbiet tal-klijenti fejn id-dominju għandu jidderieġi, f'dan il-każ, il-load balancer (192.168.58.7). Ir-rekords DNS A
jaċċettaw biss valuri IPv4. Alternattivament, il-fajl /etc/hosts fuq il-magni tal-klijenti jista 'jintuża wkoll għal skopijiet ta' ttestjar, bl-entrata li ġejja.
192.168.58.7 tecmintapp.lan
Twaqqif ta' Nginx Load Balancing f'Linux
Qabel ma twaqqaf l-ibbilanċjar tat-tagħbija Nginx, trid tinstalla Nginx fuq is-server tiegħek billi tuża l-maniġer tal-pakkett default għad-distribuzzjoni tiegħek kif muri.
$ sudo apt install nginx [On Debian/Ubuntu] $ sudo yum install nginx [On CentOS/RHEL]
Sussegwentement, oħloq fajl tal-blokk tas-server imsejjaħ /etc/nginx/conf.d/loadbalancer.conf
(agħti isem tal-għażla tiegħek).
$ sudo vi /etc/nginx/conf.d/loadbalancer.conf
Imbagħad kopja u waħħal il-konfigurazzjoni li ġejja fiha. Din il-konfigurazzjoni default għal round-robin peress li l-ebda metodu tal-ibbilanċjar tat-tagħbija mhu definit.
upstream backend { server 192.168.58.5; server 192.168.58.8; } server { listen 80 default_server; listen [::]:80 default_server; server_name tecmintapp.lan; location / { proxy_redirect off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_pass http://backend; } }
Fil-konfigurazzjoni ta’ hawn fuq, id-direttiva proxy_pass
(li għandha tiġi speċifikata ġewwa post, /
f’dan il-każ) tintuża biex tgħaddi talba lis-servers HTTP proxy referenzjati bl-użu tal- kelma backend, fid-direttiva upstream (użata biex jiddefinixxi grupp ta' servers). Ukoll, it-talbiet se jitqassmu bejn is-servers bl-użu ta 'mekkaniżmu ta' bilanċjar round-robin peżat.
Biex tuża l-inqas mekkaniżmu ta 'konnessjoni, uża l-konfigurazzjoni li ġejja
upstream backend { least_conn; server 192.168.58.5; server 192.168.58.8; }
U biex tattiva l-mekkaniżmu ta’ persistenza tas-sessjoni ip_hash
, uża:
upstream backend { ip_hash; server 192.168.58.5; server 192.168.58.8; }
Tista 'wkoll tinfluwenza d-deċiżjoni tal-ibbilanċjar tat-tagħbija billi tuża piżijiet tas-server. Bl-użu tal-konfigurazzjoni li ġejja, jekk ikun hemm sitt talbiet mill-klijenti, is-server tal-applikazzjoni 192.168.58.5 jiġi assenjat 4 talbiet u 2 se jmorru 192.168.58.8.
upstream backend { server 192.168.58.5 weight=4; server 192.168.58.8; }
Issejvja l-fajl u oħroġ minnu. Imbagħad kun żgur li l-istruttura tal-konfigurazzjoni Nginx hija korretta wara li żżid il-bidliet riċenti, billi tħaddem il-kmand li ġej.
$ sudo nginx -t
Jekk il-konfigurazzjoni hija OK, ibda mill-ġdid u ppermetti lis-servizz Nginx japplika l-bidliet.
$ sudo systemctl restart nginx $ sudo systemctl enable nginx
Ittestjar tal-Ibbilanċjar tat-Tagħbija Nginx f'Linux
Biex tittestja l-ibbilanċjar tat-tagħbija Nginx, iftaħ web browser u uża l-indirizz li ġej biex tinnaviga.
http://tecmintapp.lan
Ladarba l-interface tal-websajt titgħabba, ħu nota tal-istanza tal-applikazzjoni li tkun tagħbija. Imbagħad aġġorna kontinwament il-paġna. F'xi punt, l-app għandha titgħabba mit-tieni server li jindika l-ibbilanċjar tat-tagħbija.
Għadek kif tgħallimt kif twaqqaf Nginx bħala bilanċjar tat-tagħbija HTTP fil-Linux. Nixtiequ nkunu nafu l-ħsibijiet tiegħek dwar din il-gwida, u speċjalment dwar l-użu ta 'Nginx bħala load balancer, permezz tal-formola ta' feedback hawn taħt. Għal aktar informazzjoni, ara d-dokumentazzjoni ta 'Nginx dwar l-użu ta' Nginx bħala bilanċjar tat-tagħbija HTTP.