HA et dimensionnement automatique pour les applications ASP.NET Web Forms sur AWS - AWS Directives prescriptives

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

HA et dimensionnement automatique pour les applications ASP.NET Web Forms sur AWS

Lorsque vous migrez vos anciennes applications ASP.NET Web Forms vers AWS, il est essentiel de garantir une haute disponibilité. Vous pouvez utiliser les groupes Amazon EC2 Auto Scaling et les équilibreurs de charge pour répartir le trafic sur plusieurs EC2 instances. Cependant, de nombreuses applications ASP.NET Web Forms dépendent fortement de l'état de session, ce qui les rend intrinsèquement dynamiques. Par défaut, le serveur enregistre la session générée IDs en mémoire et renvoie l'identifiant au client par le biais d'un cookie. Cette approche devient problématique lorsque vous essayez d'exécuter la même application sur plusieurs EC2 instances, car chaque instance conserve son propre état de session, ce qui entraîne des expériences utilisateur incohérentes et des pertes de données potentielles.

Pour relever ce défi et faire en sorte que votre application ASP.NET Web Forms migrée puisse évoluer de manière fluide sur plusieurs instances tout en conservant l'état de session, vous avez deux options principales : activer les sessions permanentes ou utiliser un stockage de sauvegarde partagé.

Activez les sessions persistantes pour le &ALB

Activé AWS, vous pouvez configurer les équilibreurs de charge d'application pour utiliser des sessions persistantes, également appelées affinité de session. Lorsque vous activez les sessions persistantes, l'Application Load Balancer achemine les demandes suivantes du même client vers la même EC2 instance. Cela garantit que l'état de session de l'utilisateur est préservé tout au long de ses interactions avec l'application.

Cette approche fournit une solution simple mais présente des limites en termes d'évolutivité et de tolérance aux pannes. Si une EC2 instance échoue ou devient indisponible, la session permanente est interrompue et l'état de session de l'utilisateur est perdu. En outre, les sessions persistantes peuvent entraîner une répartition inégale de la charge entre les instances et potentiellement entraîner une contention ou une sous-utilisation des ressources, ce qui limite la capacité de l'application à évoluer efficacement. Pour ces raisons, nous vous recommandons d'utiliser plutôt un magasin de sauvegarde partagé pour le stockage des sessions.

Utiliser un magasin de sauvegarde partagé pour le stockage des sessions

L'approche recommandée pour la migration d'applications ASP.NET Web Forms dynamiques AWS est d'utiliser un magasin de sauvegarde partagé pour le stockage des sessions. Au lieu de s'appuyer sur l'état des sessions en mémoire sur des EC2 instances individuelles, l'application peut stocker les données de session dans une solution de stockage hautement disponible et évolutive, telle qu'AmazonDynamoDB, Amazon Relational Database Service (Amazon RDS) pour SQL Server ou Amazon (Redis OSS). ElastiCache

Lorsque vous utilisez un magasin de sauvegarde partagé, vous découplez l'état de session des EC2 instances individuelles afin que l'application puisse facilement évoluer sur plusieurs instances sans perdre les données de session. Cette approche améliore également la tolérance aux pannes, car les données de session persistent indépendamment des instances de l'application, ce qui garantit que les sessions utilisateur ne sont pas perdues même en cas de défaillance de l'instance ou lors d'événements de dimensionnement.

Pour configurer votre application ASP.NET Web Forms afin d'utiliser Redis comme magasin de sauvegarde partagé pour le stockage de sessions :

  1. Créez un nouveau groupe de sécurité pour le cluster. Le groupe de sécurité doit autoriser les demandes entrantes adressées à Redis, qui utilise le port TCP 6379.

  2. Lancez un nouveau cluster Redis. Assurez-vous de spécifier le groupe de sécurité que vous avez créé lors de la première étape.

  3. Obtenez l'adresse du point de terminaison de l'instance que vous venez de créer. Vous devez attendre quelques minutes pour que le cluster soit lancé avant que l'adresse ne soit disponible.

  4. Modifiez le web.config fichier et ajoutez la configuration suivante :

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

    Remplacez [YourRedisClusterEndpoint] par la valeur appropriée pour votre cluster ElastiCache (Redis OSS).

En implémentant un magasin de sauvegarde partagé pour le stockage des sessions, vous pouvez fournir à votre application ASP.NET Web Forms migrée une disponibilité, une évolutivité et une tolérance aux pannes élevées. AWS Cette approche s'aligne sur les meilleures pratiques natives du cloud et garantit une expérience utilisateur fluide, même lorsque votre application évolue sur plusieurs EC2 instances ou zones de disponibilité. En outre, elle fournit une solution plus robuste et plus fiable que les sessions persistantes, et permet à votre application de tirer pleinement parti de l'évolutivité et de la résilience offertes par AWS l'infrastructure.