Otu esi eji Nginx dị ka HTTP Load Balancer na Linux


Mgbe a bịara n'ịhazi ọtụtụ sava ngwa maka redundancy, nguzozi ibu bụ usoro a na-ejikarị kesaa arịrịọ ọrụ na-abata ma ọ bụ okporo ụzọ netwọk n'ofe otu sava azụ azụ.

Idozi ibu ibu nwere ọtụtụ uru gụnyere mmụba ngwa ngwa site na redundancy, mmụba ntụkwasị obi na scalability (enwere ike ịgbakwunye sava ndị ọzọ na ngwakọta mgbe okporo ụzọ na-abawanye). Ọ na-ewetakwa arụmọrụ ngwa ka mma yana ọtụtụ uru ndị ọzọ.

Akwadoro Gụọ: Ntuziaka kacha mma maka nchekwa, sie ike na melite arụmọrụ nke sava weebụ Nginx

Enwere ike ibuga Nginx dị ka onye na-ahụ maka ibu HTTP na-arụ ọrụ nke ọma iji kesaa okporo ụzọ netwọk na-abata na ibu ọrụ n'etiti otu sava ngwa, n'ọnọdụ ọ bụla na-eweghachi nzaghachi site na ihe nkesa ahọrọ na onye ahịa kwesịrị ekwesị.

Ụzọ nhazi ibu nke Nginx kwadoro bụ:

  • round-robin - nke na-ekesa arịrịọ na sava ngwa n'ụdị ejiji okirikiri. A na-eji ya na ndabara mgbe enweghị usoro akọwapụtara,
  • njikọ kacha nta - na-ekenye arịrịọ na-esote na sava na-anaghị arụ ọrụ (ihe nkesa nwere ọnụ ọgụgụ kacha nta nke njikọ na-arụ ọrụ),
  • ip-hash - ebe a na-eji ọrụ hash chọpụta ihe nkesa kwesịrị ịhọrọ maka arịrịọ ọzọ dabere na adreesị IP onye ahịa. Usoro a na-enye ohere maka nnọgidesi ike nke oge (Tie onye ahịa na otu ihe nkesa ngwa).

E wezụga nke ahụ, ị nwere ike iji ihe nkesa dị arọ mee ka Nginx na-edozi algọridim n'ogo dị elu karị. Nginx na-akwado nyocha ahụike iji gosipụta ihe nkesa dị ka dara (maka oge nhazi, ndabara bụ 10 sekọnd) ma ọ bụrụ na nzaghachi ya daa na njehie, si otú a na-ezere iburu ihe nkesa ahụ maka arịrịọ mbata na-esote ruo oge ụfọdụ.

Ntuziaka a bara uru na-egosi otu esi eji Nginx dị ka ihe nkwụnye ụgwọ HTTP iji kesaa arịrịọ ndị ahịa na-abata n'etiti sava abụọ nke ọ bụla nwere ihe atụ nke otu ngwa ahụ.

Maka ebumnuche nnwale, a na-akpọ akara ngwa ọ bụla (na interface onye ọrụ) iji gosi ihe nkesa ọ na-arụ.

Load Balancer: 192.168.58.7
Application server 1: 192.168.58.5
Application server 2: 192.168.58.8

Na nkesa ngwa ọ bụla, a na-ahazi ihe atụ ngwa ọ bụla ka a na-enweta site na iji ngalaba tecmintapp.lan. Na-eche na nke a bụ ngalaba edebanye aha nke ọma, anyị ga-agbakwunye ihe ndị a na ntọala DNS.

A Record   		@   		192.168.58.7

Ihe ndekọ a na-agwa ndị ahịa arịrịọ ebe ngalaba kwesịrị iduzi na, na nke a, ibu balancer (192.168.58.7). Ihe ndekọ A DNS na-anabata naanị ụkpụrụ IPv4. N'aka nke ọzọ, faịlụ /etc/hosts na igwe ndị ahịa nwekwara ike iji maka ebumnuche nnwale, yana ntinye na-esonụ.

