Persistenza sessione load balancer
Utilizza la persistenza della sessione con un load balancer per indirizzare tutte le richieste provenienti da un singolo client logico a un singolo server Web backend.
La persistenza della sessione è un metodo per indirizzare tutte le richieste provenienti da un singolo client logico a un singolo server Web backend. I server backend che utilizzano l'inserimento nella cache per migliorare le prestazioni o per abilitare le sessioni di login o i carrelli, possono trarre vantaggio dalla persistenza delle sessioni.
La persistenza delle sessioni viene abilitata quando si crea un load balancer o quando si crea un set backend. È inoltre possibile modificare un set backend esistente per abilitare, disabilitare o modificare la configurazione di persistenza della sessione.
Cookie permanenti
Il servizio Load Balancer offre due configurazioni basate su cookie che si escludono a vicenda per abilitare la persistenza della sessione:
Persistenza della sessione basata sugli indirizzi IP
Alcuni prodotti offrono supporto per la persistenza della sessione senza cookie. Questi prodotti dipendono dall'indirizzo IP della richiesta in entrata. I proxy ISP e i gateway di uscita dell'azienda possono emettere molte richieste da un singolo indirizzo IP. In questo caso, un singolo server backend può essere soggetto a volumi di traffico elevati. La flotta backend può diventare sopraffatta, un server alla volta, anche se è possibile un bilanciamento del carico efficace.
Un'altra debolezza della persistenza della sessione basata sull'indirizzo IP è che l'indirizzo IP di origine può cambiare. In questo caso, la persistenza della sessione può andare persa o la richiesta viene reindirizzata al server backend errato.
Sticky cookie applicazione
Per configurare la persistenza della sessione cookie dell'applicazione, specificare un nome cookie e decidere se disabilitare il fallback per i server non disponibili.
Il servizio Load Balancer attiva la persistenza (aderenza) della sessione cookie dell'applicazione quando un server backend invia un'intestazione di risposta Set-Cookie
contenente un nome cookie riconosciuto. Il nome del cookie deve corrispondere al nome specificato nella configurazione del set backend. Se la configurazione specifica un pattern match-all, '*', qualsiasi cookie impostato dal server attiva la persistenza della sessione. A meno che un server backend non attivi la persistenza della sessione, il servizio segue il criterio di bilanciamento del carico specificato al momento della creazione del load balancer.
Requisiti:
- Il load balancer deve funzionare in modalità HTTP per supportare la persistenza delle sessioni lato server e basata sui cookie.
- Il computer client deve accettare i cookie affinché la funzione di persistenza della sessione del load balancer funzioni.
Il servizio Load Balancer calcola un hash del cookie configurato e di altri parametri di richiesta e invia tale valore al client in un cookie. Il valore memorizzato nel cookie consente al servizio di instradare le richieste client successive al server backend corretto. Se i server backend cambiano uno qualsiasi dei cookie definiti, il servizio ricompensa il valore del cookie e lo reinvia al client.
Si consiglia di considerare i dati dei cookie come entità opaca. Non utilizzarlo nelle applicazioni.
Il server backend può arrestare la persistenza dei cookie dell'applicazione eliminando il cookie di persistenza della sessione. Se hai utilizzato il pattern match-all, deve eliminare tutti i cookie. È possibile eliminare i cookie inviando un'intestazione di risposta Set-Cookie
con una data di scadenza passata. Il servizio Load Balancer instrada le richieste in seguito utilizzando il criterio di bilanciamento del carico configurato.
Adesione del cookie del load balancer
Quando configuri la persistenza dei cookie del load balancer, il load balancer inserisce un cookie nella risposta. I parametri configurati all'interno del cookie consentono la persistenza della sessione. Questo metodo è utile quando si dispone di applicazioni e servizi backend Web che non possono generare i propri cookie.
Per configurare la persistenza della sessione dei cookie del load balancer, specificare:
- Il nome del cookie.
Se non si specifica un nome cookie, il nome predefinito è
X-Oracle-BMC-LBS-Route
.Nota
Assicurarsi che il nome del cookie utilizzato nei server applicazioni backend sia diverso dal nome del cookie utilizzato nel load balancer. Per ridurre al minimo la possibilità di collisione del nome, si consiglia di utilizzare un prefisso comeX-Oracle-OCI-
.Se un server backend e il load balancer inseriscono cookie con lo stesso nome, il comportamento del client o del browser può variare a seconda del valore del dominio associato al cookie. Se i valori di nome e dominio dell'intestazione
Set-cookie
(generata da un server backend) e dell'intestazioneSet-cookie
(generata dal load balancer) sono uguali, il client o il browser li considera come un unico cookie. Il client restituisce solo uno dei valori dei cookie nelle richieste successive. Se entrambi i nomiSet-cookie
sono uguali, ma i nomi di dominio sono diversi, il client o il browser li tratta come due cookie diversi. - Dominio di validità del cookie. L'intestazione
Set-cookie
inserita dal load balancer contiene un attributo di dominio con il valore specificato.Questo attributo non ha un valore predefinito. Se non si specifica un valore, il load balancer non inserisce l'attributo del dominio nell'intestazione
Set-cookie
.Nota
- RFC 6265 - Meccanismo di gestione dello stato HTTP descrive il comportamento del client e del browser quando l'attributo del dominio è presente o non è presente nell'intestazione
Set-cookie
.Se il valore dell'attributo
Domain
èexample.com
nell'intestazioneSet-cookie
, il client include lo stesso cookie nell'intestazioneCookie
quando effettua richieste HTTP aexample.com
,www.example.com
ewww.abc.example.com
. Se l'attributoDomain
non è presente, il client restituisce il cookie solo per il dominio al quale è stata effettuata la richiesta originale. - Assicurarsi che questo attributo specifichi il valore di dominio corretto. Se l'attributo
Domain
nell'intestazioneSet-cookie
non include il dominio a cui è stata effettuata la richiesta originale, il client o il browser potrebbero rifiutare il cookie. Come specificato in RFC 6265, il client accetta un cookie con il valore di attributoDomain
example.com
owww.example.com
inviato dawww.example.com
. Non accetta un cookie con l'attributoDomain
abc.example.com
owww.abc.example.com
inviato dawww.example.com
.
- RFC 6265 - Meccanismo di gestione dello stato HTTP descrive il comportamento del client e del browser quando l'attributo del dominio è presente o non è presente nell'intestazione
- Il percorso URI in cui il cookie è valido. L'intestazione
Set-cookie
inserita dal load balancer contiene un attributoPath
con il valore specificato.I client includono il cookie in una richiesta HTTP solo se la parte del percorso di
request-uri
corrisponde o è una sottodirectory dell'attributoPath
del cookie.Il valore predefinito è `/`.
- La durata di validità del cookie. L'intestazione
Set-cookie
inserita dal load balancer contiene un attributoMax-Age
con il valore specificato.Il valore specificato deve essere di almeno un secondo. Non esiste alcun valore predefinito per questo attributo. Se non si specifica un valore, il load balancer non include l'attributo
Max-Age
nell'intestazioneSet-cookie
. Di solito, il client o il browser conserva il cookie fino al termine della sessione corrente, come definito dal client. - Indica se l'intestazione
Set-cookie
deve contenere l'attributoSecure
. L'attributoSecure
indica al client o al browser di inviare il cookie solo utilizzando un protocollo sicuro.Nota
Se si imposta questo campo su true, non è possibile associare il set backend corrispondente a un listener HTTP.
- Indica se l'intestazione
Set-cookie
deve contenere l'attributoHttpOnly
. L'attributoHttpOnly
limita l'ambito del cookie alle richieste HTTP. Questo attributo indica al client o al browser di omettere il cookie quando si fornisce l'accesso ai cookie tramite API non HTTP. Ad esempio, limita il cookie dai canali JavaScript. - Se disabilitare il fallback per i server non disponibili.
Le regole di instradamento percorso hanno la precedenza per decidere il server backend di destinazione. Il load balancer verifica che la persistenza della sessione sia abilitata per il server backend e che la configurazione dei cookie sia valida per la destinazione. Il sistema ignora i cookie non validi.
Fallback
Per impostazione predefinita, il servizio Load Balancer indirizza il traffico da un client di sessione persistente a un server backend diverso quando il server originale non è disponibile. È possibile configurare il set backend per disabilitare questo funzionamento di fallback. Quando si disabilita il fallback, il load balancer non soddisfa la richiesta e restituisce un codice HTTP 502. Il servizio continua a restituire un HTTP 502 fino a quando il client non presenta più un cookie di sessione persistente.
Se il fallback è disabilitato, i cookie con una data di scadenza futura lontana possono causare un'interruzione del client.
Il servizio Load Balancer considera disponibile un server contrassegnato come drain
per le sessioni persistenti esistenti. Le nuove richieste che non fanno parte di una sessione persistente esistente non vengono inviate a tale server.