Sessioni permanenti per l'Application Load Balancer - Sistema di bilanciamento del carico elastico

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Sessioni permanenti per l'Application Load Balancer

Per impostazione predefinita, un Application Load Balancer instrada ogni richiesta in modo indipendente verso una destinazione registrata in base all'algoritmo di bilanciamento del carico scelto. Tuttavia, è possibile usare la funzionalità sessione permanente (nota anche come affinità di sessione), per consentire al sistema di bilanciamento del carico di associare una sessione utente a una destinazione specifica. Questo garantisce che durante la sessione tutte le richieste dell'utente vengano inviate alla stessa destinazione. Questa funzionalità è utile per i server che conservano le informazioni sullo stato per fornire un'esperienza continua ai client. Per usare le sessioni permanenti, i client devono supportare i cookie.

Gli Application Load Balancer supportano sia i cookie basati sulla durata che i cookie basati sull'applicazione. Le sessioni permanenti sono abilitate a livello di gruppo di destinazioni. È possibile utilizzare una combinazione di permanenza basata sulla durata, permanenza basata sull'applicazione e nessuna permanenza nei gruppi.

La chiave per la gestione delle sessioni permanenti consiste nel determinare per quanto tempo il sistema di bilanciamento del carico deve instradare costantemente la richiesta dell'utente verso la stessa destinazione. Se l'applicazione ha il proprio cookie di sessione, è possibile utilizzare la permanenza basata sull'applicazione e il cookie di sessione del sistema di bilanciamento del carico rispetta la durata specificata dal cookie di sessione dell'applicazione. Se l'applicazione non ha il proprio cookie di sessione, è possibile utilizzare la permanenza basata sulla durata per generare un cookie di sessione del sistema di bilanciamento del carico della durata specificata.

Il contenuto dei cookie generati dal sistema di bilanciamento del carico viene crittografato utilizzando una chiave di rotazione. Non è possibile decrittare o modificare i cookie generati dal sistema di bilanciamento del carico.

Per entrambi i tipi di permanenza, l'Application Load Balancer reimposta la scadenza dei cookie che genera dopo ogni richiesta. Se un cookie scade, la sessione non è più persistente e il client dovrebbe rimuovere il cookie dal rispettivo archivio.

Requisiti
  • Un load balancer HTTP/HTTPS.

  • Almeno un'istanza integra in ciascuna zona di disponibilità.

Considerazioni
  • Le sessioni permanenti non sono supportate se il bilanciamento del carico tra zone è disabilitato. Il tentativo di abilitare le sessioni permanenti quando il bilanciamento del carico tra zone è disabilitato non andrà a buon fine.

  • Per i cookie basati sulle applicazioni, i nomi dei cookie devono essere specificati individualmente per ogni gruppo di destinazioni. Al contrario, per i cookie basati sulla durata, AWSALB è l'unico nome utilizzato in tutti i gruppi di destinazioni.

  • Se si utilizzano più livelli per gli Application Load Balancer, è possibile abilitare le sessioni permanenti in tutti i livelli con i cookie basati sull'applicazione. Al contrario, con i cookie basati sulla durata, è possibile abilitare le sessioni permanenti solo in un livello, poiché AWSALB è l'unico nome disponibile.

  • La permanenza basata sull'applicazione non funziona con i gruppi di destinazioni ponderati.

  • Se si dispone di un'operazione di inoltro con più gruppi di destinazioni e le sessioni permanenti sono abilitate per uno o più gruppi di destinazioni, è necessario abilitare la persistenza a livello di gruppo di destinazioni.

  • WebSocket le connessioni sono intrinsecamente persistenti. Se il client richiede un aggiornamento della connessione a WebSockets, la destinazione che restituisce un codice di stato HTTP 101 per accettare l'aggiornamento della connessione è la destinazione utilizzata nella WebSockets connessione. Una volta completato l' WebSockets aggiornamento, la persistenza basata sui cookie non viene utilizzata.

  • Gli Application Load Balancer utilizzano l'attributo Expires nell'intestazione del cookie invece dell'attributo Max-Age.

  • Gli Application Load Balancer non supportano i valori dei cookie codificati con URL.

Persistenza basata sulla durata

La persistenza basata sulla durata instrada le richieste verso la stessa destinazione all'interno di un gruppo di destinazioni utilizzando un cookie generato dal sistema di bilanciamento del carico (AWSALB). Il cookie viene utilizzato per mappare la sessione verso la destinazione. Se l'applicazione non dispone del proprio cookie di sessione, è possibile specificare la durata della persistenza e gestire per quanto tempo il sistema di bilanciamento del carico dovrebbe instradare la richiesta dell'utente verso la stessa destinazione in modo sistematico.