192.168.58.7  	tecmintapp.lan

Ịtọlite Nginx Load Balance na Linux

Tupu ịtọlite Nginx load balance, ị ga-etinyerịrị Nginx na sava gị site na iji njikwa ngwugwu ndabara maka nkesa gị dị ka egosiri.

$ sudo apt install nginx   [On Debian/Ubuntu]
$ sudo yum install nginx   [On CentOS/RHEL]   

Na-esote, mepụta faịlụ ngọngọ nkesa nke a na-akpọ /etc/nginx/conf.d/loadbalancer.conf(nye aha nke nhọrọ gị).

$ sudo vi /etc/nginx/conf.d/loadbalancer.conf

Wee detuo ma mado nhazi ndị a n'ime ya. Nhazi a na-adaba na gburugburu-robin ka akọwapụtaghị usoro nhazi ibu.

 
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;
	}
}

Na nhazi dị n'elu, a na-eji ntụziaka proxy_pass (nke a ga-akọwapụta n'ime ebe, / na nke a) iji nyefee arịrịọ na sava proxied HTTP zoro aka na iji backend okwu, na ntuziaka mgbago elu (eji kọwaa otu sava). Ọzọkwa, a ga-ekesa arịrịọ ndị ahụ n'etiti sava ndị ahụ site na iji usoro ngbanwe gburugburu robin dị arọ.

Iji were usoro njikọ kacha nta were, jiri nhazi nke a

upstream backend {
        least_conn;
        server 192.168.58.5;
        server 192.168.58.8;
    }

Na iji mee ka usoro nkwụsi ike nke oge ip_hash, jiri:

upstream backend {
	ip_hash;
        server 192.168.58.5;
        server 192.168.58.8;
    }

Ị nwekwara ike imetụta mkpebi ndozi ibu site na iji ihe nkesa ihe. Iji nhazi nke a, ọ bụrụ na ndị ahịa nwere arịrịọ isii, a ga-ekenye ihe nkesa ngwa 192.168.58.5 arịrịọ 4 na 2 ga-aga 192.168.58.8.

upstream backend {
        server 192.168.58.5	weight=4;
        server 192.168.58.8;
    }

Chekwaa faịlụ ahụ wee pụọ. Mgbe ahụ hụ na nhazi nhazi Nginx ziri ezi mgbe ị gbakwunyere mgbanwe ndị na-adịbeghị anya, site na ịme iwu na-esonụ.

$ sudo nginx -t

Ọ bụrụ na nhazi ahụ dị mma, malitegharịa ma mee ka ọrụ Nginx tinye mgbanwe ndị ahụ.

$ sudo systemctl restart nginx
$ sudo systemctl enable nginx

Na-anwale Nginx Load Bancing na Linux

Iji nwalee nguzozi ibu Nginx, mepee ihe nchọgharị weebụ wee jiri adreesị na-esonụ ka ịnyagharịa.

http://tecmintapp.lan

Ozugbo interface webụsaịtị ahụ buru ibu, rịba ama atụ ngwa nke ebugoro. Mgbe ahụ na-aga n'ihu na-emegharị ibe ahụ. N'oge ụfọdụ, ekwesịrị ibunye ngwa ahụ site na nkesa nke abụọ na-egosi nguzozi ibu.

Ị mụtala ka esi ahazi Nginx ka ọ bụrụ ihe nkwụnye ụgwọ HTTP na Linux. Anyị ga-achọ ịma echiche gị gbasara ntuziaka a, ọkachasị gbasara iji Nginx dị ka onye na-edozi ibu, site na ụdị nzaghachi dị n'okpuru. Maka ozi ndị ọzọ, hụ akwụkwọ Nginx gbasara iji Nginx dị ka ihe nkwụnye ibu HTTP.