adrianlois / Docker-Swarm-AWS-ASG-ELB

Implementación de Docker Swarm en Amazon Web Services usando Auto Scaling Groups y Elastic Load Balancing

Home Page:https://www.zonasystem.com/2018/12/implementacion-docker-swarm-amazon-web-services-auto-scaling-groups-elastic-load-balancing.html

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Implementación de Docker Swarm en Amazon Web Services usando Auto Scaling Groups y Elastic Load Balancing

Docker-Swarm-AWS-ASG-ELB

Descripción

Se trata de un proyecto orientado a la alta disponibilidad y evitando los overhead con un óptimo aprovechamiento de los recursos usando contenedores Docker, auto escalado y balanceador de carga usando los servicios de Amazon Web Services. Se trata de crear un servicio para servir una página web (Wordpress, Apache2, MySQL y Supervisor) a partir de un fichero construído Dockerfile generar una imagen y subirla a un Docker registry público que serán los repositorios de Docker Hub.

Crear un cluster de nodos con Docker Swarm donde habrá un nodo manager y los nodos worker serán gestionados por el servicio de AWS Auto Scaling Groups, haciendo scale-out o scale-in elásticamente según unas "Scaling Polices". Las nuevas instancias EC2 estarán levantadas con ASG, se unirarán al Swarm y estarán distribuidas en las tres zonas de disponibilidad a, b y c de la región us-east-2 (Ohio). En el nodo manager se crea un servicio en base a la imagen subida a Docker Hub, se irá actualizando el servicio creando nuevas tareas de réplicas y que estas se repartan con un paralelismo de uno enntre los nodos worker disponibles y gestionados por ASG permitiendo así una mayor disponibilidad y balanceo de los recursos de contenedores con Docker Swarm.

Para unificar todo lo anterior y en una misma dirección pública de acceso a todas las instancias, se crea un Elastic Load Balancer que hará balanceo entre las instancias gestionadas por ASG y el nodo manager. ELB crea un DNS Name, se creará un registro CNAME en la gestión del dominio para que el subdominio "web.itgal.es" apunte al DNS Name del ELB.

Cuando se haga un scale-in de instancias con ASG los nodos en estado "Down" se eliminarán del Swarm de nodos a través de un bash script añadido como tarea programada que se ejecutará cada diez minutos en el nodo manager (eliminar-nodos-down.sh) consiguiendo que se eliminen los nodos Down que ya no forman parte del Swarm.

Documentación

Documentación proyecto: https://bit.ly/3ENHiWt

Presentación Slides: https://bit.ly/3IJ4039

Docker Cheat Sheet Docker: https://bit.ly/3J5376A

Video demo (PoC): https://youtu.be/HzsBiJjgrOo

portada-video-demo-youtube-dockerswarm-aws-asg-elb-adrianlois

Resumen

Diagrama: Dockerfile > Imagen > Docker Hub

Diagrama de la Infraestructura de AWS, Docker Swarm, Auto Scaling Groups y Elastic Load Balancing

Crear servicio con tareas de réplicas

ELB: Balanceo de carga entre instancias y DNS Name

Balanceo de carga entre instancias y contenedores

ASG: Scale-in a cero de forma manual

Eliminación de nodos "Down" del Swarm mediante bash scripting

About

Implementación de Docker Swarm en Amazon Web Services usando Auto Scaling Groups y Elastic Load Balancing

https://www.zonasystem.com/2018/12/implementacion-docker-swarm-amazon-web-services-auto-scaling-groups-elastic-load-balancing.html

License:GNU General Public License v3.0


Languages

Language:Dockerfile 67.6%Language:PHP 25.2%Language:Shell 7.2%