【初心者】AWS AutoScalingについて(ハンズオン③:オートスケーリングポリシーの作成)


はじめに

AWS AutoScaling・・EC2を処理負荷に合わせて、増やしたり減らしたりすることができる便利なサービス
公式サイト

こちらは前回の記事の続きとなっています。
【初心者】AWS AutoScalingについて(ハンズオン①:起動テンプレートの作成)
【初心者】AWS AutoScalingについて(ハンズオン②:オートスケーリンググループの作成)

オートスケーリングポリシーの種類

2021/02時点で3つのポリシーがあります。公式サイト
どのようにスケーリングさせたいかでポリシーを選択します。

■ターゲットポリシー
 特定のメトリクスのターゲット値に基づいて、グループの現在の容量を増減させる
 例:「CPU使用率60%と指定」(※数の調整はオートスケーリングが自動で実施)

■ステップポリシー
 複数段階でのインスタンスの追加、削除を設定し、
 例:「平均CPU使用率60%超えたら1台追加、80%超えたらもう1台追加」

■シンプルポリシー
 1 つのスケーリング調整値に基づいて、グループの現在の容量を増減させる
 例:「平均CPU使用率が80%超えたら、2台追加」

ハンズオン③:オートスケーリングポリシーの作成

前回作成したオートスケーリンググループにオートスケーリングポリシーを追加します。
今回はオートスケーリンググループで作成されたEC2のCPU使用率が70%超えたらEC2を1台追加、30%より小さくなったらEC2を1台削除するアラームを作成し、それに基づいてインスタンスの数を増減させるシンプルポリシーを実践したいと思います。

CloudWatchサービスより「アラーム」、「アラームの作成」を選択

「メトリクスの選択」を選択




今回対象とするメトリクスをAutoScalingグループのCPU使用率とするため、「EC2」「AutoScalingグループ別」「CPUUtilization」を選択し、「メトリクスの選択」を選択

まず、CPU使用率が70%超えた場合のアラームを作成します。

・条件:より大きい
・しきい値:70
・欠落データの処理:欠落データを不正(しきい値を超えている)として処理
※CPU使用率がいきなり上昇した場合、データが欠落する可能性があるため上記を選択しています。


アラーム状態になった場合に通知するSNSトピックの選択
「既存のSNSトピック」もしくは「新しいトピックの作成」を選択し、通知するメールアドレスを決定


アラーム名と説明(任意)を指定

・アラーム名:CPU-High

これでアラームが1つ作成されました。
同様の手順でCPU使用率が30%以下になったときのアラーム「CPU-Low」も作成します。


ここから作成したアラームをオートスケーリングポリシーに追加します。

事前に作成したAutoScalingグループを選択し、「自動スケーリング」より「ポリシーの追加」を選択

「CPU_high」アラームが発生した場合に、EC2を1台追加したいので、以下のように設定を行います。

・ポリシータイプ:シンプルなスケーリング
・スケーリングポリシー名:CPU_add
・CloudWatchアラーム:CPU_high
・アクションを実行:追加 1 キャパシティユニット

「CPU_Low」アラームが発生した場合に、EC2を1台追削除したいので、以下のように設定を行います。

・ポリシータイプ:シンプルなスケーリング
・スケーリングポリシー名:CPU_delete
・CloudWatchアラーム:CPU_Low
・アクションを実行:削除 1 キャパシティユニット

以上で、オートスケーリングポリシーの設定は完了です。
実際に負荷をかけて、EC2の数が増減するのを確認したいと思います。

オートスケーリンググループで起動されたEC2に接続し、以下のコマンドでCPUに負荷をかけます。

yes >> /dev/null &

そのまま5分ほど待ちます…
※1プロセスだと負荷がかかりにくいので、同じコマンドを実行し、5プロセスぐらい起動させると早く負荷がかかります。

CPU_Highがアラーム状態となりました。
この時AutoScalingグループの「アクティビティ履歴」を確認すると...


EC2インスタンスが2→3台に増加したことが確認できます。
そのまま更に5分ほど待つと…


EC2インスタンスが3→4台に増加したことが確認できます。
そのまま5分ほど待っても上限で決めた4台以上になることはありませんでした。

次にEC2インスタンスが削除されるのを確認するために、負荷コマンドを実行したプロセスを停止します。
以下のコマンドでプロセスを停止することができます。

top 
(CPUに負荷をかけているプロセスIDを確認)
kill [プロセスID] 

そのまま5分、10分と待つと…

CPU_Lowがアラーム状態となりました。
この時AutoScalingグループの「アクティビティ履歴」を確認すると...


EC2インスタンスが4→3→2台に減少したことが確認できました。

ハンズオンは以上となります。

最後に

今回は3つの記事にわたって、「起動テンプレートの作成」「オートスケーリンググループの作成」「オートスケーリングポリシーの作成」を行いました。
慣れるまで設定するのが大変でしたが、一度作成すれば要領を掴むことができるので、実際に手を動かしてやってみることが大事ですね

この記事はAWS初学者を導く体系的な動画学習サービス「AWS CloudTech」の課題カリキュラムで作成しました。
https://aws-cloud-tech.com