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.