Ads 468x60px

3 de febrero de 2014

Balanceadores de Carga


Cada vez existen más servicios en Internet y la demanda de estos por parte de todos nosotros continúa creciendo. La disponibilidad y la rapidez en la respuesta de un determinado servicio depende de muchos factores, sin embargo uno de ellos es la capacidad y disponibilidad de los servidores finales encargados de procesar la petición y responder con la mayor brevedad posible. Para garantizar la fiabilidad de los servicios a veces es necesario formar cluster de servidores que permitan balancear la carga del servicio utilizando balanceadores de carga dedicados para tal fin. De esta manera por ejemplo ayudaríamos a prevenir el colapso de nuestros servicios ante una gran demanda de solicitudes, evitando titulares como que la web porno de Marc Dorcel se colapsó en 45 segundos.

Aunque ya tenía experiencia en balanceadores F5 y Radware AppDirector, en estos últimos meses he tenido la oportunidad de conocer y profundizar los balanceadores de carga FortiADC y Radware Alteon. El estudio de estos últimos ha sido hasta tal punto que he obtenido la certificación “Radware Certified Application Specialist on Alteon (RCAS-AL)”, acreditando que tengo los conocimientos para instalar y mantener equipos Radware Alteon utilizando la CLI así como la interfaz de usuario GUI, además de conocer los mecanismos de balanceo de protocolos de capa 4 a capa 7, realizar instalaciones y mantener equipos en standalone o en alta disponibilidad mediante VRRP, crear escenarios de SSL Offloading instalando y actualizando certificados SSL, además de poseer los conocimientos para realizar debbuging en los equipos.

Aparte de aprender a utilizar los equipos Alteon desde la CLI y la GUI, creo que lo más interesante que he aprendido es a reforzar mis conocimientos sobre los distintos tipos de diseño de despliegue de equipos balanceadores, independientemente del fabricante que sea. En un breve resumen podemos destacar los siguientes diseños:

Modo Route: Es el escenario más común, para ello la red debe ser segmentada en capa 3 diferenciando el segmento clientes de servidores. El balanceador puede hacer funciones de proxy inverso para securizar las aplicaciones, descargar a los servidores reales del cifrado/descifrado de datos, etc. Para su correcto funcionamiento es indispensable que la puerta de enlace de los servidores reales sea el propio balanceador.

Modo Transparente: En este escenario la red debe ser segmentada en capa 2 diferenciando el segmento de clientes y servidores. Aunque todas la comunicación (ida y vuelta) pase por el balanceador, éste no puede actuar como proxy inverso, sin embargo este diseño no requiere cambiar la puerta de enlace de los servidores, es decir, se puede mantener como puerta de enlace el router.

Modo One-arm: Es un escenario adecuado en entornos de demo ya que no requiere ningún cambio en el diseño de la red original. Para ello el balanceador realiza la función de Proxy IP cambiando la IP origen de las peticiones por la suya propia, es decir NAT en origen, de esta manera los servidores reales le contestan al balanceador sin tener que cambiarles la puerta de enlace. Como inconveniente perdemos la IP origen de las peticiones, aunque se puede subsanar incorporando el atributo x-forwarded-for en la cabecera HTTP.

Modo Direct Server Return (DSR): Es un escenario adecuado en redes de altas exigencias, ya que la respuesta de la petición balanceada no pasa por el balanceador, descargando al balanceador de dicha tarea. No es necesario segmentar la red y el balanceador perderá las funcionalidades de Proxy, ya que no tiene la posibilidad de analizar la comunicación completa entre el cliente y los servidores reales. A continuación podemos ver un ejemplo del despliegue DSR:

 
Además de lo comentado anteriormente, he podido probar en el laboratorio los distintos algoritmos de balanceo (roundrobin, leastconns, response time, bandwidth, etc), persistencia de sesiones (cookie, sslid), balanceo de carga basado en el contenido de la petición (URL, tipo de navegador, etc), además de otros aspectos como técnicas de ofuscación o DoS para proteger los servidores, vDirect para levantar máquinas virtuales bajo demanda, ADC-VX para gestionar balanceadores virtuales o GSLB para balancear servicios basándose en la proximidad del cliente o para balancear servicios entre distintos CPDs.

Y eso es todo amigos.


2 comentarios :

  1. Hola, tengo una consulta- En que momentos el balanceador puede generar overhead que entreguen tiempos excesivos de respuesta al cliente. Lo pregunto porque tengo un problema de performance de un aplicativo que en otra configuración no me sucede. Al colocar un F5 me esta sucediendo esto. que debería ver en el F5 o preguntarle a los expertos respecto de como esta configurado o que chequear?, es una pregunta común?.
    Muchas Gracias por tus respuestas
    Miguel

    ResponderEliminar
  2. Buenas Miguel,

    un balanceador puede entregar con retardo la respuesta hacia los clientes por muchos motivos, entre ellos:
    - La aplicación tarda en responder debido a que realiza muchas comprobaciones, chequeos internos, acceso a bases de datos, etc.
    - El balanceador no está bien dimensionado y no puede con la carga solicitada, es decir, tienes un balanceador que es capaz de balancear a 1 Gbps y el throughput actual está por encima del Giga.
    - Si tienes un F5 puedes tener demasiadas iRules que hagan que se entregue la respuesta con retardo.
    - etc

    Analiza con detalle cada una de las solicitudes y los retardos de cada petición para ver dónde se encuentran esos milisegundos de retardo que hacen que la experiencia de usuario sea realmente mala. Tal vez puedes utilizar alguna herramienta como AppNeta para medir las peticiones y conocer exactamente dónde se encuentra ese retardo.

    Saludos.
    David.

    ResponderEliminar

Related Posts Plugin for WordPress, Blogger...

Entradas populares