Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点...

99
1 Amazon EC2 Container Service AWS Black Belt Tech Webinar 2015 Amazon Web Services Japan Solutions Architect, Ryosuke Iwanaga 2015/6/24 ※2015/11/20更新

Transcript of Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点...

Page 1: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

1

Amazon EC2 Container Service

AWS Black Belt Tech Webinar 2015Amazon Web Services JapanSolutions Architect, Ryosuke Iwanaga

2015/6/24

※2015/11/20更新

Page 2: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

2

Agenda

• Containerとは?

• Amazon EC2 Container Service - Basic

• Amazon EC2 Container Service - Update

• Amazon EC2 Container Service - Advanced

• まとめ

Page 3: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

3

Containerとは?

Page 4: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

4

ProcessProcess

Containerとは?

• OS仮想化

• Process隔離

• Image

• 自動化

Server

Bins/Libs Bins/Libs

OS

App1 App2

Dockerfile

OS: Ubuntu

Apache, PHP

Dockerfile

OS: CentOS

Nginx, Ruby

Images

Build

Run Run

Page 5: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

5

Containerの利点

• 可搬性– 不変なImage

• 柔軟性– 削除、再生成が容易

• 速度– OSは既に起動済

• 効率– オーバーヘッド少ない

ProcessProcess

Server

Bins/Libs Bins/Libs

OS

App1 App2

Dockerfile

OS: Ubuntu

Apache, PHP

Dockerfile

OS: CentOS

Nginx, Ruby

Images

Build

Run Run

Page 6: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

6

作業単位としてのContainer

Base

image

Patches

インフラ担当 開発者

Ruby

Redis

Logger

Utilities

App

ローカル開発環境 本番環境

Page 7: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

7

Amazon EC2 Container Service - Basic

Page 8: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

8

Amazon EC2 Container Serviceとは?

• Amazon ECS

• Docker Container群をAmazon EC2のCluster上で管理できるサービス

• 高いスケーラビリティ

• AWSの他の機能・サービスとの連携

Page 9: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

9

Dockerは1台のOSでは非常に簡単に使える

Server

Bins/Libs Bins/Libs

OS

App1 App2

Page 10: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

10

Containerをただ起動するだけの場合

• 今までのアプリケーションと同じ

– 所詮ただのプロセス

• AWS Elastic Beanstalk

• Cluster管理は特に必要ない

・・・

Deploy

Page 11: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

11

何百台ものOSではContainer管理は非常に困難

Page 12: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

12

リソースの利用率問題

• 枠割でInstanceをグルーピングすると、無駄が生じる

• リソース自体とアプリが密結合

35%

85%

Page 13: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

13

Cluster管理の必要性

• Instance毎にアプリ管理しない– リソースの仮想化

• Clusterとして管理すると、適切な配置が可能– Scheduler– Containerならどこ

でも簡単に配置

~80%

Page 14: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

14

Cluster管理とScheduler

• Cluster管理

– 計算機群のリソース、状態を常に管理

• Scheduler

– Cluster全体を見て適切にContainerを配置

CPU: 500

Mem: 300

CPU: 10

Mem: 30 CPU: 2000

Mem: 1000

CPU: 10

Mem: 30CPU: 10

Mem: 30

Scheduler

Cluster Manager

Page 15: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

15 Source: eurosys2013.tudos.org/wp-content/uploads/2013/paper/Schwarzkopf.pdf

Page 16: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

16

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

http://aws.typepad.com/sajp/2015/07/under-the-hood-of-the-amazon-ec2-container-service.html

Page 17: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

17

Cluster管理のユースケース

• Service & Application– シンプルなモデル Docker imageをbuild, test, deploy

– Microservices

– Blue-Greenデプロイ

• Batch Jobs– リソースを共有することで、バーストにも対応しやすい

– Auto Scaling/RI/Spotを使って、よりコストを下げる

Page 18: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

18

Amazon EC2 Container Serviceの利点

Cluster管理はお任せ状態管理、操作、監視スケーラブル

簡単に、どんなスケールのClusterも管理できる

柔軟なContainerの配置

他のAWSサービスとの連携がデザインされている

拡張性の高さアプリケーションバッチジョブ複数のScheduler

Elastic Load Balancing, Amazon EBS, Amazon VPC, AWS IAM, AWS CloudTrail

