streampackのrisakoです。
2月中旬に入ってから花粉が一気に飛び始めましたね
今年は去年よりも飛散量が多いようで花粉症の人にとっては辛い時期になってしまいました
今回は、ECSのキャパシティプロバイダについて書いて行きたいと思います。
キャパシティプロバイダーとは
「ECSにおけるタスク実行インフラを柔軟に設定できる仕組み」 です。
以下のECS設定で設定できますが、今回は「ECS on EC2 」で設定してみたいと思います。
- ECS on EC2
- ECS on Fargate
ECS on EC2を利用したことがある方は、タスク数を変更する際にEC2インスタンスもスケールアウトする必要があったかと思います。
キャパシティプロバイダーを使うことでタスク数に基づきEC2をインスタンスも自動でスケールアウトしてくれるので運用がとても楽になりますね
#設定
##0. 事前準備
ECSクラスターにタスク定義設定とタスク作成できるようにしておく必要があります、
タスク作成ができないと、キャパシティプロバイダーを設定してもインスタンスの増減はできません。
1. AutoScaling Groupを新規に作成する。
ECS on EC2で作成すると、自動でAutoScaling Groupが作成されるかと思います。
そのAutoScaling Groupとは別に、キャパシティプロバイダー用に新規で作成する必要があります。
2. キャパシティプロバイダー設定
項目 | 値 | 備考 |
---|---|---|
キャパシティプロバイダー名 | demo | 任意の名前を設定 |
AutoScaling グループ | test-ecs | 先ほど作成したAutoScaling グループを選択 |
マネージドスケーリング | 有効 | 有効になっていないとタスク数に応じた自動的なスケーリングは行われないので注意 |
ターゲットキャパシティー% | 100 | ECSで使用するインスタンスの必要数(1~100)。100=全てのインスタンスが無駄なく使用される。50=本来必要なインスタンス数の倍作成する。(突発的なアクセス増加に対応できる) |
マネージドターミネーション 保護 | 無効 | スケールインから保護するインスタンスがある場合には有効にする。 |
3.クラスターの変更
新規作成したAutoScaling Groupで以下のようなポリシーが作成されていれば、キャパシティプロバイダーの設定がされています。
4.サービス作成
今回は、サービスを新規作成する場合を想定しています。
- サービスタブの「作成」から新規作成します
- 「 起動タイプ」ではなく、「キャパシティプロバイダー戦略」で設定します
項目 | 値 | 備考 |
---|---|---|
キャパシティプロバイダー戦略 | Cluster default strategy | 作成したキャパシティプロバイダーが選択されていることを確認 |
タスク定義 | app | 使用するタスク定義を選択する |
クラスター | ECSクラスター名 | |
サービス名 | demo | 任意のサービス名 |
サービスタイプ | REPLICA | |
タスクの数 | 2 | タスクの数を変更するとキャパシティプロバイダーによりECSインスタンスが増減されます |
-
次のページで使用するロードバランサーを指定します。
-
Service AutoScaling(オプション)では、**「Service AutoScaling の設定を変更することで、サービスの必要数を調整する」**を選択
-
タスクの最小数・必要数・最大数を設定します
以上でキャパシティプロバイダーの設定は完了です!
タスク数を増減させて自動でスケールアウトされるのか試してみましょう。
##まとめ
頻繁にECS on EC2でスケールアウトやスケールインすることがある場合はとても楽に運用できる印象でした。
今回もお読み頂きありがとうございました。