¿Cuál es la desventaja de las sesiones fijas con equilibradores de carga?

13

Tenemos una granja web de máquinas IIS7 que funcionan muy bien. Delante de ellos hay un equilibrador de carga de hardware F5 Big-IP , que también funciona bien :)

texto alternativo
(fuente: www.f5.com )

Actualmente estamos usando un ASP.NET State Servicepara manejar nuestro estado OutProc . Esto es necesario cuando tiene una granja de servidores web para mantener cualquier tipo de información de sesión.

Me preguntaba si podríamos tener sesiones fijas en el F5 Big-IP y, por lo tanto, cambiar de OutProc a InProc. Si es así, ¿cuál es la desventaja de esto? Conozco las desventajas de InProc vs OutProc, así que no te preocupes por explicar eso. Estoy más interesado en los pros / contras de las sesiones fijas sin F5 Big-IP .

¿Alguien puede arrojar algo de luz y / o experiencia?

Pure.Krome
fuente

Respuestas:

15

Hay dos desventajas principales:

  1. Su carga no está distribuida uniformemente. Las sesiones adhesivas se mantendrán, de ahí el nombre. Si bien las solicitudes iniciales se distribuirán de manera uniforme, es posible que un número significativo de usuarios pasen más tiempo que otros. Si todos estos se configuran inicialmente en un solo servidor, ese servidor tendrá mucha más carga. Por lo general, esto realmente no tendrá un gran impacto y puede mitigarse al tener más servidores en su clúster.

  2. Los proxies conglomeran a los usuarios en una sola IP, todo lo cual se enviaría a un solo servidor. Si bien eso generalmente no hace daño, nuevamente, aparte de aumentar las cargas de servidores individuales, los servidores proxy también pueden operar en un clúster. Una solicitud a su F5 desde dicho sistema no se enviaría necesariamente al mismo servidor si la solicitud sale de un servidor proxy diferente en su clúster proxy.

AOL estaba en un punto usando clústeres proxy, y realmente se atornilló con equilibradores de carga y sesiones pegajosas. La mayoría de los equilibradores de carga ahora ofrecerán sesiones fijas basadas en rangos netos de clase C, o con el caso de F5, sesiones fijas basadas en cookies que almacenan el nodo final en una cookie de solicitud web.

Si bien las sesiones basadas en cookies deberían funcionar, he tenido algunos problemas con ellas, y generalmente elijo sesiones basadas en IP. GRANDE SIN EMBARGO: Estoy trabajando principalmente en aplicaciones internas: el milagro de DMZ puede variar.

Dicho todo esto, hemos tenido un gran éxito con sitios que ejecutan detrás de F5 con sesiones fijas y sesiones In-Proc.

También es posible que desee echar un vistazo a uno de los sistemas de almacenamiento en caché distribuido en memoria como Memcached o Velocity para una alternativa a la sesión que se almacena en SQL o el servicio de memoria fuera de proceso. Te acercas a la velocidad de la memoria en proceso con la capacidad de ejecutarla en varios servidores.

Christopher_G_Lewis
fuente
Además de la CPU, ¿hay formas de verificar las conexiones actuales y / o el ancho de banda de forma nativa en una máquina con Windows 2008 con IIS7 ... para ver si un servidor está demasiado afectado / ocupado? Básicamente, ¿qué métricas utilizas para asegurarte de que los servidores no se arruinen?
Pure.Krome
Hace un tiempo utilizamos una combinación de IP fijas y sesiones de cookies fijas y encontramos una distribución desigual, pero no tan horrible. El clúster proxy de AOL fue una pesadilla para la agrupación de IP y tuvimos que codificar excepciones.
ericslaw
Los Contadores de Perf nativos mostrarán conexiones HTTP activas.
Christopher_G_Lewis
@Christopher_G_Lewis ¿Le importaría explicar un poco los problemas que tuvo con las sesiones basadas en cookies en F5?
Eugene Beresovsky
4

Además de la excelente respuesta de Christopher, las sesiones fijas significan que ha perdido algunos de los enormes beneficios de los servidores redundantes: la capacidad de eliminar uno o más por mantenimiento y la transparencia ante fallas del sistema.

Considero que las sesiones fijas son un fuerte indicador de una arquitectura de aplicaciones deficiente o una programación deficiente. "Evitar a toda costa" es mi lema.

womble
fuente
Excelentes pensamientos sobre el mantenimiento. Lanzamos un DRENAJE en un servidor mucho antes de sacarlo del clúster. DRAIN significa que las sesiones actuales se procesan, pero no se iniciaron nuevas sesiones en ese servidor.
Christopher_G_Lewis
Afortunadamente, nadie tiene que hacer un mantenimiento a corto plazo, ni tampoco un servidor muere inesperadamente (lo que hace que todas las sesiones pegadas a ese servidor sean repentinamente inútiles, apuesto a que a los clientes les encanta).
womble
¿Se puede DRENAR desde un servidor sin tener que hacer ninguna configuración en el F5? Básicamente, no tenemos acceso al F5 (está administrado por nosotros, en un escenario de alojamiento administrado) ... pero tenemos acceso completo a nuestros servidores web ... así que ¿PUEDES DRENAR dejando caer un archivo o algo en un sitio web?
Pure.Krome
Nuestros F5 determinan el servidor arriba / abajo / drenaje del servidor a través de un archivo de texto en el sitio web: el contexto del archivo es "ARRIBA / ABAJO / DRENAJE". Examine sus registros de IIS para determinar qué están mirando. Tenga en cuenta que a veces el F5 solo está haciendo un SYN / ACK en un puerto TCP / IP, en cuyo caso deberá hacer que su host cambie la configuración del F5.
Christopher_G_Lewis