Hur att Konfigurera NGINX för Grundläggande lastbalansering

0
209
NGINX

NGINX är vanligen används som en webbserver, men det gör också ett bra jobb av att agera som en reverse proxy och lastbalanserare—en nätverksenhet som utformats för att hantera den största delen av din trafik och dirigerar förfrågningar till flera olika webbservrar.

Hur NGINX lastbalansering Fungerar

Den grundläggande principen för en lastbalanserare är att det sitter mellan användaren och en uppsättning av servrar, och ombud begär för dem. Oftast sker detta med två eller flera servrar, så att trafiken kan fördelas på ett mer enkelt mellan dem.

De flesta av konfigurationen sker i hur NGINX väljer vilken server för att dirigera till. Standard är round-robin, som kommer att skicka förfrågningar till varje server i syfte att säkerställa en jämlik fördelning av lasten.

Men det är inte alltid så enkelt. Många webbprogram som kräver någon form av session uthållighet, vilket innebär att användaren måste ha tillgång till samma server för hela sessionen. Till exempel, en kundvagn som kan lagras lokalt på en applikationsserver, och om användaren byter servrar mid-session, ansökan kan glitch ut. Naturligtvis, många av dessa scenarier kan vara fast med en bättre infrastruktur och centraliserade datastores, men session uthållighet som krävs av många människor.

I NGINX, den uppsättning av servrar som du väg till är känd som en uppströms, och är konfigurerad som en uppräknad lista över adresser:

uppströms backend {
server backend1.example.com vikt=5;
server backend2.example.com;
}

Dessa upp i älven har en hel del alternativ, här har vi satt en vikt, som kommer att prioritera detta server oftare (särskilt användbart om du har olika storlekar). Du kan också ställa in max antal anslutningar och flera olika tidsgränser. Om du använder NGINX Plus, du kan också ställa in hälsokontroller så att anslutningar inte får ledas till ohälsosamma servrar.

Den mest grundläggande formen av session uthållighet är att använda en IP-hash. NGINX kommer att använda IP för att identifiera användare och sedan se till att dessa användare inte byta servrar mid-session:

uppströms backend {
ip_hash;
server backend1.example.com;
server backend2.example.com;
}

IP-hash krävs för socket-baserade applikationer och något som kräver uthållighet. Om du inte vill använda den IP-adress som du kan anpassa denna hash:

uppströms backend {
hash $systemet$request_uri konsekvent.
server backend1.example.com;
server backend2.example.com;
}

Om du inte behöver någon typ av session uthållighet, kan du göra det round-robin val lite smartare genom att välja vilken server som har minst anslutningar:

uppströms backend {
least_conn;
server backend1.example.com;
server backend2.example.com;
}

Eller, på basis av vilka en är för närvarande att svara snabbast:

uppströms backend {
least_time (sidhuvud | last_byte);
server backend1.example.com;
server backend2.example.com;
}

NGINX Plus har några andra former av session uthållighet, men IP-hash kommer att fungera för de flesta applikationer.

Proxyfunktionen att s Backend

När du har fått din backend konfigurerad, kan du skicka förfrågningar till det från din plats block, med proxy_pass med en URI till backend.

servern {
lyssna 80;
servernamn example.com;
plats / {
proxy_pass http://backend;
}
}

Naturligtvis, om du använder HTTPS, du behöver skicka förfrågan med HTTPS:

servern {
lyssna 443 om ssl;
servernamn example.com;

ssl_certificate /etc/ssl/certs/server.crt;
ssl_certificate_key /etc/ssl/certs/server.nyckeln;
ssl_client_certificate /etc/ssl/certs/ca.crt;

plats /{
proxy_pass https://backend;
}
}