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

#はじめに

**AWS AutoScaling**・・EC2を処理負荷に合わせて、増やしたり減らしたりすることができる便利なサービス
[公式サイト](https://docs.aws.amazon.com/ja_jp/autoscaling/ec2/userguide/what-is-amazon-ec2-auto-scaling.html"AWS AutoScaling")

こちらは前回の記事の続きとなっています。
[【初心者】AWS AutoScalingについて（ハンズオン①：起動テンプレートの作成）](https://qiita.com/AWS11077/items/47dc3da4dd185f01caef )
[【初心者】AWS AutoScalingについて（ハンズオン②：オートスケーリンググループの作成） ](https://qiita.com/AWS11077/items/fff5c7ba16ce6d82d282 )

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

2021/02時点で3つのポリシーがあります。[公式サイト](https://docs.aws.amazon.com/ja_jp/autoscaling/ec2/userguide/as-scale-based-on-demand.html#as-scaling-types)
どのようにスケーリングさせたいかでポリシーを選択します。

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

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

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


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

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

![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1079008/9bd910ad-f668-013e-0daf-9c9e7119e438.png)

CloudWatchサービスより「アラーム」、「アラームの作成」を選択
![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1079008/ef3b7def-c718-34dd-49dc-6bb683a7719a.png)

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

![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1079008/ab25ea70-15c0-c262-796c-daffd18c0310.png)
![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1079008/e3116c06-a48b-1008-97fc-d96a0f9e0267.png)
![5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1079008/362034fe-8159-9646-ca28-d2e1c75fe84e.png)
今回対象とするメトリクスをAutoScalingグループのCPU使用率とするため、「EC2」「AutoScalingグループ別」「CPUUtilization」を選択し、「メトリクスの選択」を選択
![6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1079008/47f80369-8401-9856-fdfb-98ba93b4ea69.png)
まず、CPU使用率が70%超えた場合のアラームを作成します。

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

![7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1079008/bf14b2ce-c4a5-7e27-667a-eb9bae0f8e5b.png)
アラーム状態になった場合に通知するSNSトピックの選択
**「既存のSNSトピック」**もしくは**「新しいトピックの作成」**を選択し、通知するメールアドレスを決定

![8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1079008/cc3bc25f-e2dd-286c-0226-d385510cb5c9.png)
アラーム名と説明（任意）を指定

**・アラーム名**：CPU-High

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

![11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1079008/316cdf77-ae25-3faa-1280-e498ff2f3f52.png)
ここから作成したアラームをオートスケーリングポリシーに追加します。

事前に作成したAutoScalingグループを選択し、「自動スケーリング」より「ポリシーの追加」を選択
![12.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1079008/8f142510-1080-9345-fa09-ed50753b2399.png)

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

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

![13.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1079008/6a1c4008-2cf5-fe77-718b-674749fdde9f.png)「CPU_Low」アラームが発生した場合に、EC2を1台追削除したいので、以下のように設定を行います。

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


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

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

```
yes >> /dev/null &
```

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

![14.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1079008/6824c25b-7bdf-3b1a-03b1-7f470a23cdb4.png)

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

![15.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1079008/9ebbf660-089c-ffad-a991-bf25b319f018.png)
EC2インスタンスが2→3台に増加したことが確認できます。
そのまま更に5分ほど待つと…

![16.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1079008/d52d168d-f3fe-7cdf-069b-01a3916bd862.png)
EC2インスタンスが3→4台に増加したことが確認できます。
そのまま5分ほど待っても上限で決めた4台以上になることはありませんでした。



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

```
top 
(CPUに負荷をかけているプロセスIDを確認)
kill [プロセスID] 
```
そのまま5分、10分と待つと…
![17.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1079008/cc01d296-8463-b3b1-3f21-346e476a5bd3.png)
CPU_Lowがアラーム状態となりました。
この時AutoScalingグループの「アクティビティ履歴」を確認すると...

![18.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1079008/bd1ec722-d9ab-3eb0-36c7-2f55b21e8c3b.png)
EC2インスタンスが4→3→2台に減少したことが確認できました。


ハンズオンは以上となります。
#最後に

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



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