docker on aws

61
© 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Sr. Product Marketing Manager Container Services, AWS May 2016 Amazon ECS Production Docker at Scale Aaron Kao

Upload: amazon-web-services

Post on 23-Jan-2017

282 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Docker on AWS

© 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved.

Sr. Product Marketing Manager

Container Services, AWS

May 2016

Amazon ECS

Production Docker at ScaleAaron Kao

Page 2: Docker on AWS

Agenda

Scaling Applications

How ECS Helps

Container Management

Modeling Applications

Tracking Resource Changes

Schedulers

Integrations

Demo

Page 3: Docker on AWS

Scaling Applications

Page 4: Docker on AWS

Order UI User UIShipping

UI

Order

Service

User

Service

Shipping

Service

Data

Access

A Monolithic Architecture

Page 5: Docker on AWS

Scaling a Monolithic Architecture

Page 6: Docker on AWS

Order UI User UIShipping

UI

Order

Service

User

Service

Shipping

Service

A Microservices Architecture

Page 7: Docker on AWS

Order UI User UI UI

Order

ServiceService

Shipping

Service

Order UIOrder UI

User UI UIShipping

UI

Order

ServiceOrder

Service

ServiceService

ServiceService

User

Service

Shipping

Service

Scaling a Microservices Architecture

Page 8: Docker on AWS

Docker

Page 9: Docker on AWS

Container Advantages

Portable

Flexible

Fast

EfficientServer

Guest OS

Bins/Libs Bins/Libs

App2App1

Page 10: Docker on AWS

Containers are Natural for Microservices

Simple to model

Any app, any language

Image is the version

Test & deploy same artifact

Stateless servers decrease change risk

Page 11: Docker on AWS

Server

Guest OS

Bins/Libs Bins/Libs

App2App1

Managing One Host is Straightforward

Page 12: Docker on AWS

Managing a Fleet is Hard

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

AZ 1 AZ 2

AZ 3

Page 13: Docker on AWS

How ECS Helps

Page 14: Docker on AWS

What is Amazon ECS?

Amazon EC2 Container Service (Amazon ECS) is a highly

scalable, high performance container management

service.

You can use Amazon ECS to schedule the placement of

containers across your cluster.

You can also integrate your own scheduler or third-party

scheduler to meet business or application specific

requirements.

Page 15: Docker on AWS

Container Management at Any Scale

Nothing to run

Complete state

Control and monitoring

Scale

Page 16: Docker on AWS

Flexible Container Placement

Long running applications

Batch jobs

Multiple schedulers

Page 17: Docker on AWS

Integration with the AWS Platform

Elastic Load Balancing

Amazon Elastic Block Store

Amazon Virtual Private Cloud

Amazon CloudWatch

AWS Identity and Access Management

AWS CloudTrail

Page 18: Docker on AWS

Container Management

Page 19: Docker on AWS

What is Container Management?

• Maintains available resources

• Tracks resource changes

• Accepts resource requests

• Guarantees accuracy and

consistency

Page 20: Docker on AWS

Resources

CPU

Memory

Ports

Disk space

Disk IOPS

Network bandwidth

Page 21: Docker on AWS

ECS Container Management

Docker

Task

Container Instance

Container

Task

Container

Docker

Task

Container Instance

Container

Task

Container

Docker

Task

Container Instance

Container

Task

Container

AZ 1 AZ 2

Cluster Management Engine

Page 22: Docker on AWS

ECS Agent

Docker

Task

Container Instance

Container

ECS Agent

Task

Container

https://github.com/aws/amazon-ecs-agent

Page 23: Docker on AWS

Modeling Applications

Page 24: Docker on AWS

How do you model your applications?

Page 25: Docker on AWS

{

"environment": [],

"name": "simple-demo",

"image": "my-demo",

"cpu": 10,

"memory": 500,

"portMappings": [

{

"containerPort": 80,

"hostPort": 80

}

],

"mountPoints": [

{

"sourceVolume": "my-vol",

"containerPath": "/var/www/my-vol"

}

],

"entryPoint": [

"/usr/sbin/apache2",

"-D",

"FOREGROUND"

],

"essential": true

},

