amazon ec2 container service

Post on 12-Aug-2015

419 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

©2015, Amazon Web Services, Inc. or its affiliates. All rights reserved

Amazon EC2 Container Service:

Manage Docker-Enabled Apps in EC2

Jafar Shameem

Agenda

• Containers

• EC2 Container Service

Containers

What are containers?

• OS virtualization

• Process isolation

• Images

• Automation Server

Guest OS

Bins/Libs Bins/Libs

App2App1

Container advantages

PortableSame Immutable Images. Run anywhere.

FlexibleCreate Modular Environments. Decompose Apps

FastSpeeds up build and release cycle

EfficientOptimize resource utilization

Server

Guest OS

Bins/Libs Bins/Libs

App2App1

A container pipeline

Base

image

Patches

IT Operations

Utilities

A container pipeline

Base

image

Patches

IT Operations

Ruby

Redis

Logger

Utilities

A container pipeline

Base

image

Patches

IT Operations Developer

Ruby

Redis

Logger

Utilities

App

A container pipeline

Base

image

Patches

IT Operations Developer

Ruby

Redis

Logger

Utilities

App

Server

Guest OS

Bins/Libs Bins/Libs

App2App1

$ docker run myimage

EC2 Container Service

Easily Manage Clusters for Any Scale

• Nothing to run

• Complete state

• Control and monitoring

• Scale

ECS List* and Describe* API actions

Flexible Container Placement

• Applications

• Batch jobs

• Multiple schedulers

Designed for use with other AWS services

• Virtual Private Cloud

• Elastic Load Balancing

• Elastic Block Store

• IAM

• CloudTrail

Extensible

• Comprehensive APIs

• Open source agent

• Custom schedulers

Common Patterns

Pattern 1: Services and applications

• Simple to model

• Micro services

• Blue / green

deployments

Phong Nguyen, Founder at Gilt

Groupe, said, "As we Dockerize

all our services, it is very

important for us to have a

platform that can help us speed

up deployments, automate our

services, and gain greater

efficiencies. The new service

scheduler and ELB integration

make Amazon ECS an excellent

platform for our services.”

Pattern 2: Batch jobs

• Share resource pools

• Ideal for bursty jobs

• Spot instances

“We required a solution on which

we could securely and efficiently

deploy Docker containers to

encapsulate learner

programming assignment

submissions,” said Brennan

Saeta, Architect at Coursera. “We

are using Amazon EC2 Container

Service to power our new

programming assignments

infrastructure for next-generation

On-Demand course platform.”

EC2 Container Service Terminology

• Regional

• Resource pool

• Grouping of Container Instances

• Start empty, dynamically scalable

Key Components: Clusters

• Amazon EC2 instances

• Docker daemon

• Amazon ECS agent

Key Components: Container Instances

Key Components: Task Definitions

Volume definitions

Container definitions

Key Components: Task Definitions{

"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

},

{

"name": "busybox",

"image": "busybox",

"cpu": 10,

"memory": 500,

"volumesFrom": [

{

"sourceContainer": "simple-demo"

}

],

"entryPoint": [

"sh",

"-c"

],

"command": [

"/bin/sh -c \"while true; do

/bin/date > /var/www/my-vol/date; sleep 1; done\""

],

"essential": false

}

{

"environment": [],

"name": "simple-demo",

"image": “amazon/amazon-ecs-sample",

"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

},

Key Components: Task Definitions[

{

"image": "mysql",

"name": "db",

"cpu": 10,

"memory": 500,

"essential": true,

"entryPoint": [

"/entrypoint.sh"

],

"environment": [

{

"name": "MYSQL_ROOT_PASSWORD",

"value": "pass"

}

],

"portMappings": []

}

]

Essential to our Task

Create and mount volumes

Expose port 80 in container

to port 80 on host

10 CPU Units (1024 is full CPU),

500 Megabytes of Memory

{

"name": "busybox",

"image": "busybox",

"cpu": 10,

"memory": 500,

"volumesFrom": [

{

"sourceContainer": "simple-demo"

}

],

"entryPoint": [

"sh",

"-c"

],

"command": [

"/bin/sh -c \"while true; do

/bin/date > /var/www/my-vol/date; sleep 1; done\""

],

"essential": false

}

Key Components: Task Definitions[

{

"image": "tutum/wordpress-stackable",

"name": "wordpress",

"cpu": 10,

"memory": 500,

"essential": true,

"links": [

"db"

],

"entryPoint": [

"/bin/sh",

"-c"

],

"environment": [

],

"portMappings": [

{

"containerPort": 80,

"hostPort": 80

}

]

},

]

From Docker Hub

Mount volume from other container

Command to exec

• Unit of work

• Grouping of related Containers

• Run on Container Instances

Key Components: Tasks

Key Components: Tasks

Container

Instance

Schedule

Shared data volume

PHP AppTime of day

App

Key Components: Run a task

Good for short-lived

containers, e.g.

batch jobs

Key Components: Create a Service

Good for long-

running applications

and services

Key Components: Create Service

• Load Balance traffic across containers

• Automatically recover unhealthy containers

• Discover services

Elastic Load Balancing

Key Components: Update Service

• Scale up

• Scale down

Elastic Load Balancing

Key Components: Update Service

• Deploy new version

• Drain connections

Elastic Load Balancing

Key Components: Update Service

• Deploy new version

• Drain connections

Elastic Load Balancing

Key Components: Update Service

• Deploy new version

• Drain connections

Elastic Load Balancing

More resources

• Service Discovery via Consul with ECS:– https://aws.amazon.com/blogs/compute/service-discovery-via-

consul-with-amazon-ecs/

• Running an Amazon ECS Task on every instance:– https://aws.amazon.com/blogs/compute/running-an-amazon-ecs-

task-on-every-instance/

• Set up a build pipeline with Jenkins and ECS:– https://blogs.aws.amazon.com/application-

management/post/Tx32RHFZHXY6ME1/Set-up-a-build-pipeline-with-Jenkins-and-Amazon-ECS

©2015, Amazon Web Services, Inc. or its affiliates. All rights reserved

Thank You

top related