こんにちは、まゆみです。
AWSについての記事をシリーズで書いています
今回は第11回目になります。
今回の記事では
- AWSのロードバランサー
- Auto Scaling
について書いていこうと思います
ではさっそく始めていきますね。
#ELBとは?
ELBとはElastic Load Balancer のことです。
以前に第1回目の記事で、クラウドサービスとオンプレミスを比べた時の特長について書かせていただきましたが、ELBを活用する事によって、
障害に強く
スケーラブルな(拡張性の高い)
システムを構築する事ができます
##ELBの役割
あなたが、一つのサーバーだけでサイト運営をしているとします
平均的に1時間に1000人の人がアクセスするから、それに耐えられるサーバーをと。。。
それは最善の策でしょうか?
ある時間によっては、一時的にでもアクセスが爆増する事もあるかも知れません。
また、サーバーがクラッシュしてしまったらどうでしょうか?
ELBであらかじめリスクヘッジをしておけば、そのような事に対処できます。
①ELBに関連付けられたEC2インスタンスにトラフィックを均等に配分して、負荷を軽減させることができます
②何かの理由で、サーバーがクラッシュした時に、(ヘルスチェックという)切り離しをしてくれる
では、さらに既存のサーバーに均等に振り分けるのでも足りないくらいアクセスが増えた時はどうでしょうか?
その時の対処法を下記に書いていきます
#Auto Scalingとは?
Auto Scaling とは必要に応じて、インスタンス数を増減させてくれるサービスです
#Auto Scaling に実際触ってみる
では、実際にAWSのコンソールからAuto Scaling を使ってみましょう
まずは、テンプレートを作ります
下のような画面になりますので、例にならって記入してみてください。
そのままスクロールしていくと『高度な詳細』と書いてあるところがあるので、そこを開いて一番下のユーザーデータに下のコードをコピペしてみてください。
ユーザーデータとは以前にこちらの記事でも説明させていただきましたが、 インスタンスが最初に起動させられた時に実行されるコードになります。
下記のコードの詳しい解説は割愛させていただきますが、下記のコードをユーザーデータにコピペしておくことで、このインスタンスを起動させた時に、『当該インスタンスが、どこのサブネットに存在しているか』を示させることができます
#!/bin/bash
yum update -y
yum install -y httpd
systemctl start httpd
systemctl enable httpd
EC2AZ=$(curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone)
echo '<center><h1>This Amazon EC2 instance is located in Availability Zone: AZID </h1></center>' > /var/www/html/index.txt
sed "s/AZID/$EC2AZ/" /var/www/html/index.txt > /var/www/html/index.html
EC2のダッシュボードに戻り、一番下の『Auto Scaling グループ』を開きます
下のスクショの例にならって選択します。
サブネットは全て選択します。(Auto Scale によってインスタンスが作られる時、どのサブネット内に作られるかを決めることができます)
『次へ』をクリックします
下のようなページになるので、そのまま何も変えずに『次へ』をクリック
最小キャパシティと最大キャパシティを2にして、次へ進みます
あとは最後まで何も変えずに『次へ』をクリックし続けて、Auto Scalingグループを作ってください。
正常に作られた後、Auto Scaling グループの詳細を見てみます
アクティビティのタブをクリックして開くと、EC2が2つ作られているのが表示されています
また、インスタンスも、各サブネットに2つづつ作られました。
先ほどユーザーデータにコピペしたコードが上手く実行されるか見てみますね。
では、次にロードバランサーに触れていきましょう
#ロードバランサーを作る
ロードバランサーから均等にインスタンスにトラフィックが配分され負荷を減らすわけですが、どのインスタンスでトラフィックを分けるか決めます
それが、ターゲットグループになります
グループ詳細の指定については、特に変更なしでそのまま次に進みます
使用可能なインスタンスは全て選択します
少しスクロールすると、『保留中として以下を含める』と書いてあるところがあるのでそちらもクリックして選択します
ロードバランサーを作ります
ウェブアプリケーションを作っているので、『Application Load Balancer』を選択します
下のようなページに行きます。少しスクロールするとアベイラビリティゾーンを選択するところがあるので、全て選択しましょう
後は、そのまま何も変えずに次へ進んで、ロードバランサーを作ります
ロードバランサーがどのように働くか見る前に、一応、ターゲットグループのヘルス状態が正常が見てみますね。
では、ロードバランサーがちゃんと、既存のEC2インスタンスに均等にトラフィックを割り当てているか見てみます
ロードバランサーのDNS名をコピーして、新しいブラウザーに貼り付けてみます
リロードするたびに、アベイラビリティゾーン名が変わっているのが分かると思います
#まとめ
今回の記事はこれで締めくくらせていただきます
お役に立てれば幸いです。