2011-09-28 10 views

Respuesta

4

Debe asegurarse de que su NLB tenga la capacidad de habilitar sesiones "Adhesivas".

Si esto no es una opción, entonces necesita mirar usando el ASP.Net Session Modes para configurar ya sea un servidor de sesión, o algún almacén de respaldo como el servidor SQL.

1

En general, la mayoría de los equilibradores de carga intentan tener conexiones persistentes, pero para sus fines no puede garantizarlo. Es mejor que utilices algo como un back-end SQL para mantener el estado o crear una clase separada para administrar tus datos de sesión. En cualquier caso, puede reconstruir los datos de la sesión si resulta nulo cuando espera que sea de otro modo. Tiendo a utilizar los captadores para comprobar nulo y reconstruir cuando sea necesario. En la práctica, no he hecho ninguna métrica para ver con qué frecuencia se reconstruye, pero supongo que no muy a menudo. Es mejor estar a salvo que lamentar, como dicen.

1

Los equilibradores de carga generalmente se pueden configurar con algo que los muchachos de la infraestructura llaman sticky session o sticky bit. En este tipo de entorno, una vez que se ha asignado una solicitud a un servidor; permanece con ese servidor durante toda la sesión.

Cuando los equilibradores de carga no están configurados de esta manera, ASP.NET ofrece varios proveedores de estado de sesión. Uno muy popular es el SQL Server State Provider, que permite que la información de la sesión se almacene en una base de datos. Para que esto funcione, todos los objetos colocados en el objeto de sesión deben ser serializables para que puedan almacenarse en una tabla.

Como dije, hay muchas más alternativas; por ejemplo, algunas personas prefieren utilizar un enfoque diferente, como memcached o productos similares.

1

Puede usar NLB desde Windows u otros productos como BIG-IP F5, HA Proxy, hay muchísimas opciones.

Use Out-of-Proc (Servidor de estado) y asegúrese de que la configuración de la máquina sea la misma en todos sus servidores. También asegúrese de estar haciendo IO en una unidad de disco compartida, como un NAS.

Aquí hay un enlace con algunos consejos más: Load Balancing and ASP.NET

Cuestiones relacionadas