Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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
- Host: GitHub
- URL: https://github.com/adrianlois/docker-swarm-aws-asg-elb
- Owner: adrianlois
- License: gpl-3.0
- Created: 2018-11-20T19:24:58.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2024-08-07T16:23:22.000Z (3 months ago)
- Last Synced: 2024-08-07T19:39:01.507Z (3 months ago)
- Topics: amazon-web-services, autoscaling, aws, docker, dockerswarm, loadbalancing, wordpress
- Language: Dockerfile
- Homepage: https://www.zonasystem.com/2018/12/implementacion-docker-swarm-amazon-web-services-auto-scaling-groups-elastic-load-balancing.html
- Size: 59.1 MB
- Stars: 5
- Watchers: 1
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
Implementación de Docker Swarm en Amazon Web Services usando Auto Scaling Groups y Elastic Load Balancing
## 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
## 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