Kā Nginx izmantot kā HTTP slodzes līdzsvarotāju Linux


Runājot par vairāku lietojumprogrammu serveru iestatīšanu atlaišanai, slodzes līdzsvarošana ir bieži izmantots mehānisms, lai efektīvi sadalītu ienākošo pakalpojumu pieprasījumus vai tīkla trafiku aizmugures serveru grupā.

Slodzes līdzsvarošanai ir vairākas priekšrocības, tostarp palielināta lietojumprogrammu pieejamība, izmantojot atlaišanu, palielināta uzticamība un mērogojamība (ja palielinās trafika, kombinācijā var pievienot vairāk serveru). Tas arī uzlabo lietojumprogrammas veiktspēju un daudzas citas priekšrocības.

Ieteicams izlasīt: Galvenais ceļvedis Nginx tīmekļa servera drošai, cietināšanai un veiktspējas uzlabošanai

Nginx var izvietot kā efektīvu HTTP slodzes līdzsvarotāju, lai izplatītu ienākošo tīkla trafiku un slodzi starp lietojumprogrammu serveru grupām, katrā gadījumā atbildi no atlasītā servera atdodot attiecīgajam klientam.

Nginx atbalstītās slodzes līdzsvarošanas metodes ir:

  • apļveida pārbaude - kas izplata pieprasījumus lietojumprogrammu serveriem pēc kārtas. Pēc noklusējuma to lieto, ja nav norādīta metode,
  • vismazāk savienots - piešķir nākamo pieprasījumu mazāk aizņemtam serverim (serverim ar vismazāko aktīvo savienojumu skaitu),
  • ip-hash - kur hash funkcija tiek izmantota, lai noteiktu, kurš serveris jāizvēlas nākamajam pieprasījumam, pamatojoties uz klienta IP adresi. Šī metode ļauj veikt sesijas noturību (piesaistiet klientu konkrētam lietojumprogrammu serverim).

Bez tam, jūs varat izmantot servera svaru, lai ietekmētu Nginx slodzes līdzsvarošanas algoritmus augstākā līmenī. Nginx atbalsta arī veselības pārbaudes, lai serveri atzīmētu kā neizdevušos (pēc konfigurējama laika, noklusējums ir 10 sekundes), ja tā atbilde neizdodas ar kļūdu, tādējādi izvairoties no šī servera izvēles nākamajiem ienākošajiem pieprasījumiem kādu laiku.

Šajā praktiskajā ceļvedī parādīts, kā Nginx izmantot kā HTTP slodzes līdzsvarotāju, lai izplatītu ienākošos klienta pieprasījumus starp diviem serveriem, kuriem katram ir vienas un tās pašas lietojumprogrammas gadījums.

Pārbaudes nolūkos katram lietojumprogrammas gadījumam (lietotāja saskarnē) ir etiķete, kas norāda serveri, kurā tas darbojas.

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

Katrā lietojumprogrammu serverī katra lietojumprogrammas instance ir konfigurēta piekļuvei, izmantojot domēnu tecmintapp.lan . Pieņemot, ka tas ir pilnībā reģistrēts domēns, mēs DNS iestatījumos pievienosim sekojošo.

A Record   		@   		192.168.58.7

Šis ieraksts klienta pieprasījumiem norāda, kur domēnam vajadzētu novirzīt šajā gadījumā uz slodzes līdzsvarotāju (192.168.58.7). DNS A ieraksti pieņem tikai IPv4 vērtības. Alternatīvi, klienta mašīnās esošo failu/etc/hosts var izmantot arī testēšanas vajadzībām ar šādu ierakstu.

192.168.58.7  	tecmintapp.lan

Nginx slodzes līdzsvarošanas iestatīšana Linux

Pirms Nginx slodzes līdzsvarošanas iestatīšanas Nginx ir jāinstalē serverī, izmantojot izplatīšanas noklusējuma pakotņu pārvaldnieku, kā parādīts.

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

Pēc tam izveidojiet servera bloka failu ar nosaukumu /etc/nginx/conf.d/loadbalancer.conf (norādiet izvēlēto vārdu).

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

Tad nokopējiet un ielīmējiet tajā šādu konfigurāciju. Šī konfigurācija pēc noklusējuma ir apļa pārbaude, jo nav definēta slodzes līdzsvarošanas metode.

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

Iepriekš minētajā konfigurācijā proxy_pass direktīva (kas jānorāda atrašanās vietas iekšienē, šajā gadījumā /) tiek izmantota, lai pārsūtītu pieprasījumu HTTP starpniekserveriem, uz kuriem ir atsauce, izmantojot vārds backend, augšupējā direktīvā (izmanto serveru grupas noteikšanai). Pieprasījumi tiks izplatīti arī starp serveriem, izmantojot svērto līdzsvarošanas mehānismu.

Lai izmantotu vismazāko savienojuma mehānismu, izmantojiet šādu konfigurāciju

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

Lai iespējotu sesijas noturības mehānismu ip_hash , izmantojiet:

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

Izmantojot servera svaru, jūs varat ietekmēt arī slodzes līdzsvarošanas lēmumu. Izmantojot šo konfigurāciju, ja klienti ir seši pieprasījumi, lietojumprogrammu serverim 192.168.58.5 tiks piešķirti 4 pieprasījumi, bet 2 - 192.168.58.8.

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

Saglabājiet failu un izejiet no tā. Pēc tam pēc pēdējo izmaiņu pievienošanas pārliecinieties, ka Nginx konfigurācijas struktūra ir pareiza, izpildot šādu komandu.

$ sudo nginx -t

Ja konfigurācija ir kārtībā, restartējiet un iespējojiet Nginx pakalpojumu, lai veiktu izmaiņas.

$ sudo systemctl restart nginx
$ sudo systemctl enable nginx

Nginx slodzes līdzsvarošanas pārbaude Linux

Lai pārbaudītu Nginx slodzes līdzsvarošanu, atveriet tīmekļa pārlūku un, lai pārvietotos, izmantojiet šo adresi.

http://tecmintapp.lan

Kad vietnes saskarne ir ielādēta, ņemiet vērā ielādēto lietojumprogrammas gadījumu. Pēc tam nepārtraukti atsvaidziniet lapu. Kādā brīdī lietotne ir jāielādē no otrā servera, norādot slodzes līdzsvarošanu.

Jūs tikko uzzinājāt, kā iestatīt Nginx kā HTTP slodzes līdzsvarotāju Linux. Mēs vēlētos uzzināt jūsu domas par šo rokasgrāmatu un jo īpaši par Nginx izmantošanu kā slodzes līdzsvarotāju, izmantojot zemāk esošo atsauksmju veidlapu. Lai iegūtu papildinformāciju, skatiet Nginx dokumentāciju par Nginx izmantošanu kā HTTP slodzes līdzsvarotāju.