内容
この記事はAWS初学者を導く体系的な動画学習サービス
「AWS CloudTech」の課題カリキュラムで作成しました。
https://aws-cloud-tech.com
「冗長性のあるブログサービスを構築する(冗長構成)」のレッスンの続きです。
前回までの構成

前回の記事
https://qiita.com/zakinicof/items/a320268727f92d06a3b4
エンドユーザーから大量の通信があっても、ELBを配置しているので、2台のEC2インスタンスに対しては通信を分散して振り分けてくれる構成でした。
しかし、2台のEC2が処理しきれないほどの通信が大量発生することも想定し、Auto Scalingを設定してEC2を条件に合わせて増減してくれるように構成したいと思います。
具体的には、ELBの配下にAuto Scalingグループを紐づけて、EC2インスタンスを最小2、最大4の範囲でスケーリングをさせます。Auto Scaling全体のCPU使用率を監視するアラームを2つ作り、アラームとAuto Scalingのスケーリングポリシーを紐づけます。CPU使用率が70%以上になったらインスタンスを1台増やし、30%以下になったら1台減るような構成にします。

実施手順
起動テンプレートを作成
起動テンプレートとは、通常手動で作成していたEC2の設定などをひとまとめにしたものです。
- EC2の画面左メニューから
テンプレートの起動を選択 -
起動テンプレートを作成を選択 -
起動テンプレート名を入力(例. LaunchTemplate1) -
テンプレートバージョンの説明を入力(例. 1.0.0) -
EC2 Auto Scaling で使用できるテンプレートをセットアップする際に役立つガイダンスを提供にチェックをつける。 -
AMIは前回作成した自分のAMIの中から指定 -
インスタンスタイプはt2.microを選択 -
キーペアは既に作成してあるものを選択 -
リソースタグのタグの追加を選択 -
キーにName、値にWebServer-Autoと入力(この起動テンプレートを元にEC2インスタンスが立ち上がった際にここで設定した値が付与される) -
ネットワークインターフェースを追加を選択 -
セキュリティグループはインスタンスに紐づいているものを選択 -
パブリック IP の自動割り当ては有効化を選択 -
起動テンプレートを作成を選択
Auto Scalingグループを作成
1.EC2の画面左メニューからAuto Scalingグループを選択
2.Auto Scaling グループ名を入力(例. Test-AutoScaling1)
3.起動テンプレートは先ほど作成したものを選択
4.バージョンはLatest(2)を選択し、次へ
5.VPCは作成したVPC、サブネットはパブリックのものを2つ選択し、次へ
6.ロードバランシング:既存のロードバランサーにアタッチを選択し、前回作成したターゲットグループを作成
7.ヘルスチェックのタイプ:ELBにチェックを入れて次へ
8.希望する容量を2、 最小キャパシティを2、最大キャパシティを4に設定し次へ
9.通知を設定できるが、今回は飛ばして次へ
10.タグに関しても飛ばして次へ
11.問題がなければAuto Scalingグループを作成を選択
12.インスタンスの画面に移動し、新たに2台インスタンスが立ち上がっていることを確認
13.ブラウザでブログが閲覧できることを確認する。
CloudWatchでアラームを設定する
- CloudWatchの画面を開き、左メニューの
アラームを選択 -
アラームの作成を選択 -
メトリクスの選択を選択 -
メトリクスからEC2を選択、Auto Scaling グループ別と進む。 - 先ほど作成したAuto Scalingグループの中から
メトリクス名がCPUUtilizationのものを選択 -
メトリクスの選択を選択 -
条件の中のCPUUtilization が次の時...はより大きいを選択、... よりもの値は70に設定 -
その他の設定タブを開き、欠落データの処理の項目は欠落データを不正(しきい値を超えている)として処理を選択、次へ進む。 -
SNS トピックの選択の項目は既存のものが無ければ新たに作成し、次へ -
アラーム名を入力して次に進む。(例. CPU_High) - 設定に問題が無ければ
アラームの作成を選択 - 上記と同じようにCPU使用率が30%以下の場合のアラームも続けて作成する。
アラームとスケーリングポリシーを紐づける
- Auto Scalingの画面に移り、先ほど作成したAuto Scalingグループを選択
-
自動スケーリングタブを選択し、ポリシーを追加(Create dynamic scaling policy)を選択 -
ポリシータイプはシンプルなスケーリングを選択 -
スケーリングポリシー名を入力(例. CPU_add) -
Cloud Watchアラームは先ほどのCPU_Highを選択 -
アクションを実行は追加、1、キャパシティユニットを選択 -
別のスケーリングアクティビティを許可するまでの秒数は30とし、作成を選択 - 同じ要領でインスタンスを減らすポリシーも作成する。
機能を確認する
EC2インスタンスに手動で負荷をかけ、Auto ScalingとCloud Watchの機能を確認します。
- インスタンスの画面に移り、
WebServer-Autoのインスタンスを選択し、接続を選択 - 右下の
接続を選択するとブラウザでターミナルの画面が開く。 - 負荷をかけるコマンド
yes >> /dev/null &を4回程度実行する。 -
topコマンドを実行し、CPU使用率が高くなっていることを確認する。 - もう一方の
WebServer-Autoのインスタンスでも同様の手順を行う。 - Cloud Watchの画面に移り、左のメニューから
メトリクスを選択 - 作成したAuto Scalingの
CPUUtilizationを選択し、画面上部のグラフでCPU使用率が上昇するまで数分待つ。 - 左のメニューから
アラームを選択し、CPU_Highがアラーム状態となっていることを確認する。 - EC2の画面に移り、Auto Scalingが発動して、インスタンスが新たに起動していることを確認する。
- ブラウザのターミナルに戻り、
topコマンドでプロセス番号を確認し、kill プロセス番号を実行、バックグラウンドで動いているプロセスを停止させる。(kill {4060..4061}とするとまとめて削除できる) - もう一方のインスタンスも同様の処理を行う。
- 再びCloudWatchのアラームを確認し、CPU利用率が下がるのを待つ。
- しばらく待つとEC2インスタンスの画面でも最大4台起動していたインスタンスが2つになっていることが確認できる。
最後に
インスタンスを終了するだけだと、Auto Scalingの機能で再びインスタンスが立ち上がってしまうので、Auto Scalingを削除した後にインスタンスを終了してください。