Configura le sticky session per il Classic 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à.

Configura le sticky session per il Classic Load Balancer

Per impostazione predefinita, un Classic Load Balancer esegue il routing di ogni richiesta in modo indipendente all'istanza registrata con il carico minore. Tuttavia, è possibile usare la caratteristica sticky session (nota anche come affinità di sessione), che consente al load balancer di associare una sessione utente a un'istanza specifica. Questo garantisce che durante la sessione tutte le richieste dell'utente vengano inviate alla stessa istanza.

La chiave per la gestione delle sticky session consiste nel determinare per quanto tempo il tuo load balancer deve instradare costantemente la richiesta dell'utente verso la stessa istanza. Se la tua applicazione ha il proprio cookie di sessione, puoi configurare Elastic Load Balancing in modo che il cookie della sessione rispetti la durata specificata dal cookie della sessione dell'applicazione. Se la tua applicazione non ha un proprio cookie di sessione, puoi configurare Elastic Load Balancing per creare un cookie della sessione specificando la durata della persistenza.

Elastic Load Balancing crea un cookie, denominato AWSELB, che viene utilizzato per mappare la sessione all'istanza.

Requisiti
  • Un sistema di HTTPS bilanciamento del caricoHTTP/.

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

Compatibilità
  • La proprietà RFC for the path di un cookie consente i caratteri di sottolineatura. Tuttavia, Elastic Load Balancing URI codifica i caratteri di sottolineatura %5F perché alcuni browser, come Internet Explorer 7, prevedono che i caratteri di sottolineatura vengano codificati come. URI %5F A causa del potenziale impatto sui browser attualmente funzionanti, Elastic Load Balancing continua a URI codificare i caratteri di sottolineatura. Ad esempio, se il cookie presenta la proprietà path=/my_path, Elastic Load Balancing modifica questa proprietà nella richiesta inoltrata a path=/my%5Fpath.

  • Non è possibile impostare il flag secure o HttpOnly sui cookie di persistenza della sessione basati sulla durata. Tuttavia, questi cookie non contengono informazioni sensibili. Tieni presente che se imposti il secure flag o il HttpOnly flag su un cookie di persistenza della sessione controllato dall'applicazione, questo viene impostato anche sul cookie. AWSELB

  • Se nel campo Set-Cookie di un cookie di applicazione è presente un punto e virgola finale, il load balancer ignora il cookie.

Persistenza della sessione basata sulla durata

Il load balancer utilizza un cookie speciale per tracciare l'istanza di ogni richiesta a ciascun listener. AWSELB Quando il load balancer riceve una richiesta, verifica innanzitutto se questo cookie è presente nella richiesta. In questo caso, la richiesta viene inviata all'istanza specificata nel cookie. Se non sono presenti cookie, il load balancer sceglie un'istanza in base all'algoritmo di bilanciamento del carico esistente. Viene inserito un cookie nella risposta per le richieste successive vincolanti dallo stesso utente a quell'istanza. La configurazione della policy di persistenza definisce la scadenza di un cookie, che stabilisce la durata della validità per ciascun cookie. Il load balancer non aggiorna il periodo di scadenza del cookie e non verifica se il cookie è scaduto prima di utilizzarlo. Una volta scaduto un cookie, la sessione non è più una sticky session. Il client deve rimuovere il cookie dal rispettivo archivio alla scadenza.

Con le richieste CORS (condivisione di risorse tra origini), alcuni browser richiedono di SameSite=None; Secure abilitare la persistenza. In questo caso, Elastic Load Balancing crea un secondo cookie di adesività AWSELBCORS, che include le stesse informazioni del cookie di adesività originale più questo attributo. SameSite I clienti ricevono entrambi i cookie.

Se un'istanza non riesce o diventa non integra, il load balancer interrompe il routing delle richieste a quell'istanza e sceglie una nuova istanza integra in base all'algoritmo del load balancer esistente. La richiesta viene instradata verso la nuova istanza, come se non vi fosse alcun cookie e la sessione non è più una sticky session.

