Pregunta

En este momento, mi sitio es atendido por un solo servidor, pero anticipo la necesidad de aumentar la capacidad de mi servidor, pronto. En lugar de dividir mis sitios web en varios servidores y tener que administrar sesiones entre servidores, quiero tener varios servidores web, todos con la misma base de código, y usar el uso compartido de carga round robin basado en enrutador para distribuir usuarios a cada servidor. Y una vez que un usuario acceda a un servidor web, haga que permanezca con ese servidor web durante toda su sesión. Que yo sepa, no necesito tener ningún código asp.net especial para facilitar esto.

¿Alguien tiene alguna advertencia o comentario sobre este enfoque?

¿Fue útil?

Solución

De lo que estás hablando se llama sesiones fijas o afinidad de sesión. Si su enrutador admite esto, entonces usted es dorado.

El único caviat es que el equilibrio de carga no será perfecto. Si tiene algunos usuarios de alta carga que terminan aleatoriamente en el mismo servidor, permanecerán allí hasta que finalicen las sesiones.

He implementado este tipo de equilibrio de carga donde trabajo, y no requiere ningún código asp.net especial para implementarlo.

Otros consejos

La mayoría de los equilibradores de carga (tal vez todos) tienen la capacidad de hacer cumplir "pegajoso" sesiones donde los usuarios en la misma IP son dirigidos al mismo servidor web en cada solicitud. No se requiere un cambio de código para lograr esto. Hay dos advertencias que me vienen a la mente:

  1. El uso de sesiones fijas significará que la carga de tráfico no se distribuirá de manera uniforme como lo haría si no estuviera utilizando sesiones fijas. Sin embargo, las distribuciones deberían ser "suficientes". OMI.
  2. Habrá un porcentaje muy pequeño de usuarios que usan servidores proxy que pueden entrar en diferentes IP en diferentes solicitudes. Estos usuarios pueden experimentar "extraño" comportamiento a medida que pasan a diferentes servidores.

Otra característica de esta configuración es que si uno de sus servidores deja de funcionar, las sesiones de los usuarios en ese servidor también perderán su sesión. Creo que esta es una de las configuraciones más utilizadas, ya que no requiere ningún esfuerzo de desarrollo si el enrutador admite sesión fija o afinidad de sesión.

Como otros han mencionado, debería poder activar Sticky Sessions en su equilibrador de carga, que debería encargarse de la mayor parte del " permanecer en un servidor " problemas para usted.

Sin embargo, querrá asegurarse de haber establecido la configuración para hacer frente a un usuario que aterriza en el servidor incorrecto a mitad de la sesión: las Sesiones fijas generalmente se basan en la dirección IP, y las IP de los usuarios pueden cambiar a mitad de sesión si no tiene suerte, o un servidor puede desconectarse, y el usuario será dirigido al otro servidor.

Debe asegurarse de que sus MachineKeys son iguales todos los servidores: esto garantizará que pueda descifrar el estado de vista correctamente en todos los servidores.

Si es el propietario de los servidores, puede hacerlo en machine.config; de lo contrario, puede configurarlo en el nivel de la aplicación en web.config, puede encontrar más detalles en esta forma de:

  

Configure MachineKey en ASP.NET 2.0

Hay algunas pequeñas diferencias si está ejecutando IIS 7.5: Tess Ferrandez tiene más detalles en una publicación reciente " La autenticación de formularios falla después de instalar IIS 7.5 " ;.

La otra cosa que probablemente querrá hacer es mover su sessionState de InProc a SQL o StateServer.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top