Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ECS Capacity Providersとこれからのオートスケーリング

16fbe98e9cf6968eb24e6bb315cf1c03?s=47 rinrin
December 19, 2019

ECS Capacity Providersとこれからのオートスケーリング

ECSの今までのオートスケーリングのめんどくささと、これからは楽になるぞ!という話をしました。

RecoChoku Tech Night 5社合同 AWS re:Invent 2019 参加報告会
https://recochoku.connpass.com/event/154921/

16fbe98e9cf6968eb24e6bb315cf1c03?s=128

rinrin

December 19, 2019
Tweet

Transcript

  1. ECS Capacity Providersと これからのオートスケーリング RecoChoku Tech Night 5社合同 AWS re:Invent

    2019 参加報告会 rinrin
  2. 2 • 林 裕一郎 a.k.a rinrin(@rinrinhhhh) • re:Inventは2回目 • AWSを利用したアーキテクチャ設計/移行

    • 画像解析 • EKSを使いたいECS派 • でも本当はサーバーレス❤ • クラフト❤ 自己紹介 ΩλϜϥɾϗʔϧσΟϯάε ɾɾɾ テックリード Co-Founder CTO フォトライフ提案企業グループ お手伝い
  3. 3

  4. 4

  5. 5 re:Invent期間中のECS事情 • Fargate Spot • ECS Capacity Providers •

    ECS Cluster Auto Scaling • Windows グループ管理サービスアカウント (gMSA) をサポート • (期間前) • ECS ServiceイベントがCloudWatch Eventsに対応 • FireLensがKinesis Data Streamsに対応 新サービス • KeynoteはML一色で少し寂しい… • 現地ではコンテナ飲み会で激論 • ECS派 vs EKS派 • https://dev.classmethod.jp/cloud/aws/ container-happy-hour/ 現地の雰囲気 TODAY TODAY TODAY
  6. 6 今までのオートスケーリング

  7. 7 • スケールアウトは簡単 • EC2の起動に時間がかかるので、迅速なスケー ルアウトが必要な場合は、オーバープロビジョ ニングするのもあり 今までのスケールアウト Auto Scaling

    group ECS Amazon CloudWatch Task Task Task Task ① ECS Serviceがスケールアウト Auto Scaling group ECS Task Task Task Task ③ EC2も追いかけてスケールアウト ②タスクのCPU予約率が100%より多い etc
  8. 8 • まだタスクが動いているEC2インスタンスを ASGが終了させてしまう • ASGはECSのことは知らない 今までのスケールインの問題 Auto Scaling group

    ECS Task Task ① ECS Serviceがスケールイン Auto Scaling group ECS Task Task ③ EC2も追いかけてスケールイン ②タスクのCPU予約率が50%以下 etc !?
  9. 9 • 引越し方式 • 事前にDRAINING状態にして、タスクの移動と新しいタスクの起動を抑制 する • https://aws.amazon.com/jp/blogs/news/how-to-automate-container- instance-draining-in-amazon-ecs/ (Amazon

    Web Services ブログ) • ブロック方式 • 許可したインスタンスしか終了させない • https://developers.cyberagent.co.jp/blog/archives/14664/ (CyberAgent Developers Blog) • ちなみにスポットインスタンス終了は、自動でDRAINING状態にしてくれる https://aws.amazon.com/jp/about-aws/whats-new/2019/09/amazon-ecs- supports-automated-draining-for-spot-instances-running-ecs-services/ 今までのスケールインの対策 Auto Scaling group ECS Task Task ASGのライフサイクルフックで、 事前にインスタンスをDRAININGに ②タスクのCPU予約率が50%以下 etc 移動 Auto Scaling group ECS Task Task スケールインからの保護が有効 タスク数が0なら保護を解除して終了対象に 引越し方式 ブロック方式
  10. 10 オートスケーリングは地味にめんどくさかった…

  11. 11 • Capacity Providerを介してインフラを管理 • ASGと連携してオートスケーリング (Amazon ECS Cluster Auto

    Scaling) • Fargateも対応 Amazon ECS Capacity Providers Amazon ECS Cluster Auto Scaling NEW Auto Scaling group ECS Capacity Provider Capacity Provider Strategy ECS Capacity Provider Capacity Provider Strategy Task Task Task Task
  12. 12 • Capacity Provider Reservationという新しい メトリックが自動で作成される • クラスタリソースが何%利用されているか • 維持するクラスタリソースの割合(%)は

    Capacity Provider作成時に指定 • ASG側にターゲット追跡スケーリングポリ シーとCloudWatch Alarmが自動で作成され る Capacity Providerのスケールアウト Auto Scaling group ECS Task Task Capacity Provider Capacity Provider Strategy Auto Scaling group ECS Task Task Task Task Capacity Provider Capacity Provider Strategy ① ECS Serviceがスケールアウト ③ EC2も追いかけてスケールアウト ② Capacity Provider Reservationメト リックが100%よりも多い Task Task
  13. 13 • Managed termination protection • タスクが実行されているインスタンスは終了 しないように保護 • 今までの苦労

    Capacity Providerのスケールイン Auto Scaling group ECS Task Task Capacity Provider Capacity Provider Strategy Auto Scaling group ECS Task Task Capacity Provider Capacity Provider Strategy ① ECS Serviceがスケールイン ③ EC2も追いかけてスケールイン ② 15分間Capacity Provider Reservation メトリックが70%よりも少ない
  14. 14 • 複数のCapacity Providerを組み合わせること が可能 • Weightを使って利用比率を設定 スポットインスタンスの利用 ECS Default

    Capacity Provider Capacity Provider Strategy Capacity Provider Weight: 1 Weight: 2 タスク数 オンデマンド スポット 1 1 0 2 1 1 3 1 2 4 2 2 5 2 3 6 2 4 7 3 4 タスクの増え方 オンデマンド(Weight: 1)が1増えたら スポットは(Weight: 2)は2増える Auto Scaling group オンデマンド Auto Scaling group スポット
  15. 15 • インフラチームの手が回らない案件は、スピード優先でFargateを導入! • 高い(予算に合わない) • カーネルパラメータがいじれない(net.core.somaxconn etc) • リソースが使い切れない

    • リソースが使い切れないから、オートスケーリングの設定もシンプルにできない • ECS on EC2でもコンテナインスタンスの管理が楽ちんになるサービス出ないかなー フォトクリエイトのコンテナ事情 before re:Invent
  16. 16 on EC2でもオートスケーリング楽やん! よし!Fargateやめよう!...?

  17. 17 • スポットインスタンスのFargate版 • 70%割引 • 2019/12現在、利用者が少ないためほぼ落ちない Fargate Spot NEW

  18. 18 • オンデマンドとスポットのFargateをCapacity Providersで組み合わせる • EC2スポットインスタンスと比べるとまだ高い が、あまりにも簡単 Fargate Spot +

    Capacity Providers ECS Default Capacity Provider Capacity Provider Strategy Capacity Provider AWS Fargate AWS Fargate Spot Weight: 1 Weight: 2
  19. 19

  20. 20

  21. 21

  22. 22 Baseの指定値まではWeightを無視して増加する (一つのCapacity Providerのみで指定可能) ※タスク実行でしか使われない

  23. 23

  24. 24 Fargate : Fargate Spot = 2 : 3

  25. 25 簡単すぎ

  26. 26 • 自動生成されるCloudWatch Alarmのデータポイントをカスタマイズしたい • スケールアウトは1ポイント(1分間隔)、スケールインは15ポイント(1分間隔) • CloudFormationのサポート • 本番導入には切実

    • Terraformはもう来てた https://www.terraform.io/docs/providers/aws/r/ecs_capacity_provider.html • Capacity Providerの変更(今は削除&作成で代替) • Capacity Providerの削除(今はDeactiveで見えなくなってるだけ) • Fargateのカーネルパラメータ対応 • 特定のパラメータだけでもいいから頼む… 今後期待すること
  27. 27 オートスケーリングはAWSに任せて 本質的な開発に集中しよう!