Comenzando con Docker en AWS

Post on 21-Jan-2018

76 views 0 download

Transcript of Comenzando con Docker en AWS

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!