Comenzando con Docker en AWS

48
Comenzando con Docker en AWS Mauricio Muñoz, Solutions Architect AWS Chile

Transcript of Comenzando con Docker en AWS

Page 1: Comenzando con Docker en AWS

Comenzando con Docker en AWSMauricio Muñoz, Solutions Architect

AWS Chile

Page 2: Comenzando con Docker en AWS

Agenda

¿Por qué contenedores?

Administración de Clústeres

Beneficios

Ejecutando servicios

Page 3: Comenzando con Docker en AWS

¿Por qué Contenedores?

Page 4: Comenzando con Docker en AWS

¿Qué son los Contenedores?

Virtualización de SO

Aislamiento de procesos

Imágenes

AutomatizaciónServidor

SO Guest

Bins/Libs Bins/Libs

App2App1

Page 5: Comenzando con Docker en AWS

Ventajas de los contenedores

Portátil

Flexible

Rápido

EficienteServidor

SO Guest

Bins/Libs Bins/Libs

App2App1

Page 6: Comenzando con Docker en AWS

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

Page 7: Comenzando con Docker en AWS

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

Page 8: Comenzando con Docker en AWS

“Scheduling” (Calendarización)

Page 9: Comenzando con Docker en AWS

Servidor

SO Guest

Bins/Libs Bins/Libs

App2App1

“Scheduling” de un recurso es simple

Page 10: Comenzando con Docker en AWS

“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

Page 11: Comenzando con Docker en AWS

¿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.

Page 12: Comenzando con Docker en AWS

Administración de Clúster

Page 13: Comenzando con Docker en AWS

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

Page 14: Comenzando con Docker en AWS

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

Page 15: Comenzando con Docker en AWS

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

Page 16: Comenzando con Docker en AWS

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

Page 17: Comenzando con Docker en AWS

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

Page 18: Comenzando con Docker en AWS

Amazon ECS: Control de concurrencia

IDN-1 IDN IDN+1 IDN+2 IDN+3 IDN+4 IDN+5

IDN+6

IDN+5

WRITE

READ

Page 19: Comenzando con Docker en AWS

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

Page 20: Comenzando con Docker en AWS

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

Page 21: Comenzando con Docker en AWS

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

Page 22: Comenzando con Docker en AWS

Beneficios

Page 23: Comenzando con Docker en AWS

Fácil administración de Clusters

Nada que ejecutar

Administración de estados

Control y monitoreo

Escalabilidad

Page 24: Comenzando con Docker en AWS

Escalabilidad

Page 25: Comenzando con Docker en AWS

Flexibilidad en la disposición de contenedores

Aplicaciones

Trabajos “batch”

Múltiples schedulers

Page 26: Comenzando con Docker en AWS

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

Page 27: Comenzando con Docker en AWS

Extensible

Conjunto completo de APIs

“Schedulers” personalizados

Agente Open source y CLI

Page 28: Comenzando con Docker en AWS

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

Page 29: Comenzando con Docker en AWS

Ejecutando servicios

Page 30: Comenzando con Docker en AWS

“Task Definitions”

Volume Definitions

Container Definitions

Page 31: Comenzando con Docker en AWS

Task Definitions

Page 32: Comenzando con Docker en AWS

Task Definitions

Page 33: Comenzando con Docker en AWS

“Tasks”

Shared Data

Volume

Containers

schedule

Container

Instance

Volume Definitions

Container Definitions

Page 34: Comenzando con Docker en AWS

Mínima Unidad de trabajo

Agrupa contenedores relacionados

Se ejecutan en instancias (de contenedores)

“Tasks”

Page 35: Comenzando con Docker en AWS

Crear un servicio

Adecuado para

aplicaciones y servicios de

larga duración

Page 36: Comenzando con Docker en AWS

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

Page 37: Comenzando con Docker en AWS

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

Page 38: Comenzando con Docker en AWS

Escalar un servicio

Page 39: Comenzando con Docker en AWS

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

Page 40: Comenzando con Docker en AWS

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

Page 41: Comenzando con Docker en AWS

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

Page 42: Comenzando con Docker en AWS

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

Page 43: Comenzando con Docker en AWS

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.

Page 44: Comenzando con Docker en AWS

Actualizar un servicio (cont.)

Despliega usando el menor espacio:

minimumHealthyPercent = 50%, maximumPercent = 100%

Page 45: Comenzando con Docker en AWS

Actualizar un servicio (cont.)

Despliega rápido sin reducir la capacidad del servicio:

minimumHealthyPercent = 100%, maximumPercent = 200%

Page 46: Comenzando con Docker en AWS

Demo

Page 47: Comenzando con Docker en AWS

Remember to complete

your evaluations!¡No olvide llenar su

evaluación!

Page 48: Comenzando con Docker en AWS

¡Gracias!