包括的なAPIオープンソースAgentカスタムScheduler

Page 19: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

19

必要な要素

• Cluster管理– Cluster全体の状態管理

• グループ化– 同一マシンで動かしたい

Container群の管理

• Scheduler– タスク配置、状態管理、

デプロイ

Page 20: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

20

Cluster

Container Instance

Amazon ECSにおけるContainer管理の概要図

• Cluster管理– Cluster, Container

Instance, Agent

• グループ化– Task Definition, Task,

Container

• Scheduler– Run Task, Service

Agent

Task

Container

Container

Task

Service

Task Definition

Agent

Task

Task Definition

Run Task

Page 21: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

21

Amazon ECSチュートリアル

• Container Instanceを起動し、Agentを稼働させる

Container Instance

Agent Agent

Page 22: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

22

Amazon ECSチュートリアル

• 指定したClusterにContainer Instanceが登録される

Cluster

Container Instance

Agent Agent

Page 23: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

23

Cluster

Container Instance

Amazon ECSチュートリアル

• Task Definitionを定義する

Agent Agent

Task DefinitionTask Definition

Page 24: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

24

Cluster

Container Instance

Amazon ECSチュートリアル

• Run TaskでBatch Taskを開始

Agent Agent

Task DefinitionTask Definition

Run Task

Page 25: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

25

Cluster

Container Instance

Amazon ECSチュートリアル

• 自動でContainer InstanceにTaskが割り振られる

Agent Agent

Task Definition

Task

Task Definition

Run Task

Page 26: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

26

Cluster

Container Instance

Amazon ECSチュートリアル

• Task内のContainerが起動する

Agent Agent

Task Definition

Task

Task Definition

Run Task

Page 27: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

27

Cluster

Container Instance

Amazon ECSチュートリアル

• ServiceでWeb Taskを開始する

Agent Agent

Task

Task Definition

Run Task Service

Task Definition

Page 28: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

28

Cluster

Container Instance

Amazon ECSチュートリアル

• 自動でContainer InstanceにTaskが割り振られる

Agent Agent

Task

Task Definition

Run Task

Task

Service

Task Definition

Task

Page 29: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

29

Cluster

Container Instance

Amazon ECSチュートリアル

• Task内のContainerが起動する

• もし設定していれば、Elastic Load Balancingに登録

Agent Agent

Task

Task Definition

Run Task

Task

Container

Container

Service

Task Definition

Task

Page 30: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

30

Amazon ECS Components

Page 31: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

31

Run Task

Amazon ECS: Cluster管理

• Cluster管理– Cluster, Container

Instance, Agent

• グループ化– Task Definition, Task,

Container

• Scheduler– Run Task, Service

Service

Task DefinitionTask Definition

Cluster

Container Instance

Task

Container

Container

Task

Agent

Task

Agent

Page 32: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

32

Amazon ECS: Cluster

• Container Instanceの集合体

• Cluster内のInstanceが持つリソースをまとめて管理

Page 33: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

33

Amazon ECS: Container Instance

• ContainerのホストとなるAmazon EC2

• VPC内の任意のInstanceを利用可能– Docker+ECS Agentが

動いていることが必要

– Amazon ECS-optimized AMI

Page 34: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

34

Amazon ECS: Agent

• Amazon ECSのendpointと通信するAgent

• Go言語製のDockerimage

• Docker Hubで提供

Page 35: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

35

Run Task

Amazon ECS: グループ化

• Cluster管理– Cluster, Container

Instance, Agent

• グループ化– Task Definition, Task,

Container

• Scheduler– Run Task, Service

Service

Cluster

Container Instance

Agent Agent

Task

Container

Container

Task Task

Task DefinitionTask Definition

Page 36: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

36

Amazon ECS: Task Definition

• Containerの集合を定義

– 必ず同じInstanceで稼働

– 要求するリソースを指定

• CPU, memory, (Port)

• ボリュームも定義可能

– Instanceのファイルシステムを利用できる

• バージョニングが可能

Page 37: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

37

Task Definition: Overview

Volume definitions

Container definitions

Container Instanceのファイルシステムをマウントする場合、定義する

稼働させるContainerの情報を定義する

Page 38: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

38

Task Definition: Overview

