Load balancing con nginx: upstream, metodi e health check

Load balancing con nginx

Load balancer nginx: upstream, metodi, pesi, health check | We.Inc

Configura nginx come load balancer: il blocco upstream, round robin, least_conn, ip_hash e hash, pesi, max_fails e fail_timeout, server di backup, più un generatore di config.

Per bilanciare il carico con nginx, elenca i tuoi application server in un blocco upstream e punta proxy_pass al suo nome. Le richieste ruotano in round robin a meno che tu non aggiunga least_conn, ip_hash, hash o random. Ogni riga server può avere un weight, max_fails e fail_timeout per gli health check passivi, e i flag backup o down.

Metodi di load balancing di nginx

Distribuire il traffico su più copie di un'app è uno dei lavori più vecchi di nginx, e tutta la configurazione sta in una dozzina di righe. Il generatore qui sotto scrive il blocco upstream da un elenco di server, avvisa delle combinazioni che nginx rifiuta e mostra la quota di richieste di ogni server quando si applicano i pesi. Il riferimento che segue copre ogni parametro di server con il suo default.

Domande frequenti

nginx open source ha health check attivi?

No. La direttiva health_check appartiene alla versione commerciale NGINX Plus. nginx open source si basa su controlli passivi: se una richiesta a un server fallisce max_fails volte entro fail_timeout, il server viene saltato per fail_timeout e poi riprovato con traffico reale.

Quali sono i default di max_fails e fail_timeout?

max_fails vale 1 per default e fail_timeout 10 secondi. Un solo tentativo fallito quindi esclude un server per dieci secondi. Impostare max_fails=0 disattiva il conteggio per quel server.

Come rendo le sessioni sticky in nginx?

Usa ip_hash per tenere ogni indirizzo client su un solo server, oppure hash con una variabile cookie come $cookie_session per un controllo più fine. Le direttive sticky basate su cookie esistono solo nell'edizione commerciale.

Cosa fa il parametro weight?

Cambia quante richieste riceve un server rispetto agli altri. Con pesi 3, 1 e 1, in round robin il primo server riceve circa tre richieste su cinque. Il peso di default è 1.

nginx può bilanciare il carico delle connessioni WebSocket?

Sì. Punta proxy_pass all'upstream e inoltra gli header Upgrade e Connection. least_conn si adatta meglio del round robin ai socket di lunga durata, perché conta quante connessioni ha già ogni server.

Dove vanno i pezzi

Health check passivi, passo per passo

Parametri di server e relativi default

Parametri di una riga server dentro upstream

Esempi completi

Round robin con un server di riserva

Due primari si dividono il carico; il terzo risponde solo se entrambi sono fuori uso.

least_conn con connessioni riutilizzate

keepalive mantiene in cache le connessioni inattive verso i backend; le due righe proxy lo fanno funzionare.

Affinità di cache per URL

Ogni URL continua ad arrivare sullo stesso server di cache; consistent mantiene intatta la maggior parte delle associazioni quando aggiungi o togli un server.

Nome dell'upstream

Metodo

Round robin (default)

Chiave di hash

Connessioni keepalive inattive (0 per nessuna)

Server

Indirizzo e porta

Peso

fail_timeout (s)

Quota

Rimuovi server {n}

Aggiungi server

nginx rifiuta i server backup con hash, ip_hash e random. Togli il flag backup o cambia metodo.

Tutti i server primari sono marcati down, quindi nessuno può ricevere traffico.

Config

Inizia gratis · Nessuna carta di credito richiesta

Correlati: Guide

Prodotto

Per chi è

Funzionalità

Risorse

Azienda

Mappa del sito