12
4

More than 3 years have passed since last update.

【ECS】キャパシティプロバイダーを使ってみよう~設定編~

Last updated at Posted at 2021-02-26

streampackのrisakoです。

2月中旬に入ってから花粉が一気に飛び始めましたね:evergreen_tree:
今年は去年よりも飛散量が多いようで花粉症の人にとっては辛い時期になってしまいました:mask:

今回は、ECSのキャパシティプロバイダについて書いて行きたいと思います。

キャパシティプロバイダーとは

「ECSにおけるタスク実行インフラを柔軟に設定できる仕組み」 です。
以下のECS設定で設定できますが、今回は「ECS on EC2 」で設定してみたいと思います。

  • ECS on EC2
  • ECS on Fargate

ECS on EC2を利用したことがある方は、タスク数を変更する際にEC2インスタンスもスケールアウトする必要があったかと思います。
キャパシティプロバイダーを使うことでタスク数に基づきEC2をインスタンスも自動でスケールアウトしてくれるので運用がとても楽になりますね:point_up:

設定

0. 事前準備

ECSクラスターにタスク定義設定タスク作成できるようにしておく必要があります、
タスク作成ができないと、キャパシティプロバイダーを設定してもインスタンスの増減はできません。

1. AutoScaling Groupを新規に作成する。

ECS on EC2で作成すると、自動でAutoScaling Groupが作成されるかと思います。
そのAutoScaling Groupとは別に、キャパシティプロバイダー用に新規で作成する必要があります。

  • 起動テンプレートではなく、起動設定で作成しましょう。
    スクリーンショット 2021-02-03 11.31.42.png

  • ECSクラスター作成時に作成されているAuto Scalingグループを選択します
    スクリーンショット 2021-02-03 11.31.32.png

  • グループサイズは、最大キャパシティのみ設定します。
    最大キャパシティを10にした場合は、キャパシティプロバイダーで自動スケールアウトされるインスタンスが10個までに制限されます。
    スクリーンショット 2021-02-03 11.55.06.png

2. キャパシティプロバイダー設定

  • 対象ECSクラスターの「キャパシティプロバイダー」タブから作成しましょう スクリーンショット 2021-02-03 12.09.52.png
項目 備考
キャパシティプロバイダー名 demo 任意の名前を設定
AutoScaling グループ test-ecs 先ほど作成したAutoScaling グループを選択
マネージドスケーリング 有効 有効になっていないとタスク数に応じた自動的なスケーリングは行われないので注意
ターゲットキャパシティー% 100 ECSで使用するインスタンスの必要数(1~100)。100=全てのインスタンスが無駄なく使用される。50=本来必要なインスタンス数の倍作成する。(突発的なアクセス増加に対応できる)
マネージドターミネーション 保護 無効 スケールインから保護するインスタンスがある場合には有効にする。

3.クラスターの変更

  • クラスター右上にある「クラスターの変更」を押下します。
    スクリーンショット 2021-02-03 13.01.13.png

  • デフォルトのキャパシティプロバイダー戦略」を、作成したキャパシティプロバイダーに設定します。
    スクリーンショット 2021-02-03 13.02.03.png

新規作成したAutoScaling Groupで以下のようなポリシーが作成されていれば、キャパシティプロバイダーの設定がされています。
スクリーンショット 2021-02-03 18.15.19.png

4.サービス作成

今回は、サービスを新規作成する場合を想定しています。

  • サービスタブの「作成」から新規作成します
  • 「 起動タイプ」ではなく、「キャパシティプロバイダー戦略」で設定します

スクリーンショット 2021-02-03 12.35.09.png

項目 備考
キャパシティプロバイダー戦略 Cluster default strategy 作成したキャパシティプロバイダーが選択されていることを確認
タスク定義 app 使用するタスク定義を選択する
クラスター ECSクラスター名
サービス名 demo 任意のサービス名
サービスタイプ REPLICA
タスクの数 2 タスクの数を変更するとキャパシティプロバイダーによりECSインスタンスが増減されます
  • 次のページで使用するロードバランサーを指定します。

  • Service AutoScaling(オプション)では、「Service AutoScaling の設定を変更することで、サービスの必要数を調整する」を選択

  • タスクの最小数・必要数・最大数を設定します

スクリーンショット 2021-02-03 12.51.12.png

以上でキャパシティプロバイダーの設定は完了です!
タスク数を増減させて自動でスケールアウトされるのか試してみましょう。

まとめ

頻繁にECS on EC2でスケールアウトやスケールインすることがある場合はとても楽に運用できる印象でした。

今回もお読み頂きありがとうございました。

12
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
4