HA e scalabilità automatica per le applicazioni ASP.NET Web Forms su AWS - AWS Guida prescrittiva

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à.

HA e scalabilità automatica per le applicazioni ASP.NET Web Forms su AWS

Quando si esegue la migrazione delle applicazioni ASP.NET Web Forms legacy a AWS, il raggiungimento di un'elevata disponibilità è un aspetto fondamentale. Puoi utilizzare i gruppi e i sistemi di bilanciamento del carico di Amazon EC2 Auto Scaling per distribuire il traffico su più istanze. EC2 Tuttavia, molte applicazioni ASP.NET Web Forms fanno molto affidamento sullo stato della sessione, il che le rende intrinsecamente dotate di stato. Per impostazione predefinita, il server archivia la sessione generata IDs in memoria e invia l'ID al client tramite un cookie. Questo approccio diventa problematico quando si tenta di eseguire la stessa applicazione su più EC2 istanze, poiché ogni istanza mantiene il proprio stato di sessione, con conseguenti esperienze utente incoerenti e una potenziale perdita di dati.

Per affrontare questa sfida e garantire che l'applicazione ASP.NET Web Forms migrata possa scalare senza problemi su più istanze mantenendo lo stato della sessione, sono disponibili due opzioni principali: abilitare sessioni permanenti o utilizzare lo storage di backup condiviso.

Abilita le sessioni permanenti per &ALB

Sì AWS, puoi configurare Application Load Balancer per utilizzare sessioni permanenti, note anche come affinità di sessione. Quando abiliti le sessioni permanenti, Application Load Balancer indirizza le richieste successive dallo stesso client alla EC2 stessa istanza. Ciò garantisce che lo stato della sessione dell'utente venga preservato durante tutte le interazioni con l'applicazione.

Questo approccio fornisce una soluzione semplice ma presenta dei limiti in termini di scalabilità e tolleranza agli errori. Se un' EC2 istanza fallisce o diventa non disponibile, la sessione permanente viene interrotta e lo stato della sessione dell'utente viene perso. Inoltre, le sessioni permanenti possono portare a una distribuzione non uniforme del carico tra le istanze e potenzialmente causare contese o sottoutilizzo delle risorse, il che limita la capacità dell'applicazione di scalare efficacemente. Per questi motivi, si consiglia di utilizzare invece un backup store condiviso per l'archiviazione delle sessioni.

Utilizza un archivio di backup condiviso per l'archiviazione delle sessioni

L'approccio consigliato per la migrazione di applicazioni ASP.NET Web Forms con stato a AWS consiste nell'utilizzare un backup store condiviso per l'archiviazione delle sessioni. Invece di fare affidamento sullo stato della sessione in memoria su singole EC2 istanze, l'applicazione può archiviare i dati della sessione in una soluzione di storage altamente disponibile e scalabile, come Amazon DynamoDB, Amazon Relational Database Service (Amazon RDS) per SQL Server o Amazon (Redis OSS). ElastiCache

Quando utilizzi un archivio di backup condiviso, separi lo stato della sessione dalle singole EC2 istanze in modo che l'applicazione possa scalare senza problemi su più istanze senza perdere i dati della sessione. Questo approccio migliora anche la tolleranza agli errori, poiché i dati della sessione persistono indipendentemente dalle istanze dell'applicazione, il che garantisce che le sessioni utente non vadano perse anche in caso di guasto dell'istanza o durante eventi di scalabilità.

Per configurare l'applicazione ASP.NET Web Forms per utilizzare Redis come archivio di backup condiviso per l'archiviazione delle sessioni:

  1. Crea un nuovo gruppo di sicurezza per il cluster. Il gruppo di sicurezza deve consentire le richieste in entrata a Redis, che utilizza la porta TCP 6379.

  2. Avvia un nuovo cluster Redis. Assicurati di specificare il gruppo di sicurezza che hai creato nel primo passaggio.

  3. Ottieni l'indirizzo dell'endpoint dell'istanza appena creata. È necessario attendere alcuni minuti per l'avvio del cluster prima che l'indirizzo diventi disponibile.

  4. Modifica il web.config file e aggiungi la seguente configurazione:

    <sessionState mode="Custom" customProvider="RedisStateStore"> <providers> <add name="RedisStateStore" type="Microsoft.Web.Redis.RedisSessionStateProvider" host="[YourRedisClusterEndpoint]" accessKey="" ssl="true" /> </providers> </sessionState>

    Sostituiscilo [YourRedisClusterEndpoint] con il valore appropriato per il tuo cluster ElastiCache (Redis OSS).

Implementando un backup store condiviso per l'archiviazione delle sessioni, è possibile fornire all'applicazione ASP.NET Web Forms migrata livelli elevati di disponibilità, scalabilità e tolleranza agli errori. AWS Questo approccio è in linea con le best practice native del cloud e garantisce un'esperienza utente senza interruzioni, anche quando l'applicazione è scalabile su più istanze o zone di disponibilità. EC2 Inoltre, fornisce una soluzione più solida e affidabile rispetto alle sessioni permanenti e consente all'applicazione di sfruttare appieno la scalabilità e la resilienza offerte dall'infrastruttura. AWS