Come Configurare NGINX per il Bilanciamento del Carico di Base

0
47
NGINX

NGINX è comunemente usato come un server web, ma anche di un grande lavoro di agire come un proxy inverso e di bilanciamento del carico—un dispositivo di rete progettato per gestire la maggior parte del suo traffico e indirizzare le richieste a più server web diversi.

Come NGINX Bilanciamento del Carico di Opere

Il principio di base di un sistema di Bilanciamento del Carico che si trova tra l’utente e un insieme di server e proxy richieste per loro. Di solito questo viene fatto con due o più server, in modo che il traffico può essere distribuito più facilmente tra loro.

La maggior parte della configurazione avviene in come NGINX di selezionare il server di percorso. L’impostazione di default è di round-robin, che invierà le richieste per ogni server in ordine, garantendo una distribuzione uniforme del carico.

Tuttavia, non è sempre semplice. Molte applicazioni web richiedono una qualche forma di persistenza della sessione, il che significa che l’utente deve accedere al server stesso per tutta la loro sessione. Per esempio, un carrello potrebbero essere memorizzati in locale sul server applicazioni, e se l’utente passa server a metà seduta, l’applicazione potrebbe glitch fuori. Naturalmente, molti di questi scenari possono essere risolti con una migliore infrastruttura di applicazione e la gestione centralizzata di archivi di dati, ma la durata della sessione è richiesto da molte persone.

In NGINX, l’insieme di server che il percorso è conosciuto come un monte, e si è configurato come un elenco numerato di indirizzi:

a monte di backend {
server backend1.example.com peso=5;
server backend2.example.com;
}

Questi upstream hanno un sacco di opzioni; qui, abbiamo fissato un peso, che darà la priorità a questo server, più spesso (particolarmente utile se si dispone di diverse dimensioni). È anche possibile impostare il max di connessioni simultanee e vari timeout. Se si utilizza NGINX Inoltre, è anche possibile impostare i controlli di salute in modo che le connessioni non vengono instradati al server danneggiati.

La forma di base della durata della sessione utilizza un IP hash. NGINX potrà utilizzare l’indirizzo IP per identificare gli utenti e quindi assicurarsi che questi non sono gli utenti a cambiare server a metà seduta:

a monte di backend {
ip_hash;
server backend1.example.com;
server backend2.example.com;
}

L’IP hash è necessario per socket basato su applicazioni e tutto ciò che richiede la persistenza. Se non si desidera utilizzare l’indirizzo IP, è possibile personalizzare questo hash:

a monte di backend {
hash $schema di$request_uri coerente;
server backend1.example.com;
server backend2.example.com;
}

Se non avete bisogno di qualsiasi tipo di persistenza della sessione, è possibile effettuare la selezione di round-robin un po ‘ più intelligente selezionando il server ha meno connessioni:

a monte di backend {
least_conn;
server backend1.example.com;
server backend2.example.com;
}

O, sulla base della quale si sta rispondendo più veloce:

a monte di backend {
least_time (intestazione | last_byte);
server backend1.example.com;
server backend2.example.com;
}

NGINX Plus ha un paio di altre forme di persistenza della sessione, ma IP di hashing di lavoro per la maggior parte delle applicazioni.

L’inoltro s Backend

Una volta che avete ottenuto il vostro backend configurato, è possibile inviare le richieste di dal di dentro la tua posizione blocchi, utilizzando proxy_pass con un URI per il backend.

server {
listen 80;
server_name example.com;
posizione / {
proxy_pass http://backend;
}
}

Naturalmente, se si sta utilizzando HTTPS, dovrai inviare la richiesta con HTTPS: / /

server {
listen 443 ssl;
server_name example.com;

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

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