EC2 Auto Scaling スケーリングポリシーのまとめ
EC2 AutoScalingのスケーリングポリシーについて、ざっくりまとめています。
今回紹介するのは以下です。
- 静的スケーリングポリシー
- 動的スケーリングポリシー
- ターゲット追跡
- ステップ
- シンプル
- スケジュールドスケーリングポリシー
- 予測スケーリングポリシー
静的スケーリングポリシー
固定スケーリングポリシー、と表現した方が分かりやすいかもしれません。
常に「希望するインスタンス数」を起動するように設定するポリシーであり、「希望するインスタンス数」は変化しないため、静的スケーリングポリシーと呼ばれます。
動的スケーリングポリシー
静的スケーリングポリシーに反して、「希望するインスタンス数」が変動するポリシーです。
マネジメントコンソールから設定する際に、「動的スケーリングポリシーを作成」のメニューから作成できるポリシー3つが分類されます。
3つと書きましたが、基本的に使うのは2つで、1つは非推奨となっています。
ターゲット追跡ポリシー
CloudWatchの特定のメトリクスの値を追跡してスケールイン、スケールアウトを行います。
例えば、「CPU使用率60%」をターゲット値とすると、「CPU使用率60%」を維持するようにインスタンス数を調整してくれます。
動的スケーリングポリシーの中では最も新しいポリシーです。
AWSが推奨しているようで、マネジメントコンソールからオートスケーリンググループ作成時には「ターゲット追跡ポリシー」か「ポリシーなし」しか選択できなくなっています。
そのため、初めてAuto Scalingに触る人はステップポリシーやシンプルポリシーが見つからなくて困るかもしれません。
シンプルポリシー
シンプルポリシーは、基本的にステップポリシーの劣化と考えて良いでしょう。
昔からあるポリシーで、動的スケーリングポリシーといえばコレ、というものでした。
ところが、ステップポリシーでシンプルポリシーで出来ることは出来るようになっているので、ステップポリシーを使う用に推奨されています。
シンプルポリシーは、CloudWatchAlermのアラート状態に対してアクションを設定できます。
例えば、「CPUが使用率50%を超える」とアラーム状態になるCloudWatchAlermを判断材料に設定します。
その後、アラート状態になったら、インスタンスを 1 追加するポリシーを設定、という流れになります。
実は、シンプルポリシーを複数設定すればステップポリシーと同じことは出来るのですが、それだと使い勝手も悪いためステップポリシーが登場したようです。
ステップポリシー
シンプルポリシーの上位互換の位置づけで登場しました。
ステップポリシーとシンプルポリシーは、CloudWatchAlermを判断材料にしてスケーリングを行います。
ターゲット追跡ポリシーではCloudWatchメトリクスを判断材料にしており、ステップポリシー、シンプルポリシーと違うということは覚えておきましょう。
ステップポリシーは、CloudWatchAlermの値に段階をつけてアクションを設定できます。
例えば、「CPUが使用率50%を超える」とアラーム状態になるCloudWatchAlermを判断材料に設定します。
その後、
50% < CPU利用率 < 70% ならインスタンスを1追加
70% < CPU利用率 < 90% なら 3追加
といったような設定が出来ます。
シンプルポリシーでは1つのアラームに対して1つのアクションを指定する形になっていたので、ステップポリシーで改善したということです。
スケジュールドスケーリングポリシー
「12月24日になったら、希望するインスタンス数を4つ増やす...」みたいな使い方ができます。
急激にトラフィックが増加することが、前もって分かっているケースでは有効です。
テレビで紹介されて、サーバーが落ちているサイトをよく見ると思いますが、そのような事態も予防できるわけです。
また、cronの設定が可能なので、「1時間毎に増やしたい」みたいなケースにも対応しています。
余談ですが、最近マネジメントコンソールからタイムゾーン指定が出来るようになったそうで、私みたいな日本時間でしか暮らしていない人間からすると、とてもありがたいです。
予測スケーリングポリシー
EC2 Auto Scalingの機能としては、2021年5月にサポートされた[^1]割と新しいものです。
それまではAWS Auto Scalingから設定が必要でした。
Auto Scalingって、 「AWS」, 「EC2」, 「アプリケーション」の3種類があるんですよね。その辺りは、別の記事を参考にしてください。
それで、予測スケーリングっていうのは何かというと、「今までのデータを元にあらかじめスケーリングしてくれるポリシー」です。機械学習です、といえばもっと分かりやすいかもしれません。
利用に適したワークロードは、特定の曜日や日時にアクセスが集中し、それが繰り返されるような場合です。
一例を挙げると、動的ポリシーでは、アクセスが増加してからスケールアウトするようになっていますが、予測スケーリングポリシーでは今までのデータを鑑みて、アクセスが増加する少し前にスケールアウトしてくれるようになります。
スケーリングを行わず、「予測のみ」行ってくれるモードがあるので、導入を考えている場合はひとまず「予測のみ」行ってみるのが良いでしょう。
Discussion