2009-01-28 18 views
5

Escenario:La ampliación del servidor de estado de sesión ASP.NET

El sitio web está alojado en tres servidores utilizando IIS en cada uno.

Los tres servidores están agrupados utilizando la carga de la red de software de equilibrio que viene con Windows Server 2003.

Los tres sitios están configurados para almacenar el estado de sesión en un servidor independiente que ha sido designado como un "servidor de estado" .

Se me ha pedido que amplíe el "servidor de estado". ¿Hay alguna manera de que pueda tener más de un servidor de estado y sincronizar el estado entre ellos, por lo que si uno de los servidores de estado deja de funcionar, los demás podrán enviar la información del estado?

Respuesta

6

Iré por memcached. Puede configurarlo en cada uno de los servidores web y luego puede escalarlo con cada nuevo servidor web que agregue. He encontrado un par de clientes en Codeplex antes.

+0

¿Memcached realmente mantendrá los nodos en la granja de servidores sincronizados? Para evitar un único punto de falla, deberían mantenerse sincronizados, de modo que cuando se agreguen o eliminen elementos, todos los nodos sean notificados. – baretta

+0

sí, el d en memcached significa distribuido, por lo que sincroniza la información en todos los nodos de su clúster. – Nick

+0

¡Ah! Entonces, ¡ASP.NET State Server IS es intercambiable con Memcached! http://stackoverflow.com/questions/290966/is-memcached-interchangeable-with-asp-net-state-server Temía que Memcached no mantuviera sincronizados los nodos .. – baretta

8

Utilizamos Scale Out State Server para esto donde trabajo, y hace el trabajo maravillosamente y es muy fácil de configurar. Entiendo que Microsoft también está trabajando en un producto similar llamado Velocity, pero no tengo ninguna experiencia con él.

El único inconveniente de SOSS es que tiene que pagar por ello, pero no he tenido más que grandes experiencias interactuando con su equipo de ventas y soporte. Si terminas licenciando, hazme un favor y hazles saber que Daniel de Gratis te envió;)

3

Estás buscando una tecnología de caché distribuida. Microsoft Velocity es uno que tiene ejemplos publicados por Microsoft para reemplazar el estado de sesión predeterminado de ASP.NET con Velocity que se puede distribuir. Hay otros proveedores de almacenamiento en caché como Memcache.

Editar: Al actualizar esta respuesta para obtener información más relevante para la hora actual, este tipo de funcionalidad está integrada en Windows Azure con el producto AppFabric. Se puede ver algo de información breve sobre esto aquí: Windows Server and Azure AppFabric virtual launch May 20th

+0

El problema es que la velocidad es nunca ha sido lanzado oficialmente. Han pasado años y todo lo que tenemos es CTP. Me pregunto qué apoyo se puede esperar de MS? Además, el blog del equipo Velocity ha sido bastante largo durante mucho tiempo y esto me hace preguntarme si MS no va a matar el proyecto en un futuro no muy lejano. –

+0

@Piotr Velocity fue el precursor de AppFabric que forma parte de la línea tecnológica de Azure, cite: http://www.hanselman.com/blog/WindowsServerAndurezAppFabricVirtualLaunchMay20th.aspx Actualicé mi respuesta para incluir esta –

+0

Gracias por la actualización, soporte corregido :) –

0

La base de datos de sesión en un servidor SQL se puede escalar fácilmente con pequeños cambios en la configuración del código &. Puede pegar sesiones de asp.net a una base de datos de sesión e independientemente de qué servidor web de su granja atiende la solicitud, su mapeo de servidor de estado SQL basado en id de sesión funciona de manera impecable. Esta es probablemente una de las mejores maneras de escalar el estado de la sesión ASP.NET utilizando el servidor SQL. Para obtener más información, lea el enlace

True Scaleout model for session state

Cuestiones relacionadas