LoginSignup
2
0

More than 1 year has passed since last update.

【AWS】 ロードバランサーとAutoScaling について no.11

Posted at

AWS (13).png

こんにちは、まゆみです。

AWSについての記事をシリーズで書いています

今回は第11回目になります。

今回の記事では

  • AWSのロードバランサー
  • Auto Scaling

について書いていこうと思います

ではさっそく始めていきますね。

ELBとは?

ELBとはElastic Load Balancer のことです。

以前に第1回目の記事で、クラウドサービスとオンプレミスを比べた時の特長について書かせていただきましたが、ELBを活用する事によって、

障害に強く

スケーラブルな(拡張性の高い)

システムを構築する事ができます

ELBの役割

VPC (1).png

あなたが、一つのサーバーだけでサイト運営をしているとします

平均的に1時間に1000人の人がアクセスするから、それに耐えられるサーバーをと。。。

それは最善の策でしょうか?

ある時間によっては、一時的にでもアクセスが爆増する事もあるかも知れません。

また、サーバーがクラッシュしてしまったらどうでしょうか?

ELBであらかじめリスクヘッジをしておけば、そのような事に対処できます。

①ELBに関連付けられたEC2インスタンスにトラフィックを均等に配分して、負荷を軽減させることができます

②何かの理由で、サーバーがクラッシュした時に、(ヘルスチェックという)切り離しをしてくれる

では、さらに既存のサーバーに均等に振り分けるのでも足りないくらいアクセスが増えた時はどうでしょうか?

その時の対処法を下記に書いていきます

Auto Scalingとは?

Auto Scaling とは必要に応じて、インスタンス数を増減させてくれるサービスです

2021-05-09_12-17-23.png
引用元:AWSドキュメント

Auto Scaling に実際触ってみる

では、実際にAWSのコンソールからAuto Scaling を使ってみましょう

まずは、テンプレートを作ります

2021-05-09_17-30-02.png

下のような画面になりますので、例にならって記入してみてください。

2021-05-10_10-32-30.png

2021-05-09_17-52-04.png

そのままスクロールしていくと『高度な詳細』と書いてあるところがあるので、そこを開いて一番下のユーザーデータに下のコードをコピペしてみてください。

ユーザーデータとは以前にこちらの記事でも説明させていただきましたが、 インスタンスが最初に起動させられた時に実行されるコードになります。

下記のコードの詳しい解説は割愛させていただきますが、下記のコードをユーザーデータにコピペしておくことで、このインスタンスを起動させた時に、『当該インスタンスが、どこのサブネットに存在しているか』を示させることができます

#!/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

2021-05-09_17-38-55.png

EC2のダッシュボードに戻り、一番下の『Auto Scaling グループ』を開きます

2021-05-09_17-56-00.png

2021-05-09_17-58-56.png

下のスクショの例にならって選択します。
サブネットは全て選択します。(Auto Scale によってインスタンスが作られる時、どのサブネット内に作られるかを決めることができます)

『次へ』をクリックします

2021-05-09_18-04-15.png

下のようなページになるので、そのまま何も変えずに『次へ』をクリック
2021-05-09_18-09-23.png

最小キャパシティと最大キャパシティを2にして、次へ進みます

2021-05-09_18-11-48.png

あとは最後まで何も変えずに『次へ』をクリックし続けて、Auto Scalingグループを作ってください。

2021-05-09_18-14-52.png

正常に作られた後、Auto Scaling グループの詳細を見てみます

アクティビティのタブをクリックして開くと、EC2が2つ作られているのが表示されています

2021-05-09_18-17-14.png

また、インスタンスも、各サブネットに2つづつ作られました。

2021-05-09_18-21-41.png

先ほどユーザーデータにコピペしたコードが上手く実行されるか見てみますね。

2021-05-10_9-30-06.png

うまく行っています
2021-05-10_9-31-48.png

では、次にロードバランサーに触れていきましょう

ロードバランサーを作る

EC2 (3).png

ロードバランサーから均等にインスタンスにトラフィックが配分され負荷を減らすわけですが、どのインスタンスでトラフィックを分けるか決めます

それが、ターゲットグループになります

2021-05-10_9-34-03.png

グループ詳細の指定については、特に変更なしでそのまま次に進みます

2021-05-10_9-37-03.png

使用可能なインスタンスは全て選択します

2021-05-10_9-37-41.png

少しスクロールすると、『保留中として以下を含める』と書いてあるところがあるのでそちらもクリックして選択します

2021-05-10_9-40-24.png

ロードバランサーを作ります

2021-05-10_9-42-53.png

ウェブアプリケーションを作っているので、『Application Load Balancer』を選択します

2021-05-10_9-45-45.png

下のようなページに行きます。少しスクロールするとアベイラビリティゾーンを選択するところがあるので、全て選択しましょう

2021-05-10_9-49-11.png

先ほど作ったターゲットグループを選択します
2021-05-10_9-51-42.png

後は、そのまま何も変えずに次へ進んで、ロードバランサーを作ります

ロードバランサーがどのように働くか見る前に、一応、ターゲットグループのヘルス状態が正常が見てみますね。

2021-05-10_10-01-58.png

では、ロードバランサーがちゃんと、既存のEC2インスタンスに均等にトラフィックを割り当てているか見てみます

ロードバランサーのDNS名をコピーして、新しいブラウザーに貼り付けてみます

2021-05-10_10-05-39.png

リロードするたびに、アベイラビリティゾーン名が変わっているのが分かると思います
2021-05-10_10-08-19.png

2021-05-10_10-09-04.png

まとめ

今回の記事はこれで締めくくらせていただきます

お役に立てれば幸いです。

2
0
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
0