Transcript
Page 1: Amazon EC2 Container Service (Amazon ECS) 概要

1

Amazon EC2 Container Service

2015/7/27 JAWS Container #1

Ryosuke Iwanaga, Amazon Data Services Japan

Page 2: Amazon EC2 Container Service (Amazon ECS) 概要

2

自己紹介

• Ryosuke Iwanaga (岩永 亮介)– a.k.a @riywo

• Amazon Data Services Japan

• Solutions Architect– Startup, Gaming

– Big Data / Deployment / Container

• Before Amazon– Software Engineer / Ops Engineer / DBA / etc.

Page 3: Amazon EC2 Container Service (Amazon ECS) 概要

3

Solutions Architect, Amazon Data Services Japan

• AWSの日本での利用促進を行っています

– AWSに関する技術支援(無料)

– セミナー、ハンズオン等登壇

– ブログ、Webinar等で情報発信• Amazon Web Services ブログ

• AWS Solutions Architect ブログ

• AWS Black Belt Tech Webinar

• AWS 初心者向け Webinar

• などなど!

Page 4: Amazon EC2 Container Service (Amazon ECS) 概要

4

AWS Black Belt Tech Webinar 2015

• 今後の配信予定 #awsblackbelt7月は「AWS 運用機能月間」、8月は「DB月間」です!– 7/29(水)AWS CloudHSM & AWS KMS

– 8/5 (水)Amazon DynamoDB

– 8/12(水)お盆のためお休み

– 8/19(水)Amazon ElastiCache

– 8/26(水)Amazon Redshift

• イベントスケジュールhttp://aws.amazon.com/jp/event_schedule/

Page 5: Amazon EC2 Container Service (Amazon ECS) 概要

5

AWS初心者向けWebinar

• AWSをこれからご使用になる技術者向け、ソリューションカットのセミナー

• 今後の配信予定 ※18時~19時15分の時間帯です!

7月28日(火)「RDBのAWSへの移行方法(Oracleを例に)」

8月11日(火)「AWS からの E メール送信」

8月25日(火)「AWS 上に Web サーバーシステムを作ってみましょう~仮想サーバーから[演習つき]」

• 申し込みサイト

– http://aws.amazon.com/jp/about-aws/events/

Page 6: Amazon EC2 Container Service (Amazon ECS) 概要

6

We are hiring!!

http://aws.amazon.com/jp/careers/

Page 7: Amazon EC2 Container Service (Amazon ECS) 概要

7

アジェンダ

• コンテナとは?

• クラスタ管理とは?

• Amazon ECS概要

※参考情報としてBlack Belt Tech Webinarの資料もご活用下さい。

http://www.slideshare.net/AmazonWebServicesJapan/aws-blackbelt-2015-ecs

Page 8: Amazon EC2 Container Service (Amazon ECS) 概要

8

コンテナとは?

Page 9: Amazon EC2 Container Service (Amazon ECS) 概要

9

ProcessProcess

コンテナとは?

• OS仮想化

• プロセス隔離

• イメージ

• 自動化

Server

Bins/Libs Bins/Libs

OS

App1 App2

Dockerfile

OS: Ubuntu

Apache, PHP

Dockerfile

OS: CentOS

Nginx, Ruby

Images

Build

Run Run

Page 10: Amazon EC2 Container Service (Amazon ECS) 概要

10

コンテナの利点

• 可搬性– 不変なイメージ

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

• 速度– 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 11: Amazon EC2 Container Service (Amazon ECS) 概要

11

作業単位としてのコンテナ

Base

image

Patches

インフラ担当 開発者

Ruby

Redis

Logger

Utilities

App

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

Page 12: Amazon EC2 Container Service (Amazon ECS) 概要

12

クラスタ管理とは?

Page 13: Amazon EC2 Container Service (Amazon ECS) 概要

13

コンテナをただ起動するだけの場合

• 今までのアプリケーションと一緒

– 所詮ただのプロセス

• AWS Elastic BeanstalkのDocker

• クラスタ管理は別に必要ない

・・・

Deploy

Page 14: Amazon EC2 Container Service (Amazon ECS) 概要

14

リソースの利用率問題

• 枠割毎のインスタンスのグルーピングでは、どうしても無駄が生じる

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

35%

85%

Page 15: Amazon EC2 Container Service (Amazon ECS) 概要

15

クラスタ管理の必要性

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

• クラスタとして管理すると、適切な配置が可能– スケジューラ

– コンテナならどこでも簡単に配置

~80%

Page 16: Amazon EC2 Container Service (Amazon ECS) 概要

16

クラスタ管理とスケジューラ

• クラスタ管理

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

• スケジューラ

– クラスタ全体を見て、適切にコンテナを配置

CPU: 500

Mem: 300

CPU: 10

Mem: 30 CPU: 2000

Mem: 1000

CPU: 10

Mem: 30CPU: 10

Mem: 30

Scheduler

Cluster Manager

Page 17: Amazon EC2 Container Service (Amazon ECS) 概要

17

Amazon EC2 Container Serviceの概要

Page 18: Amazon EC2 Container Service (Amazon ECS) 概要

18

Amazon EC2 Container Serviceの利点

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

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

柔軟なコンテナの配置

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

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

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

