Linux-da HTTP ýük balansy hökmünde Nginx-i nädip ulanmaly


Artykmaçlyk üçin birnäçe programma serwerini gurmak barada aýdylanda, ýük balansy gelýän hyzmat isleglerini ýa-da yzky serwerleriň toparynda tor trafigini netijeli paýlamak üçin giňden ulanylýan mehanizmdir.

Balük balansynyň artykmaçlygy, ygtybarlylygy we ulalmagy arkaly programmanyň elýeterliligini ýokarlandyrmak ýaly birnäçe artykmaçlygy bar (traffik köpelende garyndyda has köp serwer goşup bolýar). Şeýle hem, amaly öndürijiligi we başga-da köp peýdalary getirýär.

Maslahat berilýän oka: Nginx web serweriniň howpsuzlygyny üpjün etmek, berkitmek we öndürijiligini ýokarlandyrmak üçin iň soňky gollanma

Nginx, gelýän ulgam traffigini we iş ýüküni amaly serwerler toparynyň arasynda paýlamak üçin netijeli HTTP ýük balanseri hökmünde ýerleşdirilip bilner, her ýagdaýda saýlanan serwerden jogaby degişli müşderä gaýtaryp berer.

Nginx tarapyndan goldanýan ýük balans usullary:

  • tegelek robin - programma serwerlerine haýyşlary tegelek görnüşde paýlaýan. Hiç hili usul görkezilmedik ýagdaýynda ulanylýar,
  • iň az birikdirilen - indiki haýyşy az işleýän serwere (iň az işjeň birikdirilen serwer),
  • belleýär
  • ip-hash - müşderiniň IP adresi esasynda indiki haýyş üçin haýsy serweri saýlamalydygyny kesgitlemek üçin hash funksiýasy ulanylýar. Bu usul sessiýanyň dowam etmegine mümkinçilik berýär (müşderini belli bir programma serwerine baglaň).

Mundan başga-da, has ösen derejede Nginx ýük balans algoritmlerine täsir etmek üçin serwer agramlaryny ulanyp bilersiňiz. Şeýle hem, Nginx, eger jogap ýalňyşlygy bilen başa barmasa, serweri şowsuz diýip bellemek üçin saglyk barlaglaryny goldaýar (düzülip bilinjek wagt üçin, defolt 10 sekunt), şeýlelik bilen indiki gelýän haýyşlar üçin şol serweri saýlamakdan saklanýar.

Bu amaly gollanma, Nginx-i HTTP ýük balanseri hökmünde gelýän müşderileriň isleglerini iki serweriň arasynda paýlamak üçin nädip ulanmalydygyny görkezýär.

Synag maksatlary üçin, her bir amaly mysal işleýän serwerini görkezmek üçin (ulanyjy interfeýsinde) bellik edilýär.

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

Her bir programma serwerinde, her bir programma mysalyna tecmintapp.lan domenini ulanyp bolýar. Munuň doly hasaba alnan domen bolandygyny çaklasak, DNS sazlamalaryna aşakdakylary goşarys.

A Record   		@   		192.168.58.7

Bu ýazgy, domeniň nirä gönükdirilmelidigini, bu ýagdaýda ýük balanserine (192.168.58.7) müşderileriň haýyşlaryny aýdýar. DNS A ýazgylary diňe IPv4 bahalaryny kabul edýär. Ativea-da bolmasa, müşderi maşynlaryndaky/etc/host faýly aşakdaky ýazgy bilen synag maksatly hem ulanylyp bilner.

192.168.58.7  	tecmintapp.lan

Linux-da Nginx ýük balansyny düzmek

Nginx ýük balansyny gurmazdan ozal, görkezilişi ýaly paýlamak üçin deslapky paket dolandyryjysyny ulanyp, serweriňize Nginx gurmaly.

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

Ondan soň, /etc/nginx/conf.d/loadbalancer.conf atly serwer blok faýly dörediň (islän adyňyzy beriň).

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

Soňra aşakdaky konfigurasiýany göçürip göçüriň. Loadük deňagramlylygy usuly kesgitlenmändigi sebäpli bu konfigurasiýa tegelek robin görnüşinde ýerine ýetirilýär.

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

Aboveokardaky konfigurasiýada, proxy_pass direktiwasy (bu ýerde bir ýerde görkezilmeli, / bu ýagdaýda) salgylanylýan HTTP proksi serwerlerine haýyş ibermek üçin ulanylýar. “backend” sözi, ýokarky direktiwada (serwerleriň toparyny kesgitlemek üçin ulanylýar). Şeýle hem, haýyşlar serwerleriň arasynda agramly tegelek robin deňagramlylyk mehanizmini ulanyp paýlanar.

Iň az baglanyşyk mehanizmini ulanmak üçin aşakdaky konfigurasiýany ulanyň

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

ip_hash sessiýanyň dowamlylyk mehanizmini işletmek üçin ulanyň:

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

Şeýle hem serwer agramlaryny ulanyp, ýük balans kararyna täsir edip bilersiňiz. Aşakdaky konfigurasiýany ulanyp, müşderilerden alty haýyş bar bolsa, 192.168.58.5 programma serwerine 4 haýyş berler, 2-si 192.168.58.8.

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

Faýly ýazdyryň we çykyň. Soňra aşakdaky buýrugy işledip, soňky üýtgeşmeleri goşanyňyzdan soň Nginx konfigurasiýa gurluşynyň dogrudygyna göz ýetiriň.

$ sudo nginx -t

Sazlama gowy bolsa, üýtgetmeleri ulanmak üçin Nginx hyzmatyny täzeden açyň we işlediň.

$ sudo systemctl restart nginx
$ sudo systemctl enable nginx

Linux-da Nginx ýük balansyny barlamak

Nginx ýük balansyny barlamak üçin web brauzerini açyň we gezmek üçin aşakdaky adresi ulanyň.

http://tecmintapp.lan

Web sahypasynyň interfeýsi ýüklenenden soň, ýüklenen programma mysalyna üns beriň. Soňra sahypany yzygiderli täzeläň. Belli bir wagt, programma ýük balansyny görkezýän ikinji serwerden ýüklenmeli.

Nginx-i Linux-da HTTP ýük balanseri hökmünde nädip gurmalydygyny öwrendiňiz. Aşakdaky seslenme formasy arkaly bu gollanma, esasanam Nginx-ni ýük balansy hökmünde ulanmak baradaky pikirleriňizi bilmek isleýäris. Has giňişleýin maglumat üçin, Nginx-i HTTP ýük balanseri hökmünde ulanmak baradaky Nginx resminamalaryna serediň.