CloudWatch Eventsを使った ECSのAutoScaling

504
-1

Published on

ECS AutoScaling

Published in: Internet
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
504
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • * パワハラならぬプロハラ、キラカード扱いです
  • セキュリティ
    IoT
    データ分析
    機械学習
    iOS、Adnroidアプリ、バックエンド
  • セキュリティ
    IoT
    データ分析
    機械学習
    iOS、Adnroidアプリ、バックエンド
  • AWSJ
    ソラコム
    SAP
    トレンドマイクロ
    ソフォス
    ぷらっとホーム
  • CloudWatch Eventsを使った ECSのAutoScaling

    1. 1. CloudWatch Eventsを使った ECSのAutoScaling 千葉 淳 2016/2/5
    2. 2. 1 自己紹介 所属:クラスメソッド株式会社 仕事:ソリューションアーキテクト 名前:千葉 淳(ちば じゅん) 好きなAWSサービス:Lambda
    3. 3. 2 アジェンダ 1.はじめに 2.CloudWatch Eventsとは? 3.ECSのAutoScalingの構成 4.ECSのAutoScalingの設定 5.まとめ
    4. 4. 3 はじめに • 今日のお話し ECSではコンテナのAutoScalingは未対応 なので、CloudWatch EventsでAutoScalingを実装した話 構成や設定方法、ECSスケールの課題なんかをお話します!
    5. 5. 4 デモ 動け、動け!動いてよ!EC2!
    6. 6. 5 CloudWatch Eventsとは? • 2015/1/15に発表された新サービス • CloudWatch + SNSとの違いは設定・管理が楽 (CloudWatch Eventsで一元管理できる) • APIドリブンでLambdaを発火させられる
    7. 7. 6 デモ CloudWatch Eventsでpendingを検知、即stop 絶対に起動させない(なぜやった)
    8. 8. 7 デモ – CloudWatch Eventsの設定- トリガー設定 挙動設定 指定インスタンスがPending 指定インスタンスをStop
    9. 9. 8 CloudWatch Events比較 • 参考:http://dev.classmethod.jp/cloud/aws/introducing-cloudwatch-events/
    10. 10. 9 CloudWatch Eventsをガンガン使う • ブループリントが用意されている  EBSの定期スナップショット EC2の定期起動・停止 • 様々なAPIをトリガーにLambdaを発火
    11. 11. 10 CloudWatch Eventsをガンガン使う • ブループリントが用意されている  EBSの定期スナップショット EC2の定期起動・停止 • 様々なAPIをトリガーにLambdaを発火 夢は無限大
    12. 12. 11 今日はこのCloudWatch Eventsを使って ECSをスケールアップしてみます!
    13. 13. 12 アーキテクチャ編
    14. 14. 13 ECSをAutoScalingするための構成
    15. 15. 14 ECSスケールシーケンス詳細 CloudWatchで負荷検知 AutoScaling(ECSクラスタ増減) CloudWatch EventsでLambda 発火 ECSサービスのDesired変更 コンテナpull コンテナ起動 ELB組み込み
    16. 16. 15 設定編
    17. 17. 16 ELB作成 HTTP:80で作成
    18. 18. 17 ECR – リポジトリ作成 - リポジトリを作成 リポジトリへのpush等の権限を付与 (許可アカウント、IAMを指定)
    19. 19. 18 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. 20. 19 ECS - Task Definitionsの作成 - ECRにpushした イメージを指定 任意の実行コマンドを指定 (htmlファイル作成、httpd起動など) ポート番号を指定
    21. 21. 20 ECS – Clustersの作成 - ECSクラスタを作成 (AutoScalingで起動したEC2が登録される)
    22. 22. 21 ECS – サービスの作成 - 作成したTask Definitionsを指定 ELB、ポート番号を指定
    23. 23. 22 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/bash echo ECS_CLUSTER=docker-build >> /etc/ecs/ecs.config
    24. 24. 23 AutoScaling –グループ設定- ECSでELB組み込み制御を行うので ここでは指定しない スケーリングポリシーは 環境に合わせて指定
    25. 25. 24 Lambda - ECSのDesiredをアップデート - ソースコードはこちら http://dev.classmethod.jp/cloud/aws/ecs-cloudwatch-events/
    26. 26. 25 Lambda – 処理概要 - ①CloudWatch EventsのInput configureからECSクラスタ名や AutoScaling名を取得 ②AutoScalingの現在のDesiredの値を取得 ③ECSサービスのDsiredの値を、AutoScalingのDsiredの値に アップデート
    27. 27. 26 CloudWatch Events – ルール作成 - ・スケールアウト・インをトリガー ・対象のAutoScalingグループ名を指定 ・ECSスケール用のLambdaファンク ションを指定 ・Configure inputを指定(次ページ)
    28. 28. 27 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. 29. 28 デモ ECRのAutoScaling
    30. 30. 29 デモ AutoScalingの Desiredを増やす ECSサービスの Desiredをアップデート
    31. 31. 30 課題 • AutoScaling発動からELB組み込みまでの時間が長い • コンテナ単位のAutoScalingはできない ※スケールはECSクラスタ単位
    32. 32. 31 今回の構成でのAutoScaling時間 • 5分の壁 通常 時間(秒) スケール検知 60 EC2作成 120 ECS登録 20 コンテナ起動完了(サイズ200MB) 80 ELB経由でのcrul成功時間 15 合計 最大約5分 参考:EC2ネイティブは最大3分半 スパイクアクセスに対応するには CloudFrontとの併用も検討
    33. 33. 32 コンテナ単位でのAutoScalingができない ECSインスタンス上のコンテナは同じものを配置する EC2のリソースをトリガーにスケールします コンテナAのみスケールするということは実施できません 1インスタンスに同じコンテンは1つしか起動できません ポートの競合が発生します
    34. 34. 33 まとめ • ECSでオートスケーリングが実現できた • ただし、課題がある スケールに時間がかかる コンテナ単位でのスケールができない 【今後の展望(要望)】 柔軟なスケーリングを目指して EC2レイヤーをマネージド化 Container as a Serviceへ
    35. 35. 34 クラスメソッドは 人々の創造的活動に貢献し続けます!!
    36. 36. 35 2/20(土曜日) Coming Soon!
    37. 37. 36 Developers.IO 2016開催
    38. 38. 37 Developers.IO 2016開催 セキュリティ IoT データ分析 機械学習 iOSアプリ Androidアプリ モバイルバックエンド
    39. 39. 38 Developers.IO 2016開催 MIT出身、元NASA、元AWSのエンジニア 登壇 旬な話題をお届けします!
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×