包括的なAPIオープンソースエージェントカスタムスケジューラ

Page 19: Amazon EC2 Container Service (Amazon ECS) 概要

19

コンテナ管理に必要な要素

• クラスタ管理

– クラスタ全体の状態管理

• グループ化

– 同一マシンで動かしたいコンテナ群の管理

• スケジューラ

– タスク配置、デプロイ、死活監視

Page 20: Amazon EC2 Container Service (Amazon ECS) 概要

20

Cluster

Container Instance

Amazon ECSにおけるコンテナ管理の概要図

• クラスタ管理– Cluster, Container

Instance, Agent

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

Container

• スケジューラ– Run Task, Service

Agent

Task

Container

Container

Task

Service

Task Definition

Agent

Task

Task Definition

Run Task

Page 21: Amazon EC2 Container Service (Amazon ECS) 概要

21

Amazon ECSデモ動画

https://www.youtube.com/watch?v=1wLMLwjCqN4

Page 22: Amazon EC2 Container Service (Amazon ECS) 概要

22

Run Task

Amazon ECS: クラスタ管理

• クラスタ管理– Cluster, Container

Instance, Agent

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

Container

• スケジューラ– Run Task, Service

Service

Task DefinitionTask Definition

Cluster

Container Instance

Task

Container

Container

Task

Agent

Task

Agent

Page 23: Amazon EC2 Container Service (Amazon ECS) 概要

23

Amazon ECS: Cluster

• Container Instanceの集合体

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

Page 24: Amazon EC2 Container Service (Amazon ECS) 概要

24

Amazon ECS: Container Instance

• コンテナのホストとなるAmazon EC2

• VPC内の任意のインスタンスを利用可能

– Docker+ECS Agentが動いていることが必要

– Amazon ECS-optimized AMI

Page 25: Amazon EC2 Container Service (Amazon ECS) 概要

25

Amazon ECS: Agent

• Amazon ECSのendpointと通信するエージェント

• Go言語製のDockerimage

• Docker Hubで提供

Page 26: Amazon EC2 Container Service (Amazon ECS) 概要

26

Run Task

Amazon ECS: グループ化

• クラスタ管理– Cluster, Container

Instance, Agent

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

Container

• スケジューラ– Run Task, Service

Service

Cluster

Container Instance

Agent Agent

Task

Container

Container

Task Task

Task DefinitionTask Definition

Page 27: Amazon EC2 Container Service (Amazon ECS) 概要

27

Amazon ECS: Task Definition

• コンテナの集合を定義– 必ず同じインスタンスで

稼働

– 要求するリソースを指定• CPU, memory, (Port)

• ボリュームも定義可能– インスタンスのファイル

システムを利用できる

• バージョニングが可能

Page 28: Amazon EC2 Container Service (Amazon ECS) 概要

28

参考: Docker Compose / Docker Swarm

• Docker Compose ≒ Task Definition– docker-compose.ymlとTask DefinitionのJSONを変換するツールを

作っている方もいます

• https://github.com/ambitioninc/container-transform

※参考:DockerCon 2015で、Amazon ECSとDocker Compose, DockerSwarmのインテグレーションの予定が発表されています。

https://twitter.com/docker/status/613033125900382209

Page 29: Amazon EC2 Container Service (Amazon ECS) 概要

29

Amazon ECS: Task

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

– 1つのTask Definitionから複数のTaskが生成

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

Page 30: Amazon EC2 Container Service (Amazon ECS) 概要

30

Amazon ECS: Container

• Taskの実体であるDockerのコンテナ

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

• Container Instance上で実行される

Page 31: Amazon EC2 Container Service (Amazon ECS) 概要

31

Amazon ECS: スケジューラ

• クラスタ管理– Cluster, Container

Instance, Agent

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

Container

• スケジューラ– Run Task, Service

Cluster

Container Instance

Agent Agent

Task

Container

Container

Task Task

Task DefinitionTask Definition

ServiceRun Task

Page 32: Amazon EC2 Container Service (Amazon ECS) 概要

32

Amazon ECS: Run Task

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

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

– Container Instanceは自動的に選ばれる

Page 33: Amazon EC2 Container Service (Amazon ECS) 概要

33

Amazon ECS: Service

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

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

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

• Elastic Load Balancingとの連携も可能

Page 34: Amazon EC2 Container Service (Amazon ECS) 概要

34

Amazon ECS: Serviceの例

Page 35: Amazon EC2 Container Service (Amazon ECS) 概要

35

Amazon ECS: ServiceのUpdate

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

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

Deployment(Atomicな切替)ではないので注意が必要

Page 36: Amazon EC2 Container Service (Amazon ECS) 概要

36

まとめ

Page 37: Amazon EC2 Container Service (Amazon ECS) 概要

37

Amazon ECSで、高性能なリソース管理を

• Dockerを使うなら、ぜひリソース効率化も– コンテナの特徴を活かしきる

• Amazon ECSは高機能なリソース管理がマネージドで利用可能– 「信頼できる状態管理」+「柔軟なスケジューラ」

– Amazon CTO Wernerの解説を和訳したので是非一読下さい!

• 皆さんからのフィードバックが最も重要です– いつでもお待ちしています!


Recommended