Kaip naudoti „Nginx“ kaip HTTP apkrovos balansavimo priemonę „Linux“.


Kalbant apie kelių programų serverių atleidimą, apkrovos balansavimas yra dažniausiai naudojamas mechanizmas, skirtas efektyviai paskirstyti gaunamas paslaugų užklausas arba tinklo srautą tarp galinių serverių grupės.

Apkrovos balansavimas turi keletą privalumų, įskaitant didesnį programų prieinamumą dėl perteklinio pertekliaus, didesnį patikimumą ir mastelio keitimą (padidėjus srautui į rinkinį galima pridėti daugiau serverių). Tai taip pat pagerina programos našumą ir suteikia daug kitų privalumų.

Rekomenduojama skaityti: galutinis vadovas, kaip apsaugoti, sustiprinti ir pagerinti Nginx žiniatinklio serverio veikimą

Nginx gali būti įdiegtas kaip veiksmingas HTTP apkrovos balansavimo įrankis, skirtas paskirstyti gaunamą tinklo srautą ir darbo krūvį tarp programų serverių grupės, kiekvienu atveju grąžinant atsakymą iš pasirinkto serverio į tinkamas klientas.

Nginx palaikomi apkrovos balansavimo metodai yra šie:

  • Apklausa – paskirsto užklausas programų serveriams visapusiškai. Jis naudojamas pagal numatytuosius nustatymus, kai nenurodytas joks metodas,
  • mažiausiai prisijungęs – priskiria kitą užklausą mažiau užimtam serveriui (serveriui, turinčiam mažiausiai aktyvių ryšių),
  • ip-hash – kai maišos funkcija naudojama siekiant nustatyti, kuris serveris turi būti pasirinktas kitai užklausai pagal kliento IP adresą. Šis metodas leidžia išlaikyti sesiją (pririšti klientą prie tam tikro taikomųjų programų serverio).

Be to, galite naudoti serverio svarmenis, kad paveiktumėte Nginx apkrovos balansavimo algoritmus pažangesniu lygiu. Nginx taip pat palaiko būklės patikrinimus, kad serveris būtų pažymėtas kaip nepavykęs (konfigūruojamą laiką, numatytasis nustatymas yra 10 sekundžių), jei atsakymas nepavyksta dėl klaidos, todėl išvengiama serveris vėlesnėms įeinančioms užklausoms kurį laiką.

Šiame praktiniame vadove parodyta, kaip naudoti Nginx kaip HTTP apkrovos balansavimo priemonę, norint paskirstyti gaunamas klientų užklausas tarp dviejų serverių, kurių kiekviename yra tos pačios programos egzempliorius.

Testavimo tikslais kiekvienas programos egzempliorius yra pažymėtas (naudotojo sąsajoje), nurodant serverį, kuriame ji veikia.

Bandymo aplinkos sąranka

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

Kiekviename programų serveryje kiekvienas programos egzempliorius sukonfigūruotas taip, kad jį būtų galima pasiekti naudojant domeną tecmintapp.lan. Darant prielaidą, kad tai yra visiškai registruotas domenas, į DNS nustatymus įtrauktume šiuos dalykus.

A Record   		@   		192.168.58.7

Šis įrašas nurodo klientų užklausoms, kur domenas turi nukreipti, šiuo atveju į apkrovos balansavimo priemonę (192.168.58.7). DNS A įrašai priima tik IPv4 reikšmes. Arba /etc/hosts failas kliento kompiuteriuose taip pat gali būti naudojamas testavimo tikslais su tokiu įrašu.

192.168.58.7  	tecmintapp.lan

„Nginx“ apkrovos balansavimo nustatymas sistemoje „Linux“.

Prieš nustatydami Nginx apkrovos balansavimą, turite įdiegti Nginx savo serveryje naudodami numatytąją platinimo paketų tvarkyklę, kaip parodyta.

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

Tada sukurkite serverio bloko failą pavadinimu /etc/nginx/conf.d/loadbalancer.conf (suteikite savo pasirinktą pavadinimą).

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

Tada nukopijuokite ir įklijuokite į ją šią konfigūraciją. Pagal numatytuosius nustatymus ši konfigūracija yra apvali, nes nėra apibrėžtas apkrovos balansavimo metodas.

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

Aukščiau pateiktoje konfigūracijoje direktyva proxy_pass (kuri turėtų būti nurodyta vietoje, šiuo atveju /) naudojama užklausai perduoti HTTP tarpiniams serveriams, nurodytiems naudojant word backend pirminėje direktyvoje (naudojama serverių grupei apibrėžti). Be to, užklausos bus paskirstytos tarp serverių naudojant svertinį balansavimo mechanizmą.

Norėdami naudoti mažiausią ryšio mechanizmą, naudokite šią konfigūraciją

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

Ir norėdami įjungti ip_hash seanso išlikimo mechanizmą, naudokite:

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

Taip pat galite paveikti apkrovos balansavimo sprendimą naudodami serverio svorius. Naudojant toliau nurodytą konfigūraciją, jei yra šešios klientų užklausos, programų serveriui 192.168.58.5 bus priskirtos 4 užklausos, o 2 – 192.168.58.8.

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

Išsaugokite failą ir išeikite iš jo. Tada įsitikinkite, kad Nginx konfigūracijos struktūra yra teisinga pridėjus naujausius pakeitimus, vykdydami šią komandą.

sudo nginx -t

Jei konfigūracija tinkama, paleiskite iš naujo ir įgalinkite „Nginx“ paslaugą, kad pritaikytumėte pakeitimus.

sudo systemctl restart nginx
sudo systemctl enable nginx

„Nginx“ apkrovos balansavimo testavimas „Linux“.

Norėdami išbandyti Nginx apkrovos balansavimą, atidarykite žiniatinklio naršyklę ir naršydami naudokite šį adresą.

http://tecmintapp.lan

Kai įkeliama svetainės sąsaja, atkreipkite dėmesį į įkeltą programos egzempliorių. Tada nuolat atnaujinkite puslapį. Tam tikru momentu programa turėtų būti įkelta iš antrojo serverio, nurodant apkrovos balansavimą.

Ką tik išmokote nustatyti Nginx kaip HTTP apkrovos balansavimo priemonę sistemoje Linux. Norėtume sužinoti jūsų mintis apie šį vadovą, ypač apie Nginx naudojimą kaip apkrovos balansuotoją, naudodami toliau pateiktą atsiliepimų formą. Norėdami gauti daugiau informacijos, žr. Nginx dokumentaciją apie Nginx naudojimą kaip HTTP apkrovos balansavimo priemonę.