Weboldal keresés

Az Nginx használata HTTP terheléselosztóként Linux alatt


Ha több alkalmazásszerver redundanciához való beállításáról van szó, a terheléselosztás egy gyakran használt mechanizmus a bejövő szolgáltatáskérések vagy a hálózati forgalom hatékony elosztására a háttérkiszolgálók csoportja között.

A terheléselosztásnak számos előnye van, beleértve a redundancia révén megnövekedett alkalmazások rendelkezésre állását, a megnövekedett megbízhatóságot és skálázhatóságot (a forgalom növekedésével több szerver is hozzáadható a keverékhez). Ezenkívül javítja az alkalmazások teljesítményét, és számos egyéb előnnyel jár.

Ajánlott olvasmány: Végső útmutató az Nginx webszerver biztonságos, megerősített és teljesítményének javításához

Az Nginx hatékony HTTP terheléselosztóként telepíthető a bejövő hálózati forgalom és a munkaterhelés elosztására az alkalmazáskiszolgálók csoportja között, minden esetben visszaküldve a választ a kiválasztott szerverről a megfelelő ügyfél.

Az Nginx által támogatott terheléselosztási módszerek a következők:

  • round-robin – amely körbefutó módon osztja el a kéréseket az alkalmazásszerverekhez. Alapértelmezés szerint akkor használatos, ha nincs megadva metódus,
  • legkevésbé csatlakozott – a következő kérést egy kevésbé elfoglalt szerverhez rendeli (a legkevesebb aktív kapcsolattal rendelkező szerverhez),
  • ip-hash – ahol egy hash függvényt használnak annak meghatározására, hogy melyik szervert válasszuk ki a következő kéréshez az ügyfél IP-címe alapján. Ez a módszer lehetővé teszi a munkamenet fennmaradását (ügyfelet egy adott alkalmazáskiszolgálóhoz köt).

Emellett a kiszolgáló súlyozását is használhatja az Nginx terheléselosztási algoritmusok fejlettebb szintű befolyásolására. Az Nginx támogatja az állapotellenőrzéseket is a szerver meghibásodásának megjelölésére (konfigurálható ideig az alapértelmezett 10 másodperc), ha a válasz hibásan meghiúsul, így elkerülhető szervert a későbbi bejövő kérésekhez egy ideig.

Ez a gyakorlati útmutató bemutatja, hogyan használhatja az Nginxet HTTP terheléselosztóként a bejövő klienskérelmek elosztására két olyan szerver között, amelyek mindegyike ugyanazt az alkalmazást tartalmazza.

Tesztelési célból minden alkalmazáspéldány felcímkézve van (a felhasználói felületen), jelezve, hogy melyik kiszolgálón fut.

Tesztkörnyezet beállítás

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

Minden alkalmazáskiszolgálón minden alkalmazáspéldány úgy van beállítva, hogy a tecmintapp.lan tartomány használatával legyen elérhető. Feltételezve, hogy ez egy teljesen regisztrált tartomány, a következőt adjuk hozzá a DNS-beállításokhoz.

A Record   		@   		192.168.58.7

Ez a rekord közli az ügyfélkérelmekkel, hogy a tartománynak hova kell irányítania, ebben az esetben a terheléselosztóhoz (192.168.58.7). A DNS A rekordjai csak IPv4 értékeket fogadnak el. Alternatív megoldásként az ügyfélgépeken található /etc/hosts fájl is használható tesztelési célokra, a következő bejegyzéssel.

192.168.58.7  	tecmintapp.lan

Az Nginx terheléselosztás beállítása Linuxban

Az Nginx terheléselosztás beállítása előtt telepítenie kell az Nginxet a szerverére a disztribúció alapértelmezett csomagkezelőjének használatával, az ábrán látható módon.

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

Ezután hozzon létre egy /etc/nginx/conf.d/loadbalancer.conf nevű szerverblokk fájlt (adjon meg egy tetszőleges nevet).

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

Ezután másolja és illessze be a következő konfigurációt. Ez a konfiguráció alapértelmezés szerint körbejárt, mivel nincs terheléselosztási módszer meghatározva.

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

A fenti konfigurációban a proxy_pass direktíva (amelyet egy helyen belül kell megadni, ebben az esetben a /) arra szolgál, hogy egy kérést továbbítson a HTTP-proxykiszolgálóknak, amelyekre a word backend, a felfelé irányuló direktívában (a kiszolgálók egy csoportjának meghatározására szolgál). Ezenkívül a kéréseket súlyozott kör-robin kiegyenlítő mechanizmus segítségével osztják el a szerverek között.

A legkevesebb csatlakozási mechanizmus használatához használja a következő konfigurációt

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

Az ip_hash munkamenet-megtartó mechanizmus engedélyezéséhez használja a következőket:

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

A terheléselosztási döntést a szerver súlyozásával is befolyásolhatja. A következő konfigurációt használva, ha hat kérés érkezik az ügyfelektől, a 192.168.58.5 alkalmazáskiszolgálóhoz 4 kérés lesz hozzárendelve, 2 pedig 192.168.58.8.

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

Mentse el a fájlt és lépjen ki belőle. Ezután győződjön meg arról, hogy az Nginx konfigurációs szerkezete helyes a legutóbbi módosítások hozzáadása után a következő parancs futtatásával.

sudo nginx -t

Ha a konfiguráció rendben van, indítsa újra, és engedélyezze az Nginx szolgáltatást a módosítások alkalmazásához.

sudo systemctl restart nginx
sudo systemctl enable nginx

Az Nginx terheléselosztás tesztelése Linux alatt

Az Nginx terheléselosztás teszteléséhez nyisson meg egy webböngészőt, és használja a következő címet a navigációhoz.

http://tecmintapp.lan

A webhely felületének betöltése után vegye figyelembe a betöltött alkalmazáspéldányt. Ezután folyamatosan frissítse az oldalt. Valamikor az alkalmazást a második szerverről kell betölteni, jelezve a terheléselosztást.

Most tanulta meg, hogyan állíthatja be az Nginxet HTTP terheléselosztóként Linux alatt. Szeretnénk tudni az Ön véleményét erről az útmutatóról, és különösen az Nginx terheléselosztóként való alkalmazásáról az alábbi visszajelzési űrlapon keresztül. További információkért tekintse meg az Nginx dokumentációját az Nginx HTTP terheléselosztóként való használatáról.