Nginxi kasutamine HTTP koormuse tasakaalustajana Linuxis


Mitme rakendusserveri koondamise jaoks häälestamisel on koormuse tasakaalustamine tavaliselt kasutatav mehhanism sissetulevate teenusetaotluste või võrguliikluse tõhusaks jaotamiseks tagalaserverite rühmas.

Koormuse tasakaalustamisel on mitmeid eeliseid, sealhulgas rakenduste suurem kättesaadavus koondamise, suurema töökindluse ja mastaapsuse kaudu (liikluse suurenemisel saab segusse lisada rohkem servereid). See toob ka rakenduste parema jõudluse ja palju muid eeliseid.

Soovitatav lugemine: Nginxi veebiserveri turvalisuse, karastamise ja jõudluse parandamise ülim juhend

Nginxi saab juurutada tõhusa HTTP-koormuse tasakaalustajana sissetuleva võrguliikluse ja töökoormuse jaotamiseks rakendusserverite rühma vahel, tagastades igal juhul vastuse valitud serverilt sobivale kliendile.

Nginxi toetatavad koormuse tasakaalustamise meetodid on:

  • ring-robin - mis jaotab taotlusi rakendusserveritele ring-robin viisil. Seda kasutatakse vaikimisi, kui ühtegi meetodit pole määratud,
  • kõige vähem ühendatud - määrab järgmise päringu vähem hõivatud serverile (serverile, kus on kõige vähem aktiivseid ühendusi),
  • ip-hash - kus räsifunktsiooni kasutatakse kliendi IP-aadressi alusel järgmise päringu jaoks valitud serveri määramiseks. See meetod võimaldab seansi püsimist (seo klient kindla rakendusserveriga).

Pealegi saate Nginxi koormuse tasakaalustamise algoritmide kõrgemal tasemel mõjutamiseks kasutada serveri kaalu. Nginx toetab ka tervisekontrolli, et märkida server nurjunuks (seadistatava aja jooksul on vaikimisi 10 sekundit), kui selle vastus ebaõnnestub veaga, seega välditakse selle serveri valimist järgnevate sissetulevate päringute jaoks mõnda aega.

See praktiline juhend näitab, kuidas Nginxit kasutada HTTP koormuse tasakaalustajana sissetulevate klienditaotluste jagamiseks kahe serveri vahel, millel kõigil on sama rakenduse eksemplar.

Testimiseks on iga rakenduse eksemplar (kasutajaliidesel) märgistatud serverile, kus see töötab.

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

Igas rakendusserveris on iga rakenduse eksemplar konfigureeritud juurdepääsuks domeeni tecmintapp.lan abil. Eeldades, et see on täielikult registreeritud domeen, lisaksime DNS-i seadetesse järgmise.

A Record   		@   		192.168.58.7

See kirje ütleb kliendi päringutele, kuhu domeen peaks suunama, sel juhul koormuse tasakaalustajale (192.168.58.7). DNS-i kood A aktsepteerib ainult IPv4 väärtusi. Teise võimalusena saab klientarvutites olevat faili/etc/hosts kasutada ka testimiseks järgmise kirjega.

192.168.58.7  	tecmintapp.lan

Nginxi koormuse tasakaalustamise seadistamine Linuxis

Enne Nginxi koormuse tasakaalustamise seadistamist peate installima Nginxi oma serverisse, kasutades levitamise vaikepaketi haldurit, nagu näidatud.

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

Järgmisena looge serveri blokeerimisfail nimega /etc/nginx/conf.d/loadbalancer.conf (sisestage valitud nimi).

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

Seejärel kopeerige ja kleepige sinna järgmine konfiguratsioon. See konfiguratsioon on vaikimisi ring-robin, kuna koormuse tasakaalustamise meetodit pole määratletud.

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

Ülaltoodud konfiguratsioonis kasutatakse käsku proxy_pass (mis tuleks täpsustada asukoha sees, antud juhul /), et edastada taotlus HTTP-puhverserveritele, millele viidatakse, kasutades sõna backend, ülesvoolu direktiivis (kasutatakse serverirühma määratlemiseks). Samuti jaotatakse päringud serverite vahel kaalutud ümmarguse tasakaalustamise mehhanismi abil.

Vähima ühenduse mehhanismi kasutamiseks kasutage järgmist konfiguratsiooni

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

Ja seansi püsimehhanismi ip_hash lubamiseks kasutage järgmist:

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

Serveri kaalude abil saate mõjutada ka koormuse tasakaalustamise otsust. Järgmist konfiguratsiooni kasutades määratakse rakenduse serverile 192.168.58.5 4 taotlust ja 2 läheb 192.168.58.8, kui klientidelt on pärit kuus taotlust.

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

Salvestage fail ja väljuge sellest. Seejärel veenduge, et pärast viimaste muudatuste lisamist oleks Nginxi konfiguratsioonistruktuur õige, käivitades järgmise käsu.

$ sudo nginx -t

Kui konfiguratsioon on korras, taaskäivitage ja lubage Nginxi teenusel muudatused rakendada.

$ sudo systemctl restart nginx
$ sudo systemctl enable nginx

Nginxi koormuse tasakaalustamise testimine Linuxis

Nginxi koormuse tasakaalustamise testimiseks avage veebibrauser ja kasutage navigeerimiseks järgmist aadressi.

http://tecmintapp.lan

Kui veebisaidi liides on laaditud, võtke teadmiseks laaditud rakenduse eksemplar. Seejärel värskendage lehte pidevalt. Mingil hetkel peaks rakendus olema laaditud teisest serverist, mis näitab koormuse tasakaalustamist.

Olete just õppinud, kuidas Nginxit Linuxi HTTP-koormuse tasakaalustajana seadistada. Soovime teada saada teie mõtteid selle juhendi kohta ja eriti Nginxi kasutamise kohta koormuse tasakaalustajana allpool oleva tagasiside vormi kaudu. Lisateavet leiate Nginxi dokumentatsioonist Nginxi kasutamise kohta HTTP-koormuse tasakaalustajana.