オートスケーリンググループ
このチュートリアルでは、以下の要件を持つアプリケーションのケースをシミュレートします。アーキテクチャを導入するために、お客様やプロジェクトマネージャーに同様の質問をすることができます。
質問1:強いトラフィックがある場合、アプリケーションが正常に動作するために必要なインスタンス数はいくつですか?つまり、最小限で何台必要ですか?
このチュートリアルでは、アプリケーションは常に最低でも2つの実行中のインスタンスを持っている必要があります。
質問2:AWSのインスタンスにはコストがかかり、無料ではありません。したがって、そのアプリケーションにデプロイできる最大のインスタンス数はいくつですか?
このチュートリアルでは、アプリケーションは最大で5つの実行中のインスタンスを持っている必要があります。
質問3:トラフィックが通常の場合、アプリケーションが良好な状態で動作するための理想的なインスタンス数は何ですか?
このチュートリアルでは、すべてが順調な場合、アプリケーションはできれば3つの実行中のインスタンスを持っている必要があります。
質問4:追加のインスタンスをデプロイするか、逆に不要なインスタンスを削除するための基準は何ですか?
このチュートリアルでは、CPU使用率が40%を超えると、追加のインスタンスがデプロイされる条件です。
チュートリアルの目的
次のアーキテクチャをどのように構築するかを見ていきます。
このチュートリアルでは、Application Load Balancerは使用しないことにします。なぜなら、Auto Scaling Groupの作成に焦点を当てるからです。次回のチュートリアルでは、Auto Scaling GroupとLoad Balancerを一緒に設定する方法について説明します。
セキュリティグループの作成
「EC2 ダッシュボード」にアクセスしてください。「セキュリティグループ」をクリックしてください。
「セキュリティグループを作成」をクリックしてください。
「MyInstanceSecurityGroup」というセキュリティグループに名前を付けてください。
「インバウンドルール」セクションに移動してください。
「ルールを追加」ボタンをクリックしてください。
選択肢として、「SSH」を選び、ソースとして「Anywhere-IPv4」を選択してください。
「Anywhere-IPv4」は「0.0.0.0/0」と同じです。
「セキュリティグループを作成」をクリックしてください。
起動テンプレートの作成
「EC2 ダッシュボード」にアクセスしてください。「起動テンプレート」をクリックしてください。
「起動テンプレートを作成」をクリックしてください。
「MyEC2Templace」という起動テンプレートに名前を付けてください。
「Application and OS Images (Amazon Machine Image)」セクションに移動してください。
「Amazon Linux」を選んでください。
Amazon Linuxを使用していることを確認ください。
また、t2.microを使用していることを確認してください。
このチュートリアルでは、キーペアが要らないので使用しません。
「キーペアなしで続行 (推奨されません)」を選択してください。
「ネットワーク設定」セクションに移動してください。
「セキュリティグループを編集」にクリックしてください。
「MyInstanceSecurityGroup」を選択してください。
セキュリティグループを確認ください。
「高度な詳細」セクションのユーザーデータに次のコマンドを実行してください。
#!/bin/bash
yum update -y
sudo yum install stress -y
「起動テンプレートを作成」をクリックしてください。
Auto Scaling グループの作成
「EC2 ダッシュボード」にアクセスしてください。「Auto Scaling グループ」をクリックしてください。
「Auto Scaling グループを作成する」をクリックしてください。
「MyAutoScaling」というAuto Scaling グループに名前を付けてください。
「MyEC2Templace」を選んでください。
「次へ」ボタンをクリックしてください。
「次へ」ボタンをクリックしてください。
「次へ」ボタンをクリックしてください。
希望を設定ください。
希望するキャパシティ:3
最小の希望する容量:2
最大の希望する容量:5
「次へ」ボタンをクリックしてください。
「次へ」ボタンをクリックしてください。
「次へ」ボタンをクリックしてください。
「Auto Scaling グループを作成する」をクリックしてください。
この画面が表示されます。
数分後にステータスが変わるはずです。遅かたら、時々ページを更新してください。
その間に新しいタブを開き、インスタンス一覧ページにアクセスしてください。そこでEC2の3つのインスタンスが表示されるはずです。
変更してください、それぞれのEC2インスタンスの名前を「MyInstance 1」、「MyInstance 2」、および「MyInstance 3」にします。
Check
現在、Auto Scaling Groupが正しく機能しているか確認しましょう。
Auto Scaling Groupを最低でも2つの実行中のインスタンスがあるように設定しました。可能であれば3つです。
したがって、テストのために、AWSが新しいEC2インスタンスを自動的にデプロイするかどうかを確認するために、意図的に2つのインスタンスを削除します。
そのため、ランダムに2つのインスタンスを選択してください。
「インスタンスの状態」ボタンをクリックしてください。
「インスタンスを終了」をクリックしてください。
「終了」をクリックしてください。
選択した2つのEC2インスタンスは、その後シャットダウンするはずです。
もし少し待っていただければ、AWSは自動で新しい2つのEC2インスタンスをデプロイするのが見えるはずです。
Auto Scaling グループは正常に機能しています。おめでとうございます!
「OLD」として消灯しているインスタンスの名前を変更して、誤りがないようにします。
実行中の3つのインスタンスを、「MyInstance 1」、「MyInstance 2」、および「MyInstance 3」と命名してください。
自動スケーリングの条件設定(動的スケーリングポリシー)
目的:EC2インスタンスのCPU使用率が40%以上の場合、AWSは自動的に新しいインスタンスをプロビジョニングするようにしたいと考えています。
「Auto Scaling グループ」をクリックしてください。
「MyAutoScaling」をクリックしてください。
「オートスケーリング」をクリックしてください。
「動的スケーリングポリシーを作成する」をクリックしてください。
「ターゲット値」に40入れてください。
「作成」をクリックしてください。
新しいポリシーは作成されました。
CloudWatchの画面に移動すると、アラームが作成されていることに気付くでしょう。
AWSは1つのインスタンスをオフにして、2つだけを残しました。インスタンスはCPUの使用率が40%未満です。したがって、3つのインスタンスを持つ必要はありません。
ストレステスト
Auto Scaling Groupが、インスタンスのCPU使用率が40%を超える場合に正しく機能しているかどうかを確認しましょう。
2つのインスタンスに接続し、次のコマンドを実行してください。
stress -c 4
約5〜10分待つと、AWSが追加のEC2インスタンスをプロビジョニングしているのに気づくでしょう。