Het Configureren van NGINX voor Basic Load Balancing

0
39
NGINX

NGINX is vaak gebruikt als een web-server, maar het heeft ook een geweldige baan van handelen als een reverse-proxy en taakverdeling—een apparaat ontworpen om de bulk van uw verkeer en route verzoeken om verschillende web servers.

Hoe NGINX Load Balancing Werkt

Het basisprincipe van een Load Balancer is dat het ligt tussen de gebruiker en een set van servers en proxies aanvragen voor hen. Meestal wordt dit gedaan met twee of meer servers, zodat het verkeer kan worden verdeeld makkelijker tussen hen.

De meeste van de configuratie gebeurt in hoe NGINX selecteert de server om de route aan. De standaard is round-robin, die zal aanvragen verzenden naar elke server in orde, het verzekeren van een gelijke verdeling van de belasting.

Echter, het is niet altijd eenvoudig. Veel web-applicaties vereisen enige vorm van sessie doorzettingsvermogen, dat betekent dat de gebruiker moet de toegang tot de server voor hun gehele sessie. Bijvoorbeeld een winkelwagentje kan lokaal worden opgeslagen op een applicatie server, en als de gebruiker overschakelt servers in een sessie, de toepassing kan glitch uit. Natuurlijk, veel van deze scenario ‘ s kunnen worden verholpen met een betere toepassing van de infrastructuur en de gecentraliseerde datastores, maar sessie doorzettingsvermogen is vereist door veel mensen.

In NGINX, de servers die u route staat bekend als een upstream, en is geconfigureerd als een genummerde lijst van adressen:

upstream backend {
server backend1.example.com gewicht=5;
server backend2.example.com;
}

Deze stroomopwaarts zijn een heleboel opties; hier, we hebben een gewicht, dat zal de prioriteit van deze server vaker (vooral handig als u verschillende soorten en maten). U kunt ook instellen dat de max verbindingen en diverse time-outs. Als u gebruikmaakt van NGINX Plus, u kunt ook instellen dat de gezondheid controleert zodat de verbindingen niet geleid tot een ongezonde servers.

De meest elementaire vorm van sessie doorzettingsvermogen is het gebruik van een IP-hash. NGINX zal gebruik maken van de IP-gebruikers te identificeren en zorg ervoor dat deze gebruikers niet-schakelaar servers mid-session:

upstream backend {
ip_hash;
server backend1.example.com;
server backend2.example.com;
}

Het IP-hash is vereist voor socket-gebaseerde applicaties en alles wat eigen doorzettingsvermogen. Als u geen gebruik wilt maken van het IP-adres, kunt u deze hash:

upstream backend {
hash $regeling$request_uri consistent;
server backend1.example.com;
server backend2.example.com;
}

Indien u hoeft niet elke vorm van sessie persistentie, kunt u de round-robin selectie een beetje slimmer door het selecteren van die server heeft de minste aansluitingen:

upstream backend {
least_conn;
server backend1.example.com;
server backend2.example.com;
}

Of, op basis waarvan een is momenteel reageert het snelst:

upstream backend {
least_time (header | last_byte);
server backend1.example.com;
server backend2.example.com;
}

NGINX Plus nog een aantal andere vormen van sessie persistentie, maar het IP-hashing zal voor de meeste toepassingen.

Proxy ‘ s Backend

Als u eenmaal uw backend wordt geconfigureerd, kunt u het verzenden van aanvragen om het van binnen uw locatie blokken, met proxy_pass met een URI naar de backend.

server {
luister 80;
server_name example.com;
locatie / {
proxy_pass http://backend;
}
}

Natuurlijk, als je HTTPS gebruikt, moet u de aanvraag verzenden met HTTPS:

server {
luister 443 ssl;
server_name example.com;

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

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