Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/adrianlois/docker-swarm-aws-asg-elb

Implementación de Docker Swarm en Amazon Web Services usando Auto Scaling Groups y Elastic Load Balancing
https://github.com/adrianlois/docker-swarm-aws-asg-elb

amazon-web-services autoscaling aws docker dockerswarm loadbalancing wordpress

Last synced: 5 days ago
JSON representation

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

Awesome Lists containing this project

README

        

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