内容
・趣旨目標
・教材
・使用できるサービス
・目指す構成(基準)
・CloudFormation(ハンズオン開始)
・EC2の起動テンプレートから作成
・Auto Scalingグループを作成
・Auto Scalingのスケジュール設定
・Auto Scalingの動的スケーリング設定
・EC2へ負荷をかけ、スケールアウト
・負荷を停止し、スケールイン
・EC2インスタンスのヘルスチェックを検証
・リソースの削除
趣旨目標
実際に触れることで理解の深化!困った箇所や勉強になった箇所を中心に記録します。
教材
※私の場合、無料枠内でハンズオンできたので記事を参考にされてください!
使用できるサービス
AWS CloudFormation,VPC,ALB
目指す構成(基準)
CloudFormation(ハンズオン開始)
コードはハンズオンサイトからダウンロード。
以下参考です。VPC,EC2,ALB,subnetを設定することで、165行になります。
このコードを作るのに苦戦しなければ多数のセットを作る場合、早くセットアップできそうですね!
ファイルをアップロードする。
あとはデフォルトで進みますが、次の図のように作成失敗した時の挙動を設定できるみたいですね。
あとは、スタック作成のオプションとしてタイムアウトを設定できますね。課金に影響するので、作成したばかりのコードを使用する際などは設定した方がよさそう。
はい、公式さんとUIが違いすぎて(-_-;)
図のように順次リソースが作成されていく。
完成(あっという間です。)
EC2の起動テンプレートから作成
※下図赤枠、設定によっては料金がかかるのかな?無料枠がどこまでカバーされているのか正直理解に苦しみました(私だけかw)
ここを「有効化」すると、通常5分間隔でデータが更新されるところが1分間隔となります。
私は、「無効」で学習します。(;'∀')
「ハンズオンの範囲」では、無効でも5分間隔でデータ収集してくれて、アラームも表示してくれますので全く問題ないかと。
ちなみに、参考書で学習した際はCPUやメモリ、ネットワークの動作が思わしくない場合は、EC2やELBなどをチェックすることで、異常を発見できる場合があるとのこと。φ(..)メモメモ
次!!
ここでユーザーデータに、ストレスチェックツール、Apacheのインストール、SSHの設定などを行っていきます。ハンズオンサイトのコピー↓
#!/bin/bash
sudo yum update -y
sudo yum install -y httpd
sudo amazon-linux-extras install epel -y
sudo yum install stress -y
sudo systemctl start httpd
sudo echo `hostname` > /var/www/html/index.html
sudo echo "ClientAliveInterval 60" >> /etc/ssh/sshd_config
sudo echo "ClientAliveCountMax 120" >> /etc/ssh/sshd_config
sudo systemctl restart sshd.service
ひとまずできとる。次のAuto Scalingグループ作成の工程で反映させます。
Auto Scalingグループを作成
ここで作成したEC2の起動テンプレートを選択します。
CloudFormationで事前に入れたVPCと2つのAZを選択する。
ここにヘルスチェックがあります。
死活監視の発展バージョンですね!
異常が発生したらEC2を置き換えてくれるもの|д゚)
スケーリングは表記のとおりで行きます!
【こっちで進めます。】
【参考】
「ターゲット追跡スケーリングポリシー」を選択した場合、CPUの使用率などによってスケーリングできるみたいですねー
【参考2】
EC2置き換え時のポリシーを決めるオプションがあります。
Auto Scalingグループが完成しました。
EC2がカウントされました!
Auto Scalingのスケジュール設定
9時間前の時間を設定。
例:今が午前0時であれば、前日の午後3時ですね!
予定どおりスケーリングできていますね!
Auto Scalingの動的スケーリング設定
ターゲット追跡スケーリング
要するに、設定した閾値でCPUが足りなければEC2を加えて、十分であれば元に戻すということ。
※私の場合、スケジュールでのスケーリング実施後に、時間の関係で一度リソースを全て削除して、動的スケーリングの学習を改めて開始しています。インスタンス数が1つの状態から以下スタートしています。
ターゲット追跡スケーリングを作成した時点で、「CloudWatchのアラーム」が作成されています。Σ(゚Д゚;エーッ!
Highがスケールアウトの起点になる指標です。
また、条件に記載がありますが、3分以内に3回しきい値を超えた場合スケーリングされるということです。
現状↓ べたなぎですねw赤線がしきい値になります。
EC2へ負荷をかけ、スケールアウト
ここからSSH接続であるコマンドを実行することで、サーバーに負荷をかけていきます。まず準備から開始します。(私の場合、現状のインスタンスはEC2が1つのみです。)
EC2に接続していきます。
次のコマンドはEC2に負荷をかけるコマンドですので、ご使用には注意されてください。
stress -c 1
上がってきたー(緑枠)
MAXだー
Auto Scalingのアクティビティを確認するとnew instanceができていますね!
インスタンスが新たにできています。
負荷を停止し、スケールイン
まず、ストレスを停めます。
「Ctrl+C」
すぐグリーンになりました。
参考として、次の画像はLowのしきい値を示しています。15分間CPU使用率49%未満を維持できればスケールインしてくれますね!
スケールインしました!
EC2インスタンスのヘルスチェックを検証
私の場合次の画像のとおり、最低1つのEC2インスタンスが必要という設定
なけなしの1つのEC2インスタンスを停止することで、デフォルト設定のヘルスチェックが働き、新たなEC2インスタンスが起動するはずです。
見事に置き換えが実行され、新たなEC2インスタンスが自動作成されました。
Auto Scalingのアクティビティから動きを確認していきます。
停止させて。
作成!
期待した動きをしています(。-`ω-)
リソースの削除
ハンズオンが終了しましたので後片付けをして、次のハンズオンの準備っすね!
1 Auto Scaling Groupの削除(数分かかります。)
2 EC2起動テンプレートの削除
3 CloudFormationのスタックを削除
4 ここで動画は終了するのですが一口メモですw
実は、S3バケットを削除し忘れています。
ハンズオンのなかで、CloudFormationへjsonファイルをアップロードしたデータが格納されています。つまりデータ量は少ないですが、自動的にS3バケットを作成し、アップロードしたデータを管理してくれていたのです。
これで削除完了です!次の学習準備完了!
では!