Como crear un cluster de ECS

Te voy a mostrar como crear un Cluster de Linux donde podamos agregar instancias de EC2 a demanda y spot  para lazar nuestro Dockers y servicios

Pre-requisitos
  • Cuenta en AWS
  • Permisos para crear ECS
  • Permisos para crear instancias

Conocimientos que necesitas tener:
  • ¿Qué es EC2?
  • ¿Qué son spot?
  • ¿Qué es un Cluster de ECS?
    • ¿Qué son Task Definition?
    • ¿Qué son servicios de ECS?
    • ¿Qué son tareas ECS?
    • ¿Qué es un repositorio ECR?
    • ¿Qué es un ELB (por si las dudas)?

¿Qué es EC2?

Son instancias o Virtual Machines que puedes alquilar para usar como servidor de aplicaciones.

¿Qué es un EC2 Spot?

Son instancias de EC2 que tiene una configuración de alquiler que funciona como una subasta, permitiéndote ahorra hasta un 90% de dinero.   

¿Qué es un Clusters de ECS?

Es un servicio que permite administrar contenedores de Docker dentro de un set de instancias EC2, con esto se puede abstrae muchos de los conceptos y comandos de la manipulación de imágenes de Docker y lo presenta en una consola de AWS bajo los conceptos de servicios y tareas.

Ya no manipulas instancias, así que no debes preocuparte donde vas a lanzar tus imágenes de Docker, el Cluster se encarga de buscar la mejor opción.

Vamos con varios conceptos que debes saber:

¿Qué es un Task Definition?

Es un archivo de configuración donde se puede definir un set de características a ejecutar por un ECS, en la practica es definir todo lo que necesita un Docker para funcionar ejemplos memoria, CPU, ruta de la imagen en DockerHub o ECR, comandos a correr luego de su ejecución, volumen, puertos y permisos , es a nivel de Docker.

¿Qué es un repositorio ECR?

ECR es un repositorio de imágenes de Docker propio de AWS y que  tu tienes en tu cuenta, siempre y cuando tengas permisos sobre ella, es importante recordar que las instancias donde se intente ejecutar un "pull" de un ECR debe tener permisos sino fallara.


¿Qué son servicios de ECS?


Un servicio es un apartado donde se especifica un Task Definition y ciertas reglas de configuración para posteriormente ser ejecutado, las ejecuciones de un servicio son tareas, y el Cluster de ECS controlas las tareas y las agrupo por servicios. En general un servicio puede tener cualquier cantidad de tareas y un Cluster de ECS puede tener cualquier cantidad de servicios. 

¿Qué es una tarea ECS?

Una tarea es simplemente la ejecución de un Task Definition, se puede considerar una tarea como un Docker dentro de una instancia, como escribí en el párrafo pasado, un servicio puede ejecutar "N" tareas; lo cual genera muchas preguntas, como puedes lanzar un Docker dos veces ¿Qué pasa con los puertos?.

Un servicio de ECS controla donde se lanza las tareas y busca donde se puedan satisfacer sus requerimientos y así poder lanzarlos, imaginemos que deseas lanzar dos servicios web que usan el puerto 80 el Cluster busca instancias con el puerto 80 disponible y lanza un Docker y luego busca otra instancias y lanza el segundo Docker, si Cluster no consigue instancias disponibles con los puertos requeridos, puede habilitar más instancias,siempre y cuando lo hallas configurado para hacer esto, sino simplemente se queda a la espera de mas instancias.

¿Qué es un ELB?

Es un balanceador de cargas que podemos usar para que nuestro servicios siempre usen un mismo dominio y sea mucho mas fácil configurar con entes externos al Cluster, su configuración se hace a nivel de servicio y la lanzar una tarea el Cluster y el ELB proceden a actuar de forma automática, registrando y dando de bajas instancias y tareas según sea el caso.
El ELB se encarga de velar porque el servicio este siempre arriba, monitoreando a este por medio de una pre configuración de health check que debe hacer el usuario a la hora de creación.
¿Cómo crear un Cluster de ECS?
  1. Debemos entrar a nuestra a nuestra cuenta de AWS
  2. Luego ir a la opción del menú ECS.
  3. Buscar el botón (azul) Crear Cluster
  4. Escoger la opción EC2 Linux + Networking y luego presiona el boton next step
  5. Luego en la plantilla de creación de cluster, coloque un nombre en Cluster name y luego de check a la opción Create an empty cluster y ahora el botón Crear

Nota: la plantilla les permite crear de forma automática Cluster con instancias de tipo a demanda y Spot sin embargo  puede hacerlo sin problema y con mas libertad así que por eso recomiendo crear un Cluster vacío.

Ejecuto los pasos:

Ir a la opción del menú ECS.


Presionar el botón (azul) Crear Cluster


Escoger la opción EC2 Linux + Networking y luego presiona el boton next step


En la plantilla de creación de Cluster, coloque un nombre en Cluster name y luego de check a la opción Create an empty cluster y ahora el botón Crear

y listo!, ahora hay que esperar un momento y tendremos una Cluster.



El Cluster estará vacío, y en el se pueden lanzar desde cualquier VPC instancias a demanda y spot y También se pueden crear servicios FARGATE, o todos a la vez depende de ti.

En próximo Post agregaremos instancias a este Cluster.

Comentarios

Entradas populares de este blog

AWS SAM y AWS Lambda docker Container Image tutorial con PYTHON USANDO A...

Solucion: Docker Error: No such container:

Los unicas 4 herramientas que necesitas para volverte un master en Devops