How do you model your applications?

Page 26: Docker on AWS

Tasks

Shared Data Volume

Containers

launchContainer

Instance

Volume Definitions

Container Definitions

Page 27: Docker on AWS

Starting a Task

API

User /

Scheduler

StartTask

Page 28: Docker on AWS

Starting a Task

API

User /

Scheduler

StartTask

Cluster Management Engine

Page 29: Docker on AWS

Starting a Task

API

User /

Scheduler

StartTask

Cluster Management Engine

Agent Communication

Page 30: Docker on AWS

Starting a Task

API

User /

Scheduler

StartTask

Cluster Management Engine

Agent Communication

Docker

Container Instance

ECS Agent

Task

Container

WebSocket

Page 31: Docker on AWS

Starting a Task

StartTask

Cluster Management Engine

Agent Communication

Docker

Task

Container Instance

Container

ECS Agent

Task

Container

SubmitStateChange

API

User /

Scheduler

Page 32: Docker on AWS

Schedulers

Page 33: Docker on AWS

What is a Scheduler?

Determine desired state

Check against current state

Perform action

Page 34: Docker on AWS

Amazon ECS Service Scheduler

Models a long-running application

Maintains desired state

Optionally runs behind an Elastic Load Balancing load balancer

Page 35: Docker on AWS

Integrations

Page 36: Docker on AWS

Extensible

Comprehensive APIs

Custom schedulers

Open source agent and CLI

Page 37: Docker on AWS

Partners

Page 38: Docker on AWS

Demo

Page 39: Docker on AWS

Takeaways

Page 40: Docker on AWS

Thank you!

Page 41: Docker on AWS

Appendix

Page 42: Docker on AWS

Discovering DifferencesDeployment Status Desired Pending Running

ecs-svc/1 PRIMARY 5 0 0

Minimum Healthy Maximum Healthy

50% 200%

Page 43: Docker on AWS
Page 44: Docker on AWS

Discovering DifferencesDeployment Status Desired Pending Running

ecs-svc/2 PRIMARY 10 0 0

ecs-svc/1 ACTIVE 5 0 5

Minimum Healthy Maximum Healthy

50% 200%

Page 45: Docker on AWS
Page 46: Docker on AWS

Other Considerations

• ELB registration/deregistration

• Permissions and errors

• Task health

• Scale down requests

Page 47: Docker on AWS
Page 48: Docker on AWS

Guaranteeing Accuracy and Consistency

Page 49: Docker on AWS

Amazon ECS Under the Hood

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

IDN+6

IDN+5

WRITE

READ

Page 50: Docker on AWS

Amazon ECS Under the Hood

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

IDN+6IDN+3

IDN+5IDN+2

WRITE WRITE

READREAD

Page 51: Docker on AWS

Scalable

Page 52: Docker on AWS

Multiple Schedulers

Page 53: Docker on AWS

Amazon ECS: Scheduling

Page 54: Docker on AWS

Amazon ECS: Scheduling

Page 55: Docker on AWS

Amazon ECS: Scheduling

Page 56: Docker on AWS

Amazon ECS: Scheduling

Page 57: Docker on AWS

To recap

Page 58: Docker on AWS
Page 59: Docker on AWS

{

"environment": [],

"name": "simple-demo",

"image": "my-demo",

"cpu": 10,

"memory": 500,

"portMappings": [

{

"containerPort": 80,

"hostPort": 80

}

],

"mountPoints": [

{

"sourceVolume": "my-vol",

"containerPath": "/var/www/my-vol"

}

],

"entryPoint": [

"/usr/sbin/apache2",

"-D",

"FOREGROUND"

],

"essential": true

},

“Task Definitions”

Page 60: Docker on AWS

Docker

Task

Container Instance

Amazon

ECS

Container

ECS Agent

ELB

Internet

ELB

User / Scheduler

API

Cluster Management Engine

Task

Container

Docker

Task

Container Instance

Container

ECS Agent

Task

Container

Docker

Task

Container Instance

Container

ECS Agent

Task

Container

AZ 1 AZ 2

Key/Value Store

Agent Communication Service

Page 61: Docker on AWS