Este semana pasada he estado viendo como funcionan muchos de los componentes de Amazon AWS, entre todos los componentes que estuve viendo uno de los más útiles y fácil de usar es el Elastic Load Balancing, con un par de clicks podemos configurar un balanceador de carga, por ejemplo para repartir peticiones en servicios web, entre otras utilidades. Hoy os voy a explicar cómo podemos configurar Balanceo de carga entre dos instancias EC2 en AWS.
Requisitos previos para configurar un balanceador de carga entre dos instancias para una web.
Cómo si numbre bien dice un balanceo de carga sirve para repartir la carga de algún servicio entre diferentes servidores o instancias, por lo que para configurarlo previamente necesitamos:
- 2 Instancias entre las que repartir la carga
- Servicios web levantado por el puerto 80 en cada instancia.
- Habilitar en el security gruup el acceso HTTP por el puerto 80
Configuración del balanceo de carga entre dos instancias EC2 en AWS
Para comenzar a usar los balanceadores debemos de dirigirnos dentro del AWS Console a Instancias y allí encontraremos la opción de Load Balancer en la columna de la izquierda, cómo podeis ver en la siguiente imagen.
Una vez pulsemos en Create Load Balancer, se nos va a abrir un asistente en el que nos va a solicita una serie de datos, lo primero de todo va a ser un nombre identificativo para el balanceo, en que red (VPC) queremos crearlo, el puerto por el que va a realizar el balanceo entre otras cosas, en la siguiente imagen podéis verlo.
La siguiente parte va a ser elegir el security gruops que tenemos que vamos a usar con el balanceo, cómo hemos visto en los requisitos previos, necesitamos que las instancias estén en un security gruops en el que permitan conexiones HTTP por el puerto 80 para este ejemplo, en mi caso, las instancias estan en el security groups launch-wizar-1.
El siguiente paso es muy importante, aunque para este ejemplo no es necesario, al elegir el balanceo por HTTP y no por HTTPS, nos va a mostrar una advertencia recomendando que realicemos una configuración segura y lo hagamos por HTTPS, yo me lo voy a saltar ya que para este ejemplo no lo necesito, además necesitaría instalar un certificado (que ya os explicaré más adelante como se hace).
Ahora vamos a configurar la monitorización del balanceo, indicando el tipo de monitorización y el puerto, en este caso va a ser un PING por el puerto 80, tambien podemos configurar los tiempos para timeout (Response Timeout), el intervalo de tiempo de cada chequeo (Health Check Interval), número de chequeos consecutivos antes de declarar una instancia cómo caída (Unhealthy Threshold) y número de chequeos antes de declarar una instancia como activa despues de haber estado caída (Healthy Threshold).
Ahora vamos a seleccionar nuestras instancias que van a estar dentro del balanceo, si tenemos activo el check Enable Cross-Zone Load Balancing, podemos crear balanceos entre instancias de diferentes zonas de disponibilidad con esto podemos conseguir una Alta disponibilidad entre distintas zonas, si observaís la siguiente imagen veréis como aparecen tres instancias, dos de ellas estén en la zona eu-west-1a y la otra en eu-west-1b.
En el siguiente paso añadimos las etiquetas al balanceo para hacerlo identificativo y por último nos mostrará un resumen antes de crearlo. Una vez creado nos aparecerá en el listado de Balanceo de Carga, si vamos a usar el balanceo con un dominio ahora deberíamos de ir al componente Route 53 y crear un Registro del CNAME que apunte al nombre del balanceo asignado automáticamente por el servicio Elastic Load Balancing, OJO nunca crear un registro de tipo A ya que la ip asignada puede cambiar. Dentro del balanceo podemos ver distintas opciones en las que nos va a mostrar las instancias configuradas, el estado del balanceo, métricas de monitorización, etc, si tenemos un grupo de Auto Scaling tambien podemos asociarlo.
Cómo habéis visto este componente es bastante sencillo de usar y muy útil a la hora de repartir carga entre distintos servidores, espero que os haya sido de utilidad.