🗂

EC2 Auto Scaling スケーリングポリシーのまとめ

2022/02/10に公開

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種類があるんですよね。その辺りは、別の記事を参考にしてください。

それで、予測スケーリングっていうのは何かというと、「今までのデータを元にあらかじめスケーリングしてくれるポリシー」です。機械学習です、といえばもっと分かりやすいかもしれません。

利用に適したワークロードは、特定の曜日や日時にアクセスが集中し、それが繰り返されるような場合です。

一例を挙げると、動的ポリシーでは、アクセスが増加してからスケールアウトするようになっていますが、予測スケーリングポリシーでは今までのデータを鑑みて、アクセスが増加する少し前にスケールアウトしてくれるようになります。

スケーリングを行わず、「予測のみ」行ってくれるモードがあるので、導入を考えている場合はひとまず「予測のみ」行ってみるのが良いでしょう。

[^1] https://aws.amazon.com/jp/about-aws/whats-new/2021/05/amazon-ec2-auto-scaling-introduces-predictive-scaling-native-scaling-policy/

Discussion