Se un client passa a un listener con una porta di back-end diversa, la persistenza viene persa.

Per abilitare le sticky session basate sulla durata per un load balancer utilizzando la console
  1. Apri la EC2 console Amazon all'indirizzo https://console.aws.amazon.com/ec2/.

  2. Nel pannello di navigazione, sotto Bilanciamento del carico, scegli Sistemi di bilanciamento del carico.

  3. Scegli il nome del sistema di bilanciamento del carico per aprirne la pagina dei dettagli.

  4. Nella scheda Listener, scegli Gestisci ascoltatori.

  5. Nella pagina Gestisci ascoltatori, individua l'ascoltatore da aggiornare e scegli Modifica in Viscosità dei cookie.

  6. Nel pop-up Modifica l'impostazione della persistenza dei cookie, seleziona Generato dal bilanciamento del carico.

  7. (Facoltativo) Per Periodo di scadenza, digita il periodo di scadenza del cookie espresso in secondi. Se non si specifica un periodo di scadenza, la sticky session ha la stessa durata della sessione del browser.

  8. Scegli Salva modifiche per chiudere la finestra pop-up.

  9. Scegli Salva modifiche per tornare alla pagina dei dettagli del sistema di bilanciamento del carico.

Per abilitare le sticky session basate sulla durata per un load balancer utilizzando l AWS CLI
  1. Utilizza il seguente comando create-lb-cookie-stickiness-policy per creare una politica di persistenza dei cookie generata dal sistema di bilanciamento del carico con un periodo di scadenza dei cookie di 60 secondi:

    aws elb create-lb-cookie-stickiness-policy --load-balancer-name my-loadbalancer --policy-name my-duration-cookie-policy --cookie-expiration-period 60
  2. Utilizzate il seguente comando set-load-balancer-policies-of-listener per abilitare la persistenza della sessione per il sistema di bilanciamento del carico specificato:

    aws elb set-load-balancer-policies-of-listener --load-balancer-name my-loadbalancer --load-balancer-port 443 --policy-names my-duration-cookie-policy
    Nota

    Il comando set-load-balancer-policies-of-listener sostituisce il set di policy corrente associato alla porta del load balancer specificata. Ogni volta che si utilizza il comando, specificare l'opzione --policy-names per elencare tutte le policy da abilitare.

  3. (Facoltativo) Utilizzate il describe-load-balancerscomando seguente per verificare che la policy sia abilitata:

    aws elb describe-load-balancers --load-balancer-name my-loadbalancer

    La risposta include le seguenti informazioni, che mostrano che la policy è abilitata per il listener sulla porta specificata:

    { "LoadBalancerDescriptions": [ { ... "ListenerDescriptions": [ { "Listener": { "InstancePort": 443, "SSLCertificateId": "arn:aws:iam::123456789012:server-certificate/my-server-certificate", "LoadBalancerPort": 443, "Protocol": "HTTPS", "InstanceProtocol": "HTTPS" }, "PolicyNames": [ "my-duration-cookie-policy", "ELBSecurityPolicy-TLS-1-2-2017-01" ] }, ... ], ... "Policies": { "LBCookieStickinessPolicies": [ { "PolicyName": "my-duration-cookie-policy", "CookieExpirationPeriod": 60 } ], "AppCookieStickinessPolicies": [], "OtherPolicies": [ "ELBSecurityPolicy-TLS-1-2-2017-01" ] }, ... } ] }

Persistenza della sessione controllata dalle applicazioni

Il load balancer utilizza un cookie speciale per associare la sessione all'istanza che ha gestito la richiesta iniziale, ma segue il ciclo di vita del cookie dell'applicazione specificato nella configurazione della policy. Il load balancer inserisce solo un nuovo cookie di persistenza, se la risposta dell'applicazione include un nuovo cookie dell'applicazione. Il cookie di persistenza del load balancer non si aggiorna con ogni richiesta. Se il cookie dell'applicazione viene rimosso esplicitamente o scade, la sessione smette di essere un sticky session fino a quando non viene rilasciato un nuovo cookie dell'applicazione.

