Kuinka käyttää Nginxiä HTTP-kuormituksen tasaajana Linuxissa


Kun on kyse useiden sovelluspalvelimien määrittämisestä redundanssia varten, kuormituksen tasapainottaminen on yleisesti käytetty mekanismi saapuvien palvelupyyntöjen tai verkkoliikenteen tehokkaaseen jakamiseen taustapalvelinten ryhmän kesken.

Kuormituksen tasapainottamisella on useita etuja, mukaan lukien lisääntynyt sovellusten saatavuus redundanssin, lisääntyneen luotettavuuden ja skaalautuvuuden avulla (lisää palvelimia voidaan lisätä sekoitukseen, kun liikenne kasvaa). Se myös parantaa sovellusten suorituskykyä ja monia muita etuja.

Suositeltava lukeminen: Lopullinen opas Nginx-verkkopalvelimen suojaamiseen, parantamiseen ja suorituskyvyn parantamiseen

Nginx voidaan ottaa käyttöön tehokkaana HTTP-kuormituksen tasapainottajana saapuvan verkkoliikenteen ja työmäärän jakamiseksi sovelluspalvelimien kesken palauttamalla kussakin tapauksessa vastaus valitulta palvelimelta oikealle asiakkaalle.

Nginx tukee kuormituksen tasapainottamismenetelmiä:

  • round-robin - joka jakaa pyyntöjä sovelluspalvelimille round-robin-tavalla. Sitä käytetään oletuksena, kun menetelmää ei ole määritetty,
  • vähiten kytketty - määrittää seuraavan pyynnön vähemmän varatulle palvelimelle (palvelimelle, jolla on vähiten aktiivisia yhteyksiä),
  • ip-hash - jossa hash-toimintoa käytetään määrittämään, mikä palvelin on valittava seuraavaa pyyntöä varten asiakkaan IP-osoitteen perusteella. Tämä menetelmä sallii istunnon pysyvyyden (sitoa asiakas tiettyyn sovelluspalvelimeen).

Lisäksi voit käyttää palvelimen painoja vaikuttaa Nginx-kuormituksen tasapainotusalgoritmeihin edistyneemmällä tasolla. Nginx tukee myös terveystarkastuksia palvelimen merkitsemiseksi epäonnistuneeksi (määritettävissä olevan ajan, oletus on 10 sekuntia), jos sen vastaus epäonnistuu virheellä, joten vältetään palvelimen valitseminen myöhemmille saapuville pyynnöille jonkin aikaa.

Tässä käytännön oppaassa kerrotaan, kuinka Nginxiä käytetään HTTP-kuormituksen tasapainottajana jakamaan saapuvat asiakaspyynnöt kahden palvelimen välillä, joista jokaisella on sama sovellus.

Testaustarkoituksiin jokainen sovellusinstanssi on merkitty (käyttöliittymässä) osoittamaan palvelinta, jolla se toimii.

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

Jokaisessa sovelluspalvelimessa kukin sovellusinstanssi on määritetty käytettäväksi verkkotunnuksella tecmintapp.lan . Olettaen, että tämä on täysin rekisteröity verkkotunnus, lisätään seuraava DNS-asetuksiin.

A Record   		@   		192.168.58.7

Tämä tietue kertoo asiakaspyynnöille, mihin toimialueen tulisi ohjata, tässä tapauksessa kuormituksen tasaajaan (192.168.58.7). DNS A -tietueet hyväksyvät vain IPv4-arvot. Vaihtoehtoisesti asiakaskoneiden tiedostoa/etc/hosts voidaan käyttää myös testaustarkoituksiin seuraavan merkinnän avulla.

192.168.58.7  	tecmintapp.lan

Nginx-kuormituksen tasaamisen määrittäminen Linuxissa

Ennen kuin asetat Nginx-kuormituksen tasapainottamisen, sinun on asennettava Nginx palvelimellesi käyttämällä jakelusi oletuspakettien hallintaa kuvan osoittamalla tavalla.

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

Luo seuraavaksi palvelinlohkotiedosto nimeltä /etc/nginx/conf.d/loadbalancer.conf (anna haluamasi nimi).

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

Kopioi ja liitä sitten seuraava kokoonpano siihen. Tämän kokoonpanon oletusarvo on kierros, koska kuormituksen tasapainotusmenetelmää ei ole määritelty.

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

Yllä olevassa kokoonpanossa proxy_pass -direktiiviä (joka tulisi määrittää sijainnin sisällä, tässä tapauksessa /) käytetään välittämään pyyntö HTTP-välityspalvelimille, joihin on viitattu sana backend, ylävirran direktiivissä (käytetään palvelinryhmän määrittelemiseen). Pyynnöt jaetaan myös palvelimien välillä käyttämällä painotettua kierrosta tasapainotusmekanismia.

Käytä seuraavaa kokoonpanoa käyttääksesi vähiten yhteysmekanismia

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

Ja ota ip_hash -istunnon pysyvyysmekanismi käyttöön käyttämällä:

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

Voit myös vaikuttaa kuormituksen tasapainottamiseen palvelimen painojen avulla. Seuraavia määrityksiä käyttämällä, jos asiakkailta on kuusi pyyntöä, sovelluspalvelimelle 192.168.58.5 määritetään 4 pyyntöä ja 2 siirtyy 192.168.58.8.

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

Tallenna tiedosto ja poistu siitä. Varmista sitten, että Nginx-kokoonpanorakenne on oikea viimeisimpien muutosten lisäämisen jälkeen suorittamalla seuraava komento.

$ sudo nginx -t

Jos kokoonpano on kunnossa, käynnistä se uudelleen ja ota Nginx-palvelu käyttöön muutokset.

$ sudo systemctl restart nginx
$ sudo systemctl enable nginx

Nginx-kuormituksen tasaamisen testaaminen Linuxissa

Voit testata Nginx-kuormituksen tasapainottamista avaamalla verkkoselaimen ja siirtymiseen seuraavalla osoitteella.

http://tecmintapp.lan

Kun verkkosivuston käyttöliittymä latautuu, ota huomioon ladattu sovellusinstanssi. Päivitä sitten sivu jatkuvasti. Jossain vaiheessa sovellus tulisi ladata toisesta palvelimesta, mikä osoittaa kuormituksen tasapainottamisen.

Olet juuri oppinut asettamaan Nginxin HTTP-kuormituksen tasapainottajaksi Linuxissa. Haluamme tietää ajatuksesi tästä oppaasta ja erityisesti Nginxin käytöstä kuormituksen tasapainottajana alla olevan palautelomakkeen kautta. Lisätietoja on Nginx-ohjeissa Nginxin käytöstä HTTP-kuormituksen tasapainottajana.