viernes, 27 de marzo de 2015

Tema 4 de teoría: Balanceo de carga

Inicialmente se usaban grandes mainframes como servidores (de todo tipo), pero resultaban muy caros de adquirir y mantener. Esas desventajas llevaron al desarrollo y uso del balanceo de carga.

La idea es que varias máquinas trabajando en paralelo es mejor que una sola máquina muy grande y cara. Es más, si una máquina del grupo se rompe, se puede sustituir fácilmente y además las tareas se pueden repartir entre grupos de servidores.

El balanceador reparte el tráfico web entre varios servidores, y realiza comprobaciones para asegurarse de que los servidores, aplicaciones y contenido están disponibles.

Existen diversos dispositivos hardware y software que pueden hacer funciones de balanceo. (distribuir el tráfico entre los servidores):



Por otro lado, el balanceador realiza tareas adicionales:
 - comprobar la disponibilidad de los servidores
 - protege de diversos ataques
 - derivar en función del tipo de tráfico

Existe software específico para configurar casi cualquier PC como balanceador, estableciendo diferentes algoritmos de reparto de carga.
Opciones de software libre:
 - HAProxy
 - ngingx
 - Apache
Opciones de software propietario:
 - Local Director (cisco)
 - BIG-IP (F5)
 - NLB (Microsoft)

También existen dispositivos tipo "caja negra" que incluyen el hardware y software necesarios para el balanceo, o bien procesadores específicos (ASIC, application specific integrated circuit) para realizar las tareas de modificación de paquetes. Entre otros, destacan los fabricantes: Fabricantes: Cisco Systems, Foundry Networks, Nortel Networks, F5 Networks y Radware.

A lo largo del tema hemos estudiado en detalle los siguientes conceptos y términos:
 - Modelo OSI
 - Balanceador de carga
 - VIP
 - Servidor
 - Grupo o cluster
 - Niveles de acceso de usuario
 - Redundancia
 - Persistencia
 - Disponibilidad de servicio
 - Algoritmos de balanceo de carga
 - Centro de datos
 - NAT: network addess translation

También hemos estudiado en detalle varios algoritmos de balanceo de carga. Los algoritmos más comunes disponibles tanto en software como en dispositivos hardware son:
 - balanceo basado en turnos (round-robin)
 - balanceo basado en el menor número de conexiones
 - balanceo basado en ponderación
 - balanceo basado en prioridad
 - balanceo basado en tiempo de respuesta
 - combinación de los algoritmos de tiempo de respuesta y menor número de conexiones


Por último, hemos estudiado el balanceo de carga global (GSLB, global server load balancing).

Se trata de una serie de técnicas para distribuir la carga entre varios centros de datos. De esta forma evitamos retrasos en las comunicaciones por las distancias entre el usuario y el servidor. Además, debido a la redundancia, si un centro falla, el tráfico se redirige a otro centro de datos.



Hay varias implementaciones posibles, con mayor o menor complejidad:
 - Uso del sistema de DNS
 - Redirección HTTP
 - GSLB basado en DNS
 - GSLB usando protocolos de enrutamiento

La tecnología del GSLB presenta una ventaja primordial: alta disponibilidad. Sin embargo, es muy complejo de implementar y comprender, y requiere de grandes conocimientos del funcionamiento de los DNS. Además, si la aplicación web usa BD, éstas deben estar sincronizadas entre los diversos sitios, lo que resulta muy complejo. De hecho, para que GSLB funcione es necesario un entorno de red muy controlado, con alta coordinación entre los operadores.


Como resumen, el balanceo de carga aporta diversos beneficios:

  • Escalabilidad: El balanceador distribuye las peticiones de los usuarios entre varios servidores reales, haciendo que la capacidad global de proceso y servicio crezca respecto a un solo servidor. 
  • Disponibilidad: El balanceador monitoriza el estado de los servidores y las aplicaciones, de forma que si encuentra que uno de los servidores ha fallado, dejará de enviarle peticiones. 
  • Mantenimiento: El administrador puede apagar una máquina para actualizarla o repararla, y el resto del conjunto seguirá dando el servicio. Posteriormente, la máquina se puede añadir de nuevo cuando vuelva a estar operativa. Además, podemos tener grupos de máquinas configuradas para dar un tipo de servicio (FTP, HTTP, SMTP, etc).
  • Seguridad: Puede ser una primera línea de defensa, rechazando varios tipos de ataques. Además, al hacer NAT, protege los servidores finales de accesos desde el exterior.
  • Calidad de servicio: Nos referimos al tiempo de respuesta, a la disponibilidad o a la capacidad de ofrecer servicios en función del tipo de usuario.



En cuanto a los ejercicios que vamos planteando en los temas de teoría, en este tema hemos planteado los siguientes ejercicios:


  • Ejercicio T4.1: Buscar información sobre cuánto costaría en la actualidad un mainframe. Comparar precio y potencia entre esa máquina y una granja web de unas prestaciones similares.
  • Ejercicio T4.2: Buscar información sobre precio y características de balanceadores hardware específicos. Compara las prestaciones que ofrecen unos y otros.
  • Ejercicio T4.3: Buscar información sobre los métodos de balanceo que implementan los dispositivos recogidos en el ejercicio 4.2
  • Ejercicio T4.4: Instala y configura en una máquina virtual el balanceador ZenLoadBalancer. Compara con la dificultad de la instalación y configuración usando nginx o haproxy (práctica 3).
  • Ejercicio T4.5: Probar las diferentes maneras de redirección HTTP. ¿Cuál es adecuada y cuál no lo es para hacer balanceo de carga global? ¿Por qué?
  • Ejercicio T4.6: Buscar información sobre los bloques de IP para los distintos países o continentes. Implementar en JavaScript o PHP la detección de la zona desde donde se conecta un usuario.
  • Ejercicio T4.7: Buscar información sobre métodos y herramientas para implementar GSLB.


Como ya indicamos, la entrega de los ejercicios de clase se realiza en el repositorio personal que cada cual mantenéis en github.com, en una carpeta que podéis llamar "ejercicios_de_clase".

No hay comentarios:

Publicar un comentario