Shared data volume

PHP AppTime of day

App

Task Definition

Page 39: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

39

Task Definition: Overview

Container

Instance

Schedule

Shared data volume

PHP AppTime of day

App

Task Definition Task

Page 40: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

40

Task Definition: Container Definition{"name": "simple-demo","image": "foo/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": [

"while true; do /bin/date > /var/www/my-vol/date; sleep 1; done"

],

"essential": false

}

Page 41: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

41

{"name": "simple-demo","image": "foo/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

},

[

{

"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

Mount volumes

Expose port 80 in container

to port 80 on host

10 CPU Units (1024 is full CPU),

500 Megabytes of Memory

Task Definition: Container Definition

Page 42: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

42

{

"name": "busybox",

"image": "busybox",

"cpu": 10,

"memory": 500,

"volumesFrom": [

{

"sourceContainer": "simple-demo"

}

],

"entryPoint": [

"sh",

"-c"

],

"command": [

"while true; do /bin/date > /var/www/my-vol/date; sleep 1; done"

],

"essential": false

}

[

{

"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

Task Definition: Container Definition

Page 43: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

43

Amazon ECS: Task

• Task Definitionが実体化されたもの– 1つのTask Definition

から複数のTaskが生成

• リソースに余裕のあるContainer Instanceで実行される

Page 44: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

44

Amazon ECS: Container

• Taskの実体であるDocker Container

– 1つのTaskに複数のContainerが含まれる

• Container Instance上で実行される

Page 45: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

45

Amazon ECS: Scheduler

• Cluster管理– Cluster, Container

Instance, Agent

• グループ化– Task Definition, Task,

Container

• Scheduler– Run Task, Service Cluster

Container Instance

Agent Agent

Task

Container

Container

Task Task

Task DefinitionTask Definition

ServiceRun Task

Page 46: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

46

Amazon ECS: Run Task

• Batchジョブの様なワークロードに最適

• Task Definitionから指定した数のTaskを実行する– Container Instance

は自動的に選ばれる

Page 47: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

47

Amazon ECS: Service

• Web/APIの様に長期稼働するワークロードに最適

• Taskを必要数保ってくれるスケジューラ– 自動復旧にも対応

• 新しいTask Definitionをデプロイしつつ切替

• Elastic Load Balancingとの連携も可能

Page 48: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

48

Amazon ECS: Serviceの例

Page 49: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

49

Amazon ECS: ServiceのUpdate

• Serviceが使うTask DefinitionをUpdateすると、新しいTaskをデプロイできる

• 空いているリソースで新しいTaskを起動しながら、徐々に古いTaskを止めていく– 中間では、新旧のTaskが混在する

Page 50: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

50

Cluster

Amazon ECS: ServiceのUpdate

Service

Task Definition:1

Task:1Task:1 Task:1

Page 51: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

51

Cluster

Amazon ECS: ServiceのUpdate

Service

Task Definition:1 Task Definition:2

Task:1Task:1 Task:1

Page 52: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

52

Cluster

Amazon ECS: ServiceのUpdate

Service

Task Definition:1 Task Definition:2

Task:1Task:1 Task:1Task:2 Task:2

Page 53: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

53

Cluster

Amazon ECS: ServiceのUpdate

Service

Task Definition:1 Task Definition:2

Task:1Task:2 Task:2

Page 54: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

54

Cluster

Amazon ECS: ServiceのUpdate

Service

Task Definition:1 Task Definition:2

Task:1Task:2 Task:2Task:2

Page 55: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

55

Cluster

Amazon ECS: ServiceのUpdate

Service

Task Definition:1 Task Definition:2

Task:2 Task:2Task:2

Page 56: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

56

Amazon ECS: 利用料金

• Amazon ECS自体の利用料は不要

• Container Instanceとして使用するAmazon EC2の料金– On-demand/RI/Spotの料金、Amazon EBSの料金

– Spotを利用する場合はTerminateされる可能性を考慮する

• Elastic Load Balancingを利用する場合はElastic Load Balancingの料金

Page 57: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

57

Amazon EC2 Container Service - Update

Page 58: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

58

New: Amazon EC2 Container Registry

• 完全マネージドなDocker containe registry

• Amazon ECSと連携

• 通信経路、保存時に暗号化

• IAMユーザ、ロール

• 高い可用性とスケーラビリティ

• 複数のリージョンで利用可能

• $0.10/GB/月 + AWSデータ転送料

• もう間もなくです! サインアップすると、通知や早期アクセスの可能性aws.amazon.com/ecr

Page 59: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

59

New: Amazon EC2 Container Registry

aws.amazon.com/ecr

• 完全マネージドなDocker containe registry

• Amazon ECSと連携

• 通信経路、保存時に暗号化

• IAMユーザ、ロール

• 高い可用性とスケーラビリティ

• 複数のリージョンで利用可能

• $0.10/GB/月 + AWSデータ転送料

• もう間もなくです! サインアップすると、通知や早期アクセスの可能性

Page 60: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

60

New: AZを意識したScheduling

• Service Schedulerの機能

• 可用性の向上、より効率の良い負荷分散

• 新しいTaskがAZにまたがってバランスが保たれる

Page 61: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

61

New: ECS CLI

• 最初のリリース

• ローカルでの開発を簡素に

• ECS Clusterを簡単に構築

• Docker Composeをサポート

• オープンソース

github.com/aws/amazon-ecs-cli

$ ecs-cli configure -i$ ecs-cli up$ ecs-cli compose up$ ecs-cli compose ps

Page 62: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

62

New: Docker Containerの設定オプション等の改善

• ECSのTask Definitionでより多くのオプションをサポート

• アドバンスドなDockerユーザに最適

• 新しく追加された項目

– Hostname

– Docker labels

– Working directory

– Privileged execution

– Log configuration

– …この他にも!

– (ドキュメントをご覧ください)

• UDP対応

http://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/task_definition_parameters.html

Page 63: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

63

New: Amazon CloudWatchメトリクス追加

• Cluster Utilization– CPU/Memoryの利用率を、

Cluster全体を100%して計算

– Instance Type毎の違いを正規化するので、複数Type混合でもok

• Service Utilization– CPU/Memoryの利用率を、Task

Definitionの数値×Task数を100%として計算

– Data Samplesを見ると、RUNNINGなTask数も分かる

Amazon ECSのコンソール

CloudWatch Dashboard

http://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/cloudwatch-metrics.html

Page 64: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

64

Amazon EC2 Container Service - Advanced

Page 65: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

65

Amazon ECS: Volumes

• HostのfilesystemをContainerでmountできる仕組み※

– Container間の共有storageとして

– 永続storageとして

• Task Definitionでvolumesを定義する

Host

Container 1

Container 2

※ http://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_data_volumes.html

Page 66: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

66

Amazon ECS: Volumesの永続化/非永続化

• Hostに永続化する時– volumesでHostのパスを

host.sourcePathで定義する

• Hostに永続化しない時– 上記を指定しないと、Task

起動時に空のvolumeが作成される

– 使っているContainerが無くなったらDockerに回収される

←永続化する

←永続化しない

※ http://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_data_volumes.html

Page 67: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

67

Amazon ECS: Volumesのmount方法

• mountPointsで指定– volumesをContainerの

どこにmountするか

– readOnlyにもできる

• volumesFromで指定– sourceContainerと同じ

様にmountさせる指定方法

←何をどこにmountするか定義

←webと同じ様にmountする定義

※ http://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_data_volumes.html

Page 68: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

68

Amazon ECS: CPU/Memory

• CPUの単位は「1024 unit = 1 core」※

– unitを指定すると、最低それだけは使えることが保証される

– もし指定量以上を使おうとした時は、CPUに空きがあれば使える

– CPUに空きがなくなると、unitを元にキャップがかかる

• Memoryの単位は「MiB」※

– もし指定量以上を確保しようとすると、Containerは殺される

※ http://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html

Page 69: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

69

Amazon ECS: Dynamic Port Mapping

• Task起動時にHost上の空きポートが自動的にマッピングされる

– OSのephemeral port

• Task DefinitionでhostPortを0または指定しないと利用可能※ Container Instance

Task

Container

Task

Container

49200

Task Definition

※ http://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html

80

49201 80

Page 70: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

70

Amazon ECS: Dynamic Port Mapping制約

• Elastic Load Balancing連携では、現状利用できない– Elastic Load Balancing側の

仕様でDynamic Portに対応していないため

• この場合、hostPortを固定する必要がある– 同一Taskは、1つの

Container Instance上に1つまで

49200

49201

49202✘

・Instance毎にポート変更できない・1 Instanceの複数ポートを登録できない

8080

8080✔※ http://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-load-balancing.html

Page 71: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

71

Amazon ECS: IAM Roles

• Instance Role– Container InstanceのProfileに指定

• AWS Managed Policy: AmazonEC2ContainerServiceforEC2Role

– Amazon ECSのAPIを実行できること

• Service Role– Serviceが利用するRoleを指定

• AWS Managed Policy: AmazonEC2ContainerServiceRole

– Amazon EC2, Elastic Load BalancingのAPIを実行できること

• いずれもGetting Startedで自動作成される

※ http://docs.aws.amazon.com/AmazonECS/latest/developerguide/IAM_policies.html

Page 72: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

72

Amazon ECS: Auto Scaling

• Container InstanceのAuto Scaling増減にServiceのDesired Tasksは追従しない– Container Instanceの数が増減したからといって、自動でTask

の数が増減するということはない

• 自動で増減させたければ、何かしらのAPI連携が必要– 例: Auto Scaling Groupの増減→Amazon SNS→AWS

Lambda→Amazon ECS ServiceのDesiredCountを増減※

※ http://dev.classmethod.jp/cloud/ecs-integrate-autoscaling-by-lambda/

Page 73: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

73

Amazon ECS: Agent Update

• マネージメントコンソールやCLIから、Agentをアップデート可能

• Amazon ECS-optimized AMIで利用可能

※ http://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-update.html

Page 74: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

74

Amazon ECS: Task Override

• Run TaskではTask Definitionの一部をOverride可能※

– Command

– Environment

• Serviceでは未対応

※ http://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_run_task.html

Page 75: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

75 https://aws.amazon.com/docker/

AWS Container Partners

Page 76: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

76

まとめ

Page 77: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

77

Amazon ECSでCluster管理を実現しよう

• Docker ContainerのためのCluster管理サービス

• マネージドで提供されるのが大きな特徴

• シンプルな仕組みなので、拡張性が高い

Page 78: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

78

参考資料(英語)

• Amazon EC2 Container Service Developer Guidehttp://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html

• Amazon EC2 Container Service FAQhttp://aws.amazon.com/ecs/faqs/

• AWS CLI – ecshttp://docs.aws.amazon.com/cli/latest/reference/ecs/index.html

Page 79: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

79

Q&A

次回Webinarのお申し込みhttp://aws.amazon.com/jp/event_schedule/

Page 80: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

80

Webinar資料の配置場所

• AWS クラウドサービス活用資料集– http://aws.amazon.com/jp/aws-jp-introduction/

Page 81: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

81

公式Twitter/FacebookAWSの最新情報をお届けします

@awscloud_jp

検索

最新技術情報、イベント情報、お役立ち情報、お得なキャンペーン情報などを日々更新しています!

もしくはhttp://on.fb.me/1vR8yWm

Page 82: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

82

ご参加ありがとうございました。

Page 83: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

83

Appendix

Page 84: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

84

Resource Utility of Heterogeneous Instances

Amazon ECSAmazon EC2

Spot Fleet+

c3.xlarge

c3.xlarge

c3.xlarge

r3.8xlarge

r3.8xlarge

r3.8xlarge

c3.8xlarge

c3.8xlarge

c3.8xlarge

c3.4xlarge

c3.4xlarge

c3.4xlarge

r3.2xlarge

r3.2xlarge

r3.2xlarge

Page 85: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

85

Amazon ECS: Per Instance Limitation

• 現時点ではContainer単位ではなくInstance単位となっているもの

• Security Group– 全てのContainerの最大公約数的な指定が必要– Elastic Load Balancingを通せば外部からの通信は絞れる

• IAM Roles– 全てのContainerの最大公約数的な指定が必要

• AWS CloudWatch metrics– Container毎のメトリクスは取得されない (Cluster/Service毎は取得される)– 必要であれば、他のソリューションとの組み合わせ

Page 86: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

86

Amazon ECS: AWS Elastic Beanstalk

• Multicontainer DockerEnvironment

• 実は裏側でAmazon ECSを使っている– Cluster, Container

Instance, Task Definition, Taskが自動生成される

※ http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_docker_ecs.html

Page 87: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

87

Amazon ECS: AWS Elastic Beanstalk

• Dockerrun.aws.jsonの記述は、Task Definitionとほぼ同じ※

– AWSEBDockerrunVersionに"2"を指定

– Single container Docker Environment(Version 1)とは違う形式

• Auto Scalingで増えたInstanceにもTaskが自動で配置される– Service/Run Taskスケジューラは使用していない

– startTask APIでContainer Instanceを指定してTaskを実行

※ http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_docker_v2config.html

Page 88: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

88

Cluster

Amazon ECS: Docker Registry

• Amazon EC2 Container Registry (Coming soon)

• Docker Hub等のprivate image利用可能※

– AgentにECS_ENGINE_AUTH_* 環境変数で認証情報を渡す

• Amazon ECS上にPrivate Registryを立てることも可能

※ http://docs.aws.amazon.com/AmazonECS/latest/developerguide/private-auth.html

Service

Task Definition

registry:2

Service

Task Definition

docker.local/foo

docker.local

Page 89: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

89

Amazon ECS: Logging

• Containerのログを集める必要がある– Containerが終了すると

ファイルは消えてしまう

• 例: Task DefinitionでLogger Containerを定義– rsyslogでログを受け取っ

て送る※

– 共有Volumeを使って書かれたログを送る

※ https://blogs.aws.amazon.com/application-management/post/TxFRDMTMILAA8X/Send-ECS-Container-Logs-to-CloudWatch-Logs-for-Centralized-Monitoring

例: Logger Containerはrsyslogでログを受け取り、CloudWatch Logs agentでログを転送する

Page 90: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

90

Amazon ECS: Service Discovery

• Dynamic Port Mappingを活用したい時に必要– IPアドレス+hostPortのリス

トを動的に管理する

• 例: consul + registrator※

– registrator経由でconsulにHostのIPアドレスとhostPortが保存される

– DNSのSRVレコードでIPアドレスとPortが取り出せる

※ https://aws.amazon.com/blogs/compute/service-discovery-via-consul-with-amazon-ecs/

例: stock-priceとweatherはregistratorによってconsulにIPアドレスとportが登録されるので、portalはDNSのSRVレコードでdiscoveryできる

Page 91: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

91

ContainerとDevOps

Page 92: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

92

DevOpsとは?

DevOps = ライフサイクルを高速化する効率の良さ

開発者 顧客

releasetestbuild

plan monitor

デリバリのパイプライン

フィードバックループ

ソフトウェア開発のライフサイクル

Page 93: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

93

DevOps lifecycle

Build Test ProductionDevelopment

<>

<>

Application

CodeArtifact

Page 94: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

94

DevOps lifecycle

Build Test ProductionDevelopment

<>

<>

Application

CodeArtifact

AWS

CodePipeline

AWS

CodeDeploy

Page 95: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

95

DevOps lifecycle

Build Test ProductionDevelopment

<>

<>

+AMI Provisioning

Code

Application

CodeArtifact

Provisioning

Code

{}Config

{}Config

{}Config

AWS

CodePipeline

AWS

CodeDeploy

Page 96: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

96

DevOps lifecycle

Build Test ProductionDevelopment

<>

<>

+AMI Provisioning

Code

Application

CodeArtifact

Provisioning

Code

{}Config

{}Config

{}Config

AWS

Elastic Beanstalk

AWS

OpsWorks

AWS

CodePipeline

AWS

CodeDeploy

Page 97: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

97

After Docker…

+ <>+

Build Test ProductionDevelopment

<>

<>

+{} {} {}

Page 98: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

98

After Docker…

+Provisioning

Code

<>

Application

Code

Docker

Image

+

DockerfileDocker

Image

Build Test ProductionDevelopment

Page 99: Amazon EC2 Container Service...2015/06/24  · 18 Amazon EC2 Container Serviceの利点 Cluster管理はお任せ 状態管理、操作、監視 スケーラブル 簡単に、どんなスケールの

99

After Docker…

Build Test ProductionDevelopment

+Provisioning

Code

<>

Application

Code

Docker

Image

+

DockerfileDocker

Image

Amazon ECS

Amazon ECR