Comenzando con Docker en AWSMauricio Muñoz, Solutions Architect
AWS Chile
Agenda
¿Por qué contenedores?
Administración de Clústeres
Beneficios
Ejecutando servicios
¿Por qué Contenedores?
¿Qué son los Contenedores?
Virtualización de SO
Aislamiento de procesos
Imágenes
AutomatizaciónServidor
SO Guest
Bins/Libs Bins/Libs
App2App1
Ventajas de los contenedores
Portátil
Flexible
Rápido
EficienteServidor
SO Guest
Bins/Libs Bins/Libs
App2App1
Los Servicios evolucionaron a Microservicios
Aplicación monolítica
Órdenes Interfaz de
usuario
Envíos
Servicio de
órdenesServicio 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
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
“Scheduling” (Calendarización)
Servidor
SO Guest
Bins/Libs Bins/Libs
App2App1
“Scheduling” de un recurso es simple
“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
¿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.
Administración de Clúster
Administración de Clúster: Gestión de
Recursos
Docker
Tarea
Instancia EC2
Contenedor
Docker
Tarea
Instancia EC2
Contenedor
Tarea
Contenedor
Docker
Instancia EC2
Tarea
Contenedorç
AZ 1 AZ 2
Docker
Tarea
Instancia EC2
Contenedor
Docker
Tarea
Instancia EC2
Contenedor
Tarea
Contenedor
Docker
Instancia EC2
Tarea
Contenedor
AZ 1 AZ 2
Administración de Clúster: Scheduling
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
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
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
Amazon ECS: Control de concurrencia
IDN-1 IDN IDN+1 IDN+2 IDN+3 IDN+4 IDN+5
IDN+6
IDN+5
WRITE
READ
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
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
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
Beneficios
Fácil administración de Clusters
Nada que ejecutar
Administración de estados
Control y monitoreo
Escalabilidad
Escalabilidad
Flexibilidad en la disposición de contenedores
Aplicaciones
Trabajos “batch”
Múltiples schedulers
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
Extensible
Conjunto completo de APIs
“Schedulers” personalizados
Agente Open source y CLI
Amazon ECS
Docker
Tarea
Instancia de Contenedor
Amazon
ECS
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 Comunicación con el Agente
Ejecutando servicios
“Task Definitions”
Volume Definitions
Container Definitions
Task Definitions
Task Definitions
“Tasks”
Shared Data
Volume
Containers
schedule
Container
Instance
Volume Definitions
Container Definitions
Mínima Unidad de trabajo
Agrupa contenedores relacionados
Se ejecutan en instancias (de contenedores)
“Tasks”
Crear un servicio
Adecuado para
aplicaciones y servicios de
larga duración
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
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
Escalar un servicio
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
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
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
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
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.
Actualizar un servicio (cont.)
Despliega usando el menor espacio:
minimumHealthyPercent = 50%, maximumPercent = 100%
Actualizar un servicio (cont.)
Despliega rápido sin reducir la capacidad del servicio:
minimumHealthyPercent = 100%, maximumPercent = 200%
Demo
Remember to complete
your evaluations!¡No olvide llenar su
evaluación!
¡Gracias!