I seguenti attributi impostati dalle istanze back-end vengono inviati ai client nel cookie: path, port, domain, secure, httponly, discard, max-age, expires, version, comment, commenturl e samesite.

Se un'istanza non riesce o diventa non integra, il load balancer interrompe il routing delle richieste a quell'istanza e sceglie una nuova istanza integra in base all'algoritmo del load balancer esistente. Il load balancer tratta la sessione come bloccata sulla nuova istanza integra e continua a instradare le richieste verso quell'istanza, anche se l'istanza non riuscita torna indietro.

Per abilitare la persistenza della sessione controllata dall'applicazione utilizzando la console
  1. Apri la EC2 console Amazon all'indirizzo https://console.aws.amazon.com/ec2/.

  2. Nel pannello di navigazione, sotto Bilanciamento del carico, scegli Sistemi di bilanciamento del carico.

  3. Scegli il nome del sistema di bilanciamento del carico per aprirne la pagina dei dettagli.

  4. Nella scheda Listener, scegli Gestisci ascoltatori.

  5. Nella pagina Gestisci ascoltatori, individua l'ascoltatore da aggiornare e scegli Modifica in Viscosità dei cookie.

  6. Seleziona Generato dall'applicazione.

  7. Per Cookie Name (Nome cookie), digitare il nome del cookie dell'applicazione.

  8. Scegli Save changes (Salva modifiche).

Per abilitare la persistenza della sessione controllata dall'applicazione utilizzando il AWS CLI
  1. Utilizzate il seguente comando create-app-cookie-stickiness-policy per creare una politica di persistenza dei cookie generata dall'applicazione:

    aws elb create-app-cookie-stickiness-policy --load-balancer-name my-loadbalancer --policy-name my-app-cookie-policy --cookie-name my-app-cookie
  2. Utilizzate il seguente comando set-load-balancer-policies-of-listener per abilitare la persistenza della sessione per un sistema di bilanciamento del carico:

    aws elb set-load-balancer-policies-of-listener --load-balancer-name my-loadbalancer --load-balancer-port 443 --policy-names my-app-cookie-policy
    Nota

    Il comando set-load-balancer-policies-of-listener sostituisce il set di policy corrente associato alla porta del load balancer specificata. Ogni volta che si utilizza il comando, specificare l'opzione --policy-names per elencare tutte le policy da abilitare.

  3. (Facoltativo) Utilizzate il seguente describe-load-balancerscomando per verificare che la policy permanente sia abilitata:

    aws elb describe-load-balancers --load-balancer-name my-loadbalancer
  4. La risposta include le seguenti informazioni, che mostrano che la policy è abilitata per il listener sulla porta specificata:

    { "LoadBalancerDescriptions": [ { ... "ListenerDescriptions": [ { "Listener": { "InstancePort": 443, "SSLCertificateId": "arn:aws:iam::123456789012:server-certificate/my-server-certificate", "LoadBalancerPort": 443, "Protocol": "HTTPS", "InstanceProtocol": "HTTPS" }, "PolicyNames": [ "my-app-cookie-policy", "ELBSecurityPolicy-TLS-1-2-2017-01" ] }, { "Listener": { "InstancePort": 80, "LoadBalancerPort": 80, "Protocol": "TCP", "InstanceProtocol": "TCP" }, "PolicyNames": [] } ], ... "Policies": { "LBCookieStickinessPolicies": [], "AppCookieStickinessPolicies": [ { "PolicyName": "my-app-cookie-policy", "CookieName": "my-app-cookie" } ], "OtherPolicies": [ "ELBSecurityPolicy-TLS-1-2-2017-01" ] }, ... } ] }