Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Alta disponibilidad y escalado automático para aplicaciones ASP.NET Web Forms en AWS
Al migrar sus aplicaciones antiguas de ASP.NET Web Forms AWS, lograr una alta disponibilidad es una consideración fundamental. Puede usar grupos y balanceadores de carga de Amazon EC2 Auto Scaling para distribuir el tráfico entre varias EC2 instancias. Sin embargo, muchas aplicaciones de ASP.NET Web Forms dependen en gran medida del estado de la sesión, lo que las hace intrínsecamente dependientes del estado. De forma predeterminada, el servidor almacena la sesión generada IDs en la memoria y devuelve el identificador al cliente mediante una cookie. Este enfoque se vuelve problemático cuando se intenta ejecutar la misma aplicación en varias EC2 instancias, ya que cada instancia mantiene su propio estado de sesión, lo que provoca experiencias de usuario incoherentes y una posible pérdida de datos.
Para hacer frente a este desafío y garantizar que la aplicación ASP.NET Web Forms migrada pueda ampliarse sin problemas en varias instancias y, al mismo tiempo, mantener el estado de la sesión, tiene dos opciones principales: habilitar las sesiones permanentes o utilizar el almacenamiento de respaldo compartido.
Habilite las sesiones permanentes para el &ALB
Sí AWS, puede configurar los balanceadores de carga de aplicaciones para que utilicen sesiones fijas, lo que también se conoce como afinidad de sesión. Al habilitar las sesiones permanentes, Application Load Balancer dirige las solicitudes posteriores del mismo cliente a la misma EC2 instancia. Esto garantiza que el estado de la sesión del usuario se mantenga durante sus interacciones con la aplicación.
Este enfoque proporciona una solución sencilla, pero tiene limitaciones en términos de escalabilidad y tolerancia a errores. Si una EC2 instancia falla o deja de estar disponible, la sesión fija se interrumpe y se pierde el estado de la sesión del usuario. Además, las sesiones prolongadas pueden provocar una distribución desigual de la carga entre las instancias y, potencialmente, provocar una contención de los recursos o una subutilización, lo que limita la capacidad de la aplicación para escalar de forma eficaz. Por estos motivos, le recomendamos que utilice en su lugar un almacén de respaldo compartido para el almacenamiento de las sesiones.
Usa un almacén de respaldo compartido para almacenar las sesiones
El enfoque recomendado para migrar aplicaciones ASP.NET Web Forms con estado AWS es utilizar un almacén de respaldo compartido para el almacenamiento de las sesiones. En lugar de depender del estado de la sesión en memoria en EC2 instancias individuales, la aplicación puede almacenar los datos de la sesión en una solución de almacenamiento escalable y de alta disponibilidad, como Amazon
Cuando utiliza un almacén de respaldo compartido, desvincula el estado de la sesión de las EC2 instancias individuales para que la aplicación pueda escalar varias instancias sin perder los datos de la sesión. Este enfoque también mejora la tolerancia a los errores, ya que los datos de la sesión se conservan independientemente de las instancias de la aplicación, lo que garantiza que las sesiones de los usuarios no se pierdan incluso si la instancia falla o durante eventos de escalado.
Para configurar la aplicación ASP.NET Web Forms para que utilice Redis como almacén de respaldo compartido para el almacenamiento de sesiones:
Cree un nuevo grupo de seguridad para el clúster. El grupo de seguridad debe permitir las solicitudes entrantes a Redis, que utiliza el puerto TCP 6379.
Lance un nuevo clúster de Redis. Asegúrese de especificar el grupo de seguridad que creó en el primer paso.
Obtenga la dirección de punto final de la instancia que acaba de crear. Debe esperar unos minutos a que se lance el clúster antes de que la dirección esté disponible.
Modifique el
web.config
archivo y añada la siguiente configuración:<sessionState mode="Custom" customProvider="RedisStateStore"> <providers> <add name="RedisStateStore" type="Microsoft.Web.Redis.RedisSessionStateProvider" host="[YourRedisClusterEndpoint]" accessKey="" ssl="true" /> </providers> </sessionState>
[YourRedisClusterEndpoint]
Sustitúyalo por el valor adecuado para su clúster ElastiCache (Redis OSS).
Al implementar un almacén de respaldo compartido para el almacenamiento de las sesiones, puede dotar a su aplicación ASP.NET Web Forms migrada de alta disponibilidad, escalabilidad y tolerancia a errores. AWS Este enfoque se ajusta a las prácticas recomendadas nativas de la nube y garantiza una experiencia de usuario fluida, incluso cuando la aplicación se amplía a varias EC2 instancias o zonas de disponibilidad. Además, proporciona una solución más sólida y fiable que las sesiones fijas y permite que la aplicación aproveche al máximo la escalabilidad y la resiliencia que ofrece la infraestructura. AWS