Wéi benotzen ech Nginx als HTTP Load Balancer a Linux


Wann et drëm geet Multiple Applikatiounsservere fir Redundanz opzestellen, ass d'Laaschtbalancéierung en allgemeng benotzte Mechanismus fir effizient erakommen Serviceufroen oder Netzwierkverkéier iwwer eng Grupp vu Back-End Serveren ze verdeelen.

Load Balancing huet verschidde Virdeeler, dorënner eng verstäerkte Applikatioun Disponibilitéit duerch Redundanz, erhéicht Zouverlässegkeet a Skalierbarkeet (méi Server kënnen am Mix bäigefüügt ginn wann de Traffic eropgeet). Et bréngt och eng verbessert Applikatiounsleistung a vill aner Virdeeler.

Recommandéiert Liesen: Den Ultimate Guide fir ze sécheren, härden a verbesseren d'Performance vum Nginx Web Server

Nginx kann als effizienten HTTP-Laaschtbalancer agesat ginn fir den erakommende Netzwierkverkéier an d'Aarbechtslaascht tëscht enger Grupp vun Applikatiounsserveren ze verdeelen, an all Fall d'Äntwert vum ausgewielten Server op de passenden Client zréckzeginn.

D'Laaschtbalancéierungsmethoden ënnerstëtzt vun Nginx sinn:

  • Ronn-Robin - déi Ufroen un d'Applikatiounsserver op eng Ronn-Robin Manéier verdeelt. Et gëtt als Standard benotzt wann keng Method uginn ass,
  • Minst verbonnen - gëtt déi nächst Ufro un e manner beschäftegten Server zou (de Server mat der mannsten Zuel vun aktive Verbindungen),
  • ip-hash - wou eng Hash Funktioun benotzt gëtt fir ze bestëmmen wat Server soll fir déi nächst Ufro ausgewielt ginn op Basis vun der IP Adress vum Client. Dës Method erlaabt Sessiounspersistenz (binde e Client un e bestëmmten Applikatiounsserver).

Ausserdeem kënnt Dir Servergewichte benotze fir Nginx Belaaschtungsalgorithmen op e méi fortgeschrattem Niveau ze beaflossen. Nginx ënnerstëtzt och Gesondheetschecken fir e Server als gescheitert ze markéieren (fir eng konfiguréierbar Zäit, Standard ass 10 Sekonnen) wann seng Äntwert mat engem Feeler feelt, vermeit also dee Server fir spéider erakommen Ufroe fir eng Zäit ze wielen.

Dëse praktesche Guide weist wéi Dir Nginx als HTTP-Laaschtbalancer benotzt fir opkommende Clientsufroen tëscht zwee Serveren ze verdeelen, déi all eng Instanz vun der selwechter Applikatioun hunn.

Fir Testzwecker gëtt all Applikatiounsinstanz markéiert (op der User-Interface) fir de Server unzeweisen op deem se leeft.

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

Op all Applikatiounsserver ass all Applikatiounsinstanz konfiguréiert fir Zougang mam Domain tecmintapp.lan ze benotzen. Unzehuelen datt dëst e komplett registréierten Domain ass, wäerte mir déi folgend an den DNS Astellungen derbäi.

A Record   		@   		192.168.58.7

Dëse Rekord erzielt Client Ufroe wou d'Domain an dësem Fall de Lastbalancer (192.168.58.7) soll riichten. DNS A records akzeptéieren nëmmen IPv4 Wäerter. Alternativ kann d'/etc/hosts Datei op de Client Maschinnen och fir Testzwecker benotzt ginn, mat der folgender Entrée.

192.168.58.7  	tecmintapp.lan

Nginx Load Balancing op Linux opsetzen

Ier Dir Nginx Laaschtbalancéierung opstellt, musst Dir Nginx op Ärem Server installéieren mat dem Standard Package Manager fir Är Verdeelung wéi gewisen.

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

Als nächst erstellt eng Serverblockdatei mam Numm /etc/nginx/conf.d/loadbalancer.conf (gitt en Numm vun Ärer Wiel).

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

Da kopéiert a paste déi folgend Konfiguratioun an et. Dës Konfiguratioun gëtt als Standard op Round-Robin gesat well keng Laaschtbalancéierungsmethod definéiert ass.

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

An der uewe genannter Konfiguratioun gëtt d'proxy_pass Direktiv (déi an enger Plaz spezifizéiert soll ginn, / an dësem Fall) benotzt fir eng Ufro un d'HTTP-Proxied-Server ze referenzéieren mat der Wuert Backend, an der Upstream Direktiv (benotzt fir eng Grupp vu Serveren ze definéieren). Och d'Ufroe ginn tëscht de Serveren mat engem gewiichtte Round-Robin Balancemechanismus verdeelt.

Fir de mannsten Verbindungsmechanismus ze benotzen, benotzt déi folgend Konfiguratioun

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

A fir ip_hash Sessiounspersistenzmechanismus z'aktivéieren, benotzt:

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

Dir kënnt och d'Laaschtbalancéierungsentscheedung beaflossen andeems Dir Servergewiicht benotzt. Mat der folgender Konfiguratioun, wann et sechs Ufroe vu Cliente gëtt, gëtt den Applikatiounsserver 192.168.58.5 4 Ufroen zougewisen an 2 ginn 192.168.58.8.

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

Späichert d'Datei a gitt se aus. Da gitt sécher datt d'Nginx Konfiguratiounsstruktur richteg ass nodeems Dir déi rezent Ännerungen bäigefüügt hutt, andeems Dir de folgende Kommando ausféiert.

$ sudo nginx -t

Wann d'Konfiguratioun OK ass, nei starten an den Nginx Service aktivéieren fir d'Ännerungen z'applizéieren.

$ sudo systemctl restart nginx
$ sudo systemctl enable nginx

Testen Nginx Load Balancing op Linux

Fir den Nginx Laaschtbalancéierung ze testen, öffnen e Webbrowser a benotzt déi folgend Adress fir ze navigéieren.

http://tecmintapp.lan

Wann d'Websäit Interface lued, notéiert d'Uwendungsinstanz déi gelueden ass. Dann dauernd d'Säit erfrëschen. Irgendwann soll d'App vum zweete Server gelueden ginn, wat d'Laaschtbalance ugeet.

Dir hutt just geléiert wéi Dir Nginx als HTTP-Laaschtbalancer op Linux opstellt. Mir wëllen Är Gedanken iwwer dëse Guide wëssen, a besonnesch iwwer d'Benotzung vun Nginx als Lastbalancer, iwwer de Feedbackformular hei drënner. Fir méi Informatioun, kuckt d'Nginx Dokumentatioun iwwer d'Benotzung vun Nginx als HTTP Lastbalancer.