En este ejemplo vamos a mostrar como implementar un balanceador de carga usando bajo AWS.
mediante esta configuración podremos escalar horizontalmente los servidores de aplicaciones y así aumentar el rendimiento, disminuir la latencia y proporcionar tolerancia a fallar.
Anteriormente vimos como montar un balanceador de carga la cual contaba con dos subnet publicas y un balanceador. En esta ocasión vamos a complicar un poco mas y contaremos con cuatro subnet, un balanceador y dos nat gateway.
Diagrama de red:
Configuración de red:
VPC | |
---|---|
Name tag: | RedOrbita VPC |
IPv4 CIDR block: | 10.200.0.0/20 |
Subnet | |
---|---|
Name tag: | Public Subnet 1 |
IPv4 CIDR block: | 10.200.0.0/24 |
Name tag: | Public Subnet 2 |
IPv4 CIDR block: | 10.200.1.0/24 |
Name tag: | Public Private 1 |
IPv4 CIDR block: | 10.200.10.0/24 |
Name tag: | Public Private 2 |
IPv4 CIDR block: | 10.200.11.0/24 |
Route TabLE | |
---|---|
Destino: | 0.0.0.0/0 |
Target: | Internet Gateway |
Comenzamos con el despliegue de la infraestructura
Creamos la VPC:
Para desplegar un nuevo servidor nos tenemos que ir a Service > VPC > Your VPCs > Create VPC
Creamos las dos subnet publicas: Services > VPC > Subnets > Create Subnet
Generamos el Internet Gatewa: Services > VPC > Internet Gateway > Create Internet Gateway
Atachamos el Inernet Gateway a la VPC. Seleccionamos el Internet Gateway creado > Actions > Attach VPC
Seleccionamos la VPC creada anteriormente.
Configuramos el Security Group con los permisos correspondientes: Service > VPC > Security Group > Create Security Group y una vez creado en la parte inferior creamos las reglas correspondientes
Creamos la tabla de rutas: Service > VPC > Route Tables > Create Route Tables. una vez creada nos vamos a Routes y configuramos las rutas necesarias:
Creamos el ROL: Service > IAM > Role > Create Role > Seleccionamos EC2
Siguiente
A continuación creamos dos Nat Gateway: Service > VPC > Nat Gateway > Create Nat Gateway
Generamos dos instancias en zonas diferentes, para no alargar este tutorial no voy a mostrar como desplegar una instancia, para ello podéis verlo en el siguiente enlace:
Una vez generado las dos instancias en las diferentes subnets vamos a crear el balanceador de carga, para ello nos vamos a:
Services > EC2 > Load Balancers > Create Load Balancer
Seleccionamos la opción Application Load balancer (En el caso que queramos realizar un balanceo de capa 7)
Asignamos un nombre, protocolo por el cual realizara balanceo de carga (en mi caso solo por el puerto 80) y seleccionamos las dos subnets privadas creadas anteriormente
Siguiente…
Configuramos el Security Group
Aquí podemos configurar la comprobación del estado del balanceo de carga, en mi caso lo dejo por defecto.
Seleccionamos las instancias y damos a: Add to registered
Nos muestra un breve resumen de la configuración realizada. Create!
Una vez creado el balanceador copiamos el DNS name del balanceador y accedemos varias veces a la misma URL. si todo salio correctamente debería balanceador a las diferentes instancias.
Antes de configurar el auto escalada creamos la AMI de donde se va a nutrir
Crear AMI en AWS
Una vez Creado la AMI y comprobado que funciona correctamente el balanceador procedemos a configurar el auto esclado: Service > EC2 > AUTO SCALING > Lauch Configurations > Create Auto Scaling
Se nos abre el asistente de configuración, Siguiente.
Seleccionamos el AMI creado anteriormente.
Procedemos a configurar la instancia
Comienza el asistente de configuración del auto-scaling, En el debemos seleccionar nuestra VPC y las Subnet privadas.
En Avanced Details seleccionamos el check de Load Balancing
Creamos las alarmas para para aumentar o disminuir el numero de instancias dependiendo la carga
Creamos la alarma para que reduzca el tipo de instancias en el caso
Quedaría de la siguiente forma las dos alarmas configuradas:
Creamos la notificación
Configuramos el tag
Nos muestra un breve resumen
Si ahora nos vamos a Instancias podemos observar como empieza a desplegar instancias:
Solo nos faltaría realizar una prueba de estrés para ver si funciona correctamente las alarmas que hemos configurado.
:wq!
Hola, de qué forma puedo subir mi código desde un SVN a todas las instancias balanceadas.
Osea que los cambios se actualicen en las instancias que están running y las proximas que el balanceados pueda crear. Buen articulo. Saludos.