見出し画像

AWSで2つのアベイラビリティゾーンにまたがった冗長化構成のEC2にAuto Scalingを設定して高可用性を実現したい

こんにちは!さっしです!

タイトル通りのAWSの設定内容を、自分の忘備録の意味を込めてまとめてみました。
EC2のオートスケーリングの設定をしたことがない方がいましたら、ぜひ以下を参考に設定してみてください。

■完成図

画像1

■やりたいこと

・EC2のAuto Scalingを設定したい
・EC2の平均CPU使用率が70%以上になったら、EC2を1台追加したい
・EC2の平均CPU使用率が30%未満になったら、EC2を1台削除したい
・EC2の増減は最大4台、最低2台の範囲内にしたい

■事前準備

・以下の構成を基に設定をしていきます

画像2

※詳細な設定方法は以下のブログを参考にしてください
https://note.com/sasshiii/n/n8ea2ecc6cb35

■やること

1.EC2のAMIを作成する
2.起動テンプレートを作成する
3.Auto Scaling Groupを作成する
4.Cloud Watchで平均CPU使用率70%を超えた時に発動するアラームを作成する
5.Cloud Watchで平均CPU使用率30%を下回った時に発動するアラームを作成する
6.Auto Scalingのスケーリングポリシーをアラームと関連づけ、EC2を1台追加
するポリシーを作成する
7.Auto Scalingのスケーリングポリシーをアラームと関連づけ、EC2を1台削除
するポリシーを作成する
8.Auto ScalingによりEC2が追加されるか確認する
9.Auto ScalingによりEC2が削除されるか確認する

■1.EC2のAMIを作成する

サービス:EC2
・ナビゲーションペインの「インスタンス」をクリック後、右上の「アクション」→「イメージとテンプレート」→「イメージを作成」をクリックする
※EC2は起動中でもAMIの作成はできるが、停止されていることが望ましい

画像3

・以下の内容を入力し「イメージを作成」ボタンをクリックする
イメージ名:任意

画像4

■2.起動テンプレートを作成する

サービス:EC2
・ナビゲーションペインの「テンプレートの起動」をクリック後、「起動テンプレートを作成」をクリックする

画像5

・以下の内容を入力し「起動テンプレートを作成」ボタンをクリックする
起動テンプレート名:任意
テンプレートバージョンの説明:任意
EC2 Auto Scaling で使用できるテンプレートをセットアップする際に役立つガイダンスを提供:チェック
※「EC2 Auto Scaling で使用できるテンプレートをセットアップする際に役立つガイダンスを提供」とは、起動テンプレートをAuto Scalingで使用したい場合にチェックを入れる
AMI :先ほど作成したAMI
インスタンスタイプ:任意
キーペア名:任意
セキュリティグループ :EC2インスタンスにアタッチ済みのグループ
パブリック IP の自動割り当て:有効化

画像6

画像7

画像8

画像9

画像10

画像11

■3.Auto Scaling Groupを作成する

サービス:EC2
・ナビゲーションペインの「オートスケーリンググループ」をクリック後、右上の「Auto Scaling  グループの作成」をクリックする

画像12

・以下の内容を入力し「次へ」ボタンをクリックする
Auto Scaling グループ名:任意
起動テンプレート:先ほど作成した起動テンプレート
バージョン:Latest(1)

画像13

画像14

・以下の内容を入力し「次へ」ボタンをクリックする
VPC:事前に作成したVPC
サブネット:事前に作成した2つのパブリックサブネット

画像15

画像16

・以下の内容を入力し「 次へ」ボタンをクリックする
既存のロードバランサーにアタッチ:チェック
ヘルスチェックのタイプ:チェック

画像17

画像18

画像19

・以下の内容を入力し「次へ」ボタンをクリックする
希望する容量:2
最小キャパシティ:2
最大キャパシティ:4

画像20

画像21

・「通知を追加」は特に設定せず「次へ 」ボタンをクリックする

・「タグを追加」は特に設定せず「次へ 」ボタンをクリックする

・確認画面が表示されるので「Auto Scaling グループを作成」ボタンをクリックする

・自動でEC2が最低2台になるようにAuto Scalingが機能していることを確認する