Quando un sistema di bilanciamento del carico riceve per la prima volta una richiesta da un client, la instrada verso una destinazione (sulla base dell'algoritmo scelto) e genera un cookie chiamato AWSALB. Codifica le informazioni sulla destinazione selezionata, crittografa il cookie e lo include nella risposta al cliente. Il cookie generato dal sistema di bilanciamento del carico ha una scadenza di 7 giorni non configurabile.

Nelle richieste successive, il client deve includere il cookie AWSALB. Quando il sistema di bilanciamento del carico riceve una richiesta da un client che contiene il cookie, rileva e instrada la richiesta verso la stessa destinazione. Se il cookie è presente ma non può essere decodificato o se si riferisce a una destinazione di cui è stata annullata la registrazione o non integra, il sistema di bilanciamento del carico seleziona una nuova destinazione e aggiorna il cookie con le informazioni sulla nuova destinazione.

Per le richieste CORS (Cross-Origin Resource Sharing), alcuni browser richiedono l'attivazione della persistenza. SameSite=None; Secure Per supportare questi browser, il load balancer genera sempre un secondo cookie di adesivitàAWSALBCORS, che include le stesse informazioni del cookie di persistenza originale, oltre all'attributo. SameSite I client ricevono entrambi i cookie, incluse le richieste non CORS.

Per abilitare la persistenza basata sulla durata tramite la console
  1. Apri la console Amazon EC2 all'indirizzo https://console.aws.amazon.com/ec2/.

  2. Nel pannello di navigazione, in Bilanciamento del carico scegli Gruppi di destinazione.

  3. Scegli il nome del gruppo di destinazione per visualizzarne i dettagli.

  4. Nella scheda Dettagli del gruppo, all'interno della Attributi, scegli Modifica.

  5. Nella pagina Modifica attributi, procedere nel modo seguente:

    1. Seleziona Persistenza.

    2. Per Tipo di persistenza, seleziona Cookie generato dal sistema di bilanciamento del carico.

    3. Per Durata persistenza, specificare un valore compreso tra 1 secondo e 7 giorni.

    4. Seleziona Salvataggio delle modifiche.

Per abilitare la viscosità basata sulla durata utilizzando il AWS CLI

Utilizzate il modify-target-group-attributescomando con gli attributi and. stickiness.enabled stickiness.lb_cookie.duration_seconds

Utilizzare il seguente comando per abilitare la persistenza basata sulla durata.

aws elbv2 modify-target-group-attributes --target-group-arn ARN --attributes Key=stickiness.enabled,Value=true Key=stickiness.lb_cookie.duration_seconds,Value=time-in-seconds

L'output visualizzato dovrebbe essere simile al seguente esempio.

{ "Attributes": [ ... { "Key": "stickiness.enabled", "Value": "true" }, { "Key": "stickiness.lb_cookie.duration_seconds", "Value": "86500" }, ... ] }

Persistenza basata sull'applicazione

La persistenza basata sull'applicazione offre la flessibilità di impostare i propri criteri per la persistenza client-destinazione. Quando si abilita la persistenza basata sull'applicazione, il sistema di bilanciamento del carico instrada la prima richiesta verso una destinazione all'interno del gruppo di destinazioni sulla base dell'algoritmo scelto. La destinazione dovrebbe impostare un cookie dell'applicazione personalizzato che corrisponda al cookie configurato nel sistema di bilanciamento del carico per abilitare la persistenza. Questo cookie personalizzato può includere qualsiasi attributo di cookie richiesto dall'applicazione.

Quando l'Application Load Balancer riceve il cookie dell'applicazione personalizzato dalla destinazione, genera automaticamente un nuovo cookie dell'applicazione crittografato per acquisire informazioni sulla persistenza. Questo cookie dell'applicazione generato dal sistema di bilanciamento del carico acquisisce informazioni sulla persistenza per ogni gruppo di destinazioni che ha abilitato la persistenza basata sull'applicazione.

Il cookie dell'applicazione generato dal sistema di bilanciamento del carico non copia gli attributi del cookie personalizzato impostato dalla destinazione. Ha una scadenza di 7 giorni non configurabile. Nella risposta al client, l'Application Load Balancer valida solamente il nome con cui il cookie personalizzato è stato configurato a livello di gruppo di destinazioni e non il suo valore o attributo di scadenza. Finché il nome corrisponde, il sistema di bilanciamento del carico invia entrambi i cookie, quello personalizzato impostato dalla destinazione e quello dell'applicazione generato dal sistema di bilanciamento del carico in risposta al client.

Nelle richieste successive, i client devono restituire entrambi i cookie per mantenere la persistenza. Il sistema di bilanciamento del carico decritta il cookie dell'applicazione e verifica se la durata configurata della pertinenza è ancora valida. In seguito, utilizza le informazioni contenute nel cookie per inviare la richiesta alla stessa destinazione all'interno del gruppo di destinazioni per mantenere la pertinenza. Inoltre, il sistema di bilanciamento del carico delega il cookie dell'applicazione personalizzato alla destinazione senza ispezionarlo o modificarlo. Nelle risposte successive, la scadenza del cookie dell'applicazione generato dal sistema di bilanciamento del carico e la durata della persistenza configurata nel sistema di bilanciamento del carico vengono reimpostate. Per mantenere la persistenza tra client e target, la scadenza del cookie e la durata della persistenza non devono trascorrere.

Se una destinazione non va a buon fine o diventa non integra, il sistema di bilanciamento del carico interrompe l'instradamento delle richieste a quella destinazione e ne sceglie una nuova integra in base all'algoritmo di bilanciamento del carico esistente. Il sistema di bilanciamento del carico tratta la sessione come se fosse bloccata sulla nuova destinazione integra e continua a instradare le richieste verso la nuova destinazione integra, anche se quella non andata a buon fine ritorna.

Per abilitare la persistenza con le richieste cross-origin resource sharing (CORS), il sistema di bilanciamento del carico aggiunge gli attributi SameSite=None; Secure al cookie dell'applicazione generato dal sistema di bilanciamento del carico solo se la versione utente-agente è Chromium80 o superiore.

Poiché la maggior parte dei browser limita a 4 K le dimensioni dei cookie, il sistema di bilanciamento del carico suddivide ciascun cookie dell'applicazione superiore a 4 K in più cookie. Gli Application Load Balancer supportano cookie di dimensioni massime di 16 K, quindi possono creare fino a 4 partizioni che invia poi al client. Il nome del cookie dell'applicazione visualizzato dal client inizia con «AWSALBAPP-» e include un numero di frammento. Ad esempio, se la dimensione del cookie è 0-4K, il client vede -0. AWSALBAPP Se la dimensione del cookie è 4-8k, il client vede AWSALBAPP -0 e -1 e AWSALBAPP così via.

Per abilitare la persistenza basata sull'applicazione tramite la console
  1. Apri la console Amazon EC2 all'indirizzo https://console.aws.amazon.com/ec2/.

  2. Nel pannello di navigazione, in Bilanciamento del carico scegli Gruppi di destinazione.

  3. Scegli il nome del gruppo di destinazione per visualizzarne i dettagli.

  4. Nella scheda Dettagli del gruppo, all'interno della Attributi, scegli Modifica.

  5. Nella pagina Modifica attributi, procedere nel modo seguente:

    1. Seleziona Persistenza.

    2. Per Tipo di persistenza, seleziona Cookie basato sull'applicazione.

    3. Per Durata persistenza, specificare un valore compreso tra 1 secondo e 7 giorni.

    4. Per Nome del cookie dell'applicazione, inserisci un nome per il cookie basato sull'applicazione.

      Non utilizzare AWSALB, AWSALBAPP o AWSALBTG come nome del cookie, poiché il loro uso è riservato per il sistema di bilanciamento del carico.

    5. Seleziona Salvataggio delle modifiche.

Per abilitare la viscosità basata sull'applicazione utilizzando il AWS CLI

Utilizzate il modify-target-group-attributescomando con i seguenti attributi:

  • stickiness.enabled

  • stickiness.type

  • stickiness.app_cookie.cookie_name

  • stickiness.app_cookie.duration_seconds

Utilizzare il seguente comando per abilitare la persistenza basata sull'applicazione.

aws elbv2 modify-target-group-attributes --target-group-arn ARN --attributes Key=stickiness.enabled,Value=true Key=stickiness.type,Value=app_cookie Key=stickiness.app_cookie.cookie_name,Value=my-cookie-name Key=stickiness.app_cookie.duration_seconds,Value=time-in-seconds

L'output visualizzato dovrebbe essere simile al seguente esempio.

{ "Attributes": [ ... { "Key": "stickiness.enabled", "Value": "true" }, { "Key": "stickiness.app_cookie.cookie_name", "Value": "MyCookie" }, { "Key": "stickiness.type", "Value": "app_cookie" }, { "Key": "stickiness.app_cookie.duration_seconds", "Value": "86500" }, ... ] }
Ribilanciamento manuale

In caso di dimensionamento, se il numero di destinazioni aumenta considerevolmente, potrebbe potenzialmente verificarsi una distribuzione disomogenea del carico per via della persistenza. In questo scenario, è possibile ribilanciare il carico verso le destinazioni utilizzando le due opzioni seguenti:

  • Impostare una scadenza per il cookie generato dall'applicazione precedente alla data e ora attuali. Ciò impedirà ai client di inviare il cookie all'Application Load Balancer, che riavvierà il processo di definizione della persistenza.

  • Impostare una durata molto breve, ad esempio 1 secondo, nella configurazione della persistenza basata sull'applicazione del sistema di bilanciamento del carico. In questo modo, l'Application Load Balancer è costretto a ridefinire la persistenza anche se il cookie impostato dalla destinazione non è scaduto.