cloudwatch eventsを使ったecsのautoscaling

Post on 16-Apr-2017

2.295 Views

Category:

Internet

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

CloudWatch Events を使ったECS の AutoScaling

千葉 淳

2016/2/5

2

自己紹介

所属:クラスメソッド株式会社

仕事:ソリューションアーキテクト

名前:千葉 淳(ちば じゅん)

好きなAWSサービス: Lambda

3

アジェンダ

1.はじめに

2.CloudWatch Events とは?

3.ECS の AutoScaling の構成

4.ECS の AutoScaling の設定

5.まとめ

4

はじめに

•今日のお話し

ECS ではコンテナの AutoScaling は未対応

なので、 CloudWatch Events で AutoScaling を実装した話

構成や設定方法、 ECS スケールの課題なんかをお話します!

5

デモ

動け、動け!動いてよ! EC2!

6

CloudWatch Events とは?

• 2015/1/15 に発表された新サービス

• CloudWatch + SNS との違いは設定・管理が楽(CloudWatch Events で一元管理できる )

• API ドリブンで Lambda を発火させられる

7

デモ

CloudWatch Events で pending を検知、即 stop絶対に起動させない ( なぜやった )

8

デモ – CloudWatch Events の設定 -

トリガー設定 挙動設定

指定インスタンスが Pending 指定インスタンスを Stop

9

CloudWatch Events 比較

• 参考: http://dev.classmethod.jp/cloud/aws/introducing-cloudwatch-events/

10

CloudWatch Events をガンガン使う

• ブループリントが用意されている EBS の定期スナップショット

EC2 の定期起動・停止

• 様々な API をトリガーに Lambda を発火

11

CloudWatch Events をガンガン使う

• ブループリントが用意されている EBS の定期スナップショット

EC2 の定期起動・停止

• 様々な API をトリガーに Lambda を発火

夢は無限大

12

今日はこの CloudWatch Events を使って

ECS をスケールアップしてみます!

13

アーキテクチャ編

14

ECS を AutoScaling するための構成

15

ECS スケールシーケンス詳細

CloudWatch で負荷検知

AutoScaling(ECS クラスタ増減 )

CloudWatch Events でLambda 発火

ECS サービスの Desired 変更

コンテナ pull

コンテナ起動

ELB 組み込み

16

設定編

17

ELB 作成

HTTP:80 で作成

18

ECR – リポジトリ作成 -

リポジトリを作成

リポジトリへの push 等の権限を付与( 許可アカウント、 IAM を指定 )

19

ECR – イメージの push -

# docker pull httpd:2.4# aws ecr get-login --region us-east-1 | bash# docker tag httpd:2.4 [AWS アカウント

ID].dkr.ecr.us-east-1.amazonaws.com/ecs-sample-rep:latest

# docker push [AWS アカウント ID].dkr.ecr.us-east-1.amazonaws.com/ecs-sample-rep:latest

ECR へ push するために EC2 を作成し、 AWS CLI を利用できる環境を用意( アクセスキーの設定もしておく )

ECR に push される

20

ECS - Task Definitions の作成 -ECR に push したイメージを指定

任意の実行コマンドを指定(html ファイル作成、 httpd 起動など )

ポート番号を指定

21

ECS – Clusters の作成 -

ECS クラスタを作成(AutoScaling で起動した EC2 が登録される )

22

ECS – サービスの作成 -

作成した Task Definitions を指定

ELB 、ポート番号を指定

23

AutoScaling – 起動設定 -

【 ECS クラスタ用の AMI を指定】AMI : amzn-ami-2015.09.e-amazon-ecs-optimized参考 :http://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/launch_container_instance.html

【ユーザーデータ】ECS エージェントの設定。 ECS クラスタ名を指定する

#!/bin/bashecho ECS_CLUSTER=docker-build >> /etc/ecs/ecs.config

24

AutoScaling – グループ設定 -

ECS で ELB 組み込み制御を行うのでここでは指定しない

スケーリングポリシーは環境に合わせて指定

25

Lambda - ECS の Desired をアップデート -

ソースコードはこちらhttp://dev.classmethod.jp/cloud/aws/ecs-cloudwatch-events/

26

Lambda – 処理概要 -

① CloudWatch Events の Input configure から ECS クラスタ名や AutoScaling 名を取得

② AutoScaling の現在の Desired の値を取得

③ ECS サービスの Dsired の値を、 AutoScaling の Dsired の値に

 アップデート

27

CloudWatch Events – ルール作成 -

・スケールアウト・インをトリガー

・対象の AutoScaling グループ名を指定

・ ECS スケール用の Lambda ファンクションを指定

・ Configure input を指定 ( 次ページ )

28

CloudWatch Events – Configure input の指定 -

{ "AutoScalingName": "ecs-cluster", "EcsClusterName": "docker-build", "EcsRegion": "us-east-1", "EcsServiceName": "sample-app"}※ 改行を削除し、 Configure input へ入力

AutoScalingName“: AutoScaling グループ名を指定EcsClusterName“: ECS クラスタ名を指定EcsRegion : ECS が存在するリージョンを指定EcsServiceName“: ECS サービス名を指定

29

デモ

ECR の AutoScaling

30

デモ

AutoScaling のDesired を増やす

ECS サービスのDesired をアップデート

31

課題

• AutoScaling 発動から ELB 組み込みまでの時間が長い

• コンテナ単位の AutoScaling はできない

 ※スケールは ECS クラスタ単位

32

今回の構成での AutoScaling 時間• 5 分の壁

通常 時間 ( 秒 )スケール検知 60EC2 作成 120ECS 登録 20コンテナ起動完了 ( サイズ 200MB) 80ELB 経由での crul 成功時間 15合計 最大約 5 分参考: EC2 ネイティブは最大 3 分半

スパイクアクセスに対応するにはCloudFront との併用も検討

33

コンテナ単位での AutoScaling ができないECS インスタンス上のコンテナは同じものを配置する

EC2 のリソースをトリガーにスケールします

コンテナ A のみスケールするということは実施できません

1 インスタンスに同じコンテンは 1 つしか起動できません

ポートの競合が発生します

34

まとめ

• ECS でオートスケーリングが実現できた

• ただし、課題があるスケールに時間がかかる

コンテナ単位でのスケールができない

【今後の展望 ( 要望 ) 】柔軟なスケーリングを目指してEC2レイヤーをマネージド化

Container as a Service へ

35

クラスメソッドは

人々の創造的活動に貢献し続けます !!

36

2/20(土曜日 )Coming Soon!

37

Developers.IO 2016開催

38

Developers.IO 2016開催

セキュリティ

IoTデータ分析

機械学習

iOS アプリAndroid アプリ

モバイルバックエンド

39

Developers.IO 2016開催

MIT出身、元 NASA 、元 AWS のエンジニア登壇

旬な話題をお届けします!

top related