2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

スケーラビリティのあるブログサービスを構築する

Last updated at Posted at 2021-06-22

内容

この記事はAWS初学者を導く体系的な動画学習サービス
「AWS CloudTech」の課題カリキュラムで作成しました。
https://aws-cloud-tech.com
「冗長性のあるブログサービスを構築する(冗長構成)」のレッスンの続きです。
前回までの構成
スクリーンショット 2021-06-21 9.54.31.png
前回の記事
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台減るような構成にします。
スクリーンショット 2021-06-22 14.48.46.png

実施手順

起動テンプレートを作成

起動テンプレートとは、通常手動で作成していたEC2の設定などをひとまとめにしたものです。
  1. EC2の画面左メニューからテンプレートの起動を選択
  2. 起動テンプレートを作成を選択
  3. 起動テンプレート名を入力(例. LaunchTemplate1)
  4. テンプレートバージョンの説明を入力(例. 1.0.0)
  5. EC2 Auto Scaling で使用できるテンプレートをセットアップする際に役立つガイダンスを提供にチェックをつける。
  6. AMIは前回作成した自分のAMIの中から指定
  7. インスタンスタイプt2.microを選択
  8. キーペアは既に作成してあるものを選択
  9. リソースタグタグの追加を選択
  10. キーNameWebServer-Autoと入力(この起動テンプレートを元にEC2インスタンスが立ち上がった際にここで設定した値が付与される)
  11. ネットワークインターフェースを追加を選択
  12. セキュリティグループはインスタンスに紐づいているものを選択
  13. パブリック IP の自動割り当て有効化を選択
  14. 起動テンプレートを作成を選択

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でアラームを設定する

  1. CloudWatchの画面を開き、左メニューのアラームを選択
  2. アラームの作成を選択
  3. メトリクスの選択を選択
  4. メトリクスからEC2を選択、Auto Scaling グループ別と進む。
  5. 先ほど作成したAuto Scalingグループの中からメトリクス名CPUUtilizationのものを選択
  6. メトリクスの選択を選択
  7. 条件の中のCPUUtilization が次の時...より大きいを選択、... よりもの値は70に設定
  8. その他の設定タブを開き、欠落データの処理の項目は欠落データを不正(しきい値を超えている)として処理を選択、次へ進む。
  9. SNS トピックの選択の項目は既存のものが無ければ新たに作成し、次へ
  10. アラーム名を入力して次に進む。(例. CPU_High)
  11. 設定に問題が無ければアラームの作成を選択
  12. 上記と同じようにCPU使用率が30%以下の場合のアラームも続けて作成する。

アラームとスケーリングポリシーを紐づける

  1. Auto Scalingの画面に移り、先ほど作成したAuto Scalingグループを選択
  2. 自動スケーリングタブを選択し、ポリシーを追加(Create dynamic scaling policy)を選択
  3. ポリシータイプシンプルなスケーリングを選択
  4. スケーリングポリシー名を入力(例. CPU_add)
  5. Cloud Watchアラームは先ほどのCPU_Highを選択
  6. アクションを実行追加1キャパシティユニットを選択
  7. 別のスケーリングアクティビティを許可するまでの秒数30とし、作成を選択
  8. 同じ要領でインスタンスを減らすポリシーも作成する。

機能を確認する

EC2インスタンスに手動で負荷をかけ、Auto ScalingとCloud Watchの機能を確認します。
  1. インスタンスの画面に移り、WebServer-Autoのインスタンスを選択し、接続を選択
  2. 右下の接続を選択するとブラウザでターミナルの画面が開く。
  3. 負荷をかけるコマンドyes >> /dev/null &を4回程度実行する。
  4. topコマンドを実行し、CPU使用率が高くなっていることを確認する。
  5. もう一方のWebServer-Autoのインスタンスでも同様の手順を行う。
  6. Cloud Watchの画面に移り、左のメニューからメトリクスを選択
  7. 作成したAuto ScalingのCPUUtilizationを選択し、画面上部のグラフでCPU使用率が上昇するまで数分待つ。
  8. 左のメニューからアラームを選択し、CPU_Highアラーム状態となっていることを確認する。
  9. EC2の画面に移り、Auto Scalingが発動して、インスタンスが新たに起動していることを確認する。
  10. ブラウザのターミナルに戻り、topコマンドでプロセス番号を確認し、kill プロセス番号を実行、バックグラウンドで動いているプロセスを停止させる。(kill {4060..4061}とするとまとめて削除できる)
  11. もう一方のインスタンスも同様の処理を行う。
  12. 再びCloudWatchのアラームを確認し、CPU利用率が下がるのを待つ。
  13. しばらく待つとEC2インスタンスの画面でも最大4台起動していたインスタンスが2つになっていることが確認できる。

最後に

インスタンスを終了するだけだと、Auto Scalingの機能で再びインスタンスが立ち上がってしまうので、Auto Scalingを削除した後にインスタンスを終了してください。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?