画像22

■4.Cloud Watchで平均CPU使用率70%を超えた時に発動するアラームを作成する

サービス:Cloud Watch
・ナビゲーションペインの「アラーム」をクリック後、右上の「アラームの作成」ボタンをクリックする

画像23

・以下の内容を入力し「メトリクスの選択」ボタンをクリックする

画像24

・タブの「すべてのメトリクス」をクリック後、「EC2」→「Auto Scaling グループ別」→「CPUUtilization」にチェックを入れた後、「メトリクスの選択」ボタンをクリックする
※CPUUtilizationチェック時のAutoScalingGroupNameは、以前に作成したグループ名のものを選択する

画像25

・以下の内容を入力し「次へ」ボタンをクリックする
... よりも:70
欠落データの処理:欠落データを見つかりませんでしたとして処理

画像26

画像27

・「アクションの設定」は特に設定せず「次へ 」ボタンをクリックする
※ここでSNS等の通知先を追加しても良い

・以下の内容を入力し「次へ」ボタンをクリックする
アラーム名:任意

画像28

・確認画面が表示されるので「アラームの作成」ボタンをクリックする

■5.Cloud Watchで平均CPU使用率30%を下回った時に発動するアラームを作成する

※「Cloud Watchで平均CPU使用率70%を超えた時に発動するアラームを作成する」で作成した内容の「メトリクスと条件の指定」までは同作業のため、詳細は割愛します
・以下の内容を入力し「次へ」ボタンをクリックする
CPUUtilization が次の時... :より低い
... よりも:30

画像29

画像30

・「アクションの設定」は特に設定せず「次へ 」ボタンをクリックする
※ここでSNS等の通知先を追加しても良い

・以下の内容を入力し「次へ」ボタンをクリックする
アラーム名:任意

画像31

・以下の内容を入力し「次へ」ボタンをクリックする
アラーム名:任意

画像32

・確認画面が表示されるので「アラームの作成」ボタンをクリックする

■6.Auto Scalingのスケーリングポリシーをアラームと関連づけ、EC2を1台追加するポリシーを作成する

サービス:EC2
・ナビゲーションペインの「オートスケーリンググループ」をクリック後、ポリシーを編集したいAuto Scaling  グループ「名前」リンクをクリックする

画像33

・「自動スケーリング」タブをクリック後、「ポリシーを追加」をクリックする

画像34

・以下の内容を入力し「作成」ボタンをクリックする
ポリシータイプ:シンプルなスケーリング
スケーリングポリシー名:任意
CloudWatch アラーム:70%を超えた際に発動するアラーム
アクションを実行:追加、1、キャパシティユニット
次に待機します:30

画像35

■7.Auto Scalingのスケーリングポリシーをアラームと関連づけ、EC2を1台削除するポリシーを作成する

※「Auto Scalingのスケーリングポリシーをアラームと関連づけ、EC2を1台追加」で作成した内容の「スケーリングポリシーを作成」までは同作業のため詳細は割愛します
・以下の内容を入力し「作成」ボタンをクリックする
ポリシータイプ:シンプルなスケーリング
スケーリングポリシー名:任意
CloudWatch アラーム:30%を下回った際に発動するアラーム
アクションを実行:削除、1、キャパシティユニット
次に待機します:30

画像36

■8.Auto ScalingによりEC2が追加されるか確認する

・EC2にssh接続後、以下のコマンドを実行する
※4プロセスほど立ち上げる

yes >> /dev/null &

・しばらくするとCloudWatchのアラームが発動していることを確認する
※メトリクスは5分間隔で計測する

画像37

・EC2が最大4台まで立ち上がっていることを確認する

画像38

■9.Auto ScalingによりEC2が削除されるか確認する

・EC2にssh接続後、以下のコマンドを実行し、先ほどyesコマンドで立ち上げたプロセスを停止する

kill xxxx(停止したいプロセスID)

・しばらくするとCloudWatchのアラームが発動していることを確認する
※メトリクスは5分間隔で計測する

画像39

・EC2が希望数の2台まで戻っていることを確認する

画像40

設定は以上になります。

AWSってほんと楽しいですね!

この記事が気に入ったらサポートをしてみませんか?