Este documento presenta una introducción a Docker y Amazon ECS. Explica los beneficios de los contenedores y microservicios y cómo ECS permite la administración y programación de contenedores a gran escala a través de clústeres de EC2. También describe cómo ECS permite ejecutar servicios de larga duración mediante el balanceo de carga y la actualización automática de contenedores.
4. ¿Qué son los Contenedores?
Virtualización de SO
Aislamiento de procesos
Imágenes
AutomatizaciónServidor
SO Guest
Bins/Libs Bins/Libs
App2App1
5. Ventajas de los contenedores
Portátil
Flexible
Rápido
EficienteServidor
SO Guest
Bins/Libs Bins/Libs
App2App1
6. Los Servicios evolucionaron a Microservicios
Aplicación monolítica
Órdenes Interfaz de
usuario
Envíos
Servicio de
órdenes
Servicio de
usuario
Servicio de
envíos
Acceso
a datos
Host 1
Servicio A
Servicio B
Host 2
Servicio B
Servicio D
Host 3
Servicio A
Servicio C
Host 4
Servicio B
Servicio C
7. Los Contenedores son naturales para Microservicios
Simples de modelar
Cualquier aplicación, cualquier lenguaje
La imagen es la versión
Pruebe y despliegue el mismo artefacto (inmutabilidad)
Servidores sin estado = menor riesgo por cambios
10. “Scheduling” de un clúster es difícil
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
11. ¿Qué es Amazon ECS?
Amazon EC2 Container Service (ECS) es un servicio de
administración de contenedores altamente escalable y
con alto rendimiento. Usted puede usar Amazon ECS
para calendarizar la ubicación de contenedores dentro de
su clúster. También puede integrar su propio “Scheduler” o
herramienta de terceros para cumplir sus requerimientos
específicos de su aplicación o negocio.
15. Amazon ECS: Gestión de recursos
Docker
Tarea
Instancia de Contenedor
Contenedor
Tarea
Contenedor
Docker
Tarea
Instancia de Contenedor
Contenedor
Tarea
Contenedor
Docker
Tarea
Instancia de Contenedor
Contenedor
Tarea
Contenedor
AZ 1 AZ 2
Servicio de Administración de Clúster
16. Amazon ECS: Agente y Comunicación
Docker
Tarea
Instancia de Contenedor
Contenedor
Agente ECS
Tarea
Contenedor
Docker
Tarea
Instancia de Contenedor
Contenedor
Agente ECS
Tarea
Contenedor
Docker
Tarea
Instancia de Contenedor
Contenedor
Agente ECS
Tarea
Contenedor
AZ 1 AZ 2
Servicio de Administración de Clúster
Servicio de Comunicación con el Agente
17. Amazon ECS: Almacenamiento Llave/Valor
Docker
Tarea
Instancia de Contenedor
Contenedor
Agente ECS
ELB
Internet
ELB
Tarea
Contenedor
Docker
Tarea
Instancia de Contenedor
Contenedor
Agente ECS
Tarea
Contenedor
Docker
Tarea
Instancia de Contenedor
Contenedor
Agente ECS
Tarea
Contenedor
AZ 1 AZ 2
Almacenamiento Llave/Valor
Servicio de Administración de Clúster
Servicio de Comunicación con el Agente
18. Amazon ECS: Control de concurrencia
IDN-1 IDN IDN+1 IDN+2 IDN+3 IDN+4 IDN+5
IDN+6
IDN+5
WRITE
READ
19. Amazon ECS: Control de concurrencia
IDN-1 IDN IDN+1 IDN+2 IDN+3 IDN+4 IDN+5
IDN+6IDN+3
IDN+5IDN+2
WRITE WRITE
READREAD
20. Amazon ECS: APIs
Docker
Tarea
Instancia de Contenedor
Contenedor
Agente ECS
ELB
Internet
ELB
Usuario /
Scheduler
API
Servicio de Administración de Clúster
Tarea
Contenedor
Docker
Tarea
Instancia de Contenedor
Contenedor
Agente ECS
Tarea
Contenedor
Docker
Tarea
Instancia de Contenedor
Contenedor
Agente ECS
Tarea
Contenedor
AZ 1 AZ 2
Almacenamiento Llave/Valor
Servicio de Comunicación con el Agente
21. Amazon ECS: “Scheduling”
Docker
Tarea
Instancia de Contenedor
Contenedor
Agente ECS
ELB
Internet
ELB
Usuario /
Scheduler
API
Servicio de Administración de Clúster
Tarea
Contenedor
Docker
Tarea
Instancia de Contenedor
Contenedor
Agente ECS
Tarea
Contenedor
Docker
Tarea
Instancia de Contenedor
Contenedor
Agente ECS
Tarea
Contenedor
AZ 1 AZ 2
Almacenamiento Llave/Valor
Servicio de Comunicación con el Agente
25. Flexibilidad en la disposición de contenedores
Aplicaciones
Trabajos “batch”
Múltiples schedulers
26. Diseñado para usarse con otros servicios de AWS
Elastic Load Balancing
Amazon Elastic Block Store
Amazon Virtual Private Cloud
Amazon CloudWatch
AWS Identity and Access Management
AWS CloudTrail
36. Crear un servicio
Balancea tráfico a través de contenedores
Recupera contenedores de manera automática
Descubre servicios
Elastic Load Balancing
Shared Data Volume
Containers
Shared Data Volume
Containers
Shared Data Volume
Containers
37. Escalar un servicio
Escalamiento horizontal
(aumenta y disminuye ”Tasks”)
Elastic Load Balancing
Shared Data Volume
Containers
Shared Data Volume
Containers
Shared Data Volume
Containers
Shared Data Volume
Containers
39. Actualizar un servicio
Desplegar nueva versión
Drenar conexiones
Elastic Load Balancing
Shared Data
Volume
Containers
current current current
Shared Data
Volume
Containers
Shared Data
Volume
Containers
40. Actualizar un servicio
Desplegar nueva versión
Drenar conexiones
new new new
Elastic Load Balancing
Shared Data
Volume
Containers
old old old
Shared Data
Volume
Containers
Shared Data
Volume
Containers
Shared Data
Volume
Containers
Shared Data
Volume
Containers
Shared Data
Volume
Containers
41. Actualizar un servicio (cont.)
Desplegar nueva versión
Drenar conexiones
new new new
Elastic Load Balancing
Shared Data
Volume
Containers
old old old
Shared Data
Volume
Containers
Shared Data
Volume
Containers
Shared Data
Volume
Containers
Shared Data
Volume
Containers
Shared Data
Volume
Containers
42. Actualizar un servicio (cont.)
Desplegar nueva versión
Drenar conexiones
Elastic Load Balancing
Shared Data
Volume
Containers
new new new
Shared Data
Volume
Containers
Shared Data
Volume
Containers
43. Actualizar un servicio (cont.)
Especifique una configuración de despliegue para su
servicio:
• minimumHealthyPercent: límite inferior (porcentaje
del desiredCount) del número de tareas que deben
permanecer ejecutándose en un servicio durante el
despliegue.
• maximumPercent: límite superior (porcentaje del
desiredCount) del número de tareas ejecutándose en
un servicio durante el despliegue.
44. Actualizar un servicio (cont.)
Despliega usando el menor espacio:
minimumHealthyPercent = 50%, maximumPercent = 100%
45. Actualizar un servicio (cont.)
Despliega rápido sin reducir la capacidad del servicio:
minimumHealthyPercent = 100%, maximumPercent = 200%