ELBの設定とトラフィック検証


はじめに

AWS試験勉強の備忘録です。

ELB(Elastic Load Balancing)とは

マネージド型のロードバランシングサービスです。
複数のサーバーによる冗長化構成を構築し、それらのサーバーに対して負荷分散を行います。
マネージドサービスなのでELBが稼働しているサーバー自体の管理はいりません。

特徴

  • ヘルスチェック
  • 負荷分散
  • SSL/TLSサポート
  • スティッキーセッション
  • Connection Draining
  • アクセスログの記録

ELBの種類

以下の3つのタイプが存在する。

  • CLB(Classic Load Balancer)

  • ALB(Application Load Balancer )

  • NLB(Network Load Balancer)

それぞれの違いについてはこちらを参考にしてください。

CLBとALBの違い

大きな違いはALBのみコンテントベースルーティングがあることです。
どんな機能かというとURLに含まれるURI文字列によって判定を行い、
事前に設定された振り分け先にルーティングします。

ALBはパスルーティングによりCLBより容易にバランシング構成が可能ということです。

CLBだと

2つのURLにわけた場合にELBが2つ必要になリます。

ALBだと

パスルーティングにより1つのELBでバランシングが可能になります。

ELBの検証

マルチAZ構成で2つのwebサーバーにELBを使用して
実際にどのようなトラフィックになるのか検証してみたいと思います。

手順

1.VPC、パブリックサブネットの作成

VPCダッシュボード画面から[VPCの作成]をクリックします。

下記を選択します。

任意のVPC名を付けます。
AZはap-northeast-1aを選択しています。

これで[VPCの作成]をクリックします。

完成するとパブリックサブネットが一つ作成されていることが確認できます。
今度は先程とは違うAZにパブリックサブネットをもう1つ追加していきます。

コンソールのサブネット画面から[サブネットの作成]をクリックします。

作成したVPCを選択して、
AZを今度はap-northeast-1cにします。

ルートテーブルにインターネットゲートウェイを付与していきます。
[ルートテーブルの関連付けの編集]をクリックして、
インターネットゲートウェイがあるルートテーブルIDにして保存します。

これで2つのパブリックサブネットが完成しました。

2.インスタンスの構築

それぞれのパブリックサブネットにEC2インスタンスを構築していきます。

インスタンスのコンソール画面から
[インスタンスの作成]ボタンをクリックします。

AMIは一番上のを選択します。

インスタンスタイプはデフォルトのままにします。

インスタンスの詳細の設定ではVPCは作成したものにし、
サブネットに関しては、最初にAZがap-northeast-1aのものを選択します。

自動割り当てパブリックIPも有効にしておきます。
それ以外はデフォルトのまま次に進みます。

ストレージの追加はデフォルトのまま進み
タグは任意でnameなどを付けてください。

セキュリティグループの設定画面では
新しいセキュリティグループを作成してください。
タイプの方ではHTTPHTTPSを選択しました。

この状態でインスタンスを作成します。

作成されたことを確認したら
今度はAZがap-northeast-1cの所に上記の流れでインスタンスを作成します。
変更箇所は以下になります。

  • サブネットをap-northeast-1cで作成したものにすること
  • セキュリティグループは上で作成したものを使用すること

以上でそれぞれのAZに1つずつインスタンスが構築されました。

3.WEBサーバーに設定

作成したインスタンスをWEBサーバーに設定していきます。

まずはweb-1aにsshします。
インスタンスの説明からパブリックIPをコピーしていき、
macならターミナル、windowsならteratermを使用して接続してみて下さい。

sshできたら
まず管理者権限に移動します

$ sudo su -

次にファイルのアップデート状況を確認します。

# yum update -y

アパッチのソフトウェアをインストールして
WEBサーバーにしていきます。

# yum install httpd -y

インストールが完了したら
以下のコマンドでアパッチソフトウェアを起動します。

# service httpd start

htmlファイルを作成していきます。
以下のディレクトリまで移動します。

# cd /var/www/html

lsコマンドで中身を見てみると何もないことが確認できます。
ここにhtmlファイルを作成します。
今回はvimを使用します。

vim index.html
index.html
<html><h1>hello A!!</h1></html>

入力が完了したら:wqで保存します。
保存できたらリスタートさせます。

# service httpd restart

これで完了しました。

確認のためインスタンスの画面から対象インスタンスのパブリックIPをコピーして
WEBのURLに貼り付けてみて下さい。

htmlで作成した文字が表示されました。

これをもう一つのインスタンスにも同じ流れで、
作業してWEBサーバーとして設定していきます。

一応違いを表すためにhtmlファイルを下記の内容にしておきます。

index.html
<html><h1>hello C!!</h1></html>

インスタンスのパブリックIPから
下記の内容で表示されました。

4.ELBの作成

インスタンス画面の左にロードバランサーの項目があるので、
そこをクリックします。

[ロードバランサーの作成]をクリックします。

ALB、NLB、CLBの3つがあります。
今回はALBを選択します。

名前を入力します。
そのまま下のアベイラビリティーまで進みます。

作成したVPC、AZを選択します。
タグ任意で名前などを付けてください。

セキュリティグループの設定まで進み、セキュリティグループは
インスタンスの作成時に利用したものを選択してください。

ルーティングの設定でターゲットをインスタンスにして、
プロトコルもHTTPにして作成します。

ターゲット登録画面で
作成した2つのインスタンスにチェックを付けて
[登録済みに追加]をクリックします。

これで作成します。

5.トラフィック検証

ELBの画面から
作成したELBのDNS名をコピーします。

それをURLに貼り付けると
WEBサーバーの設定で確認した画面が出てくると思います。

このサイトにアクセスできませんというエラーが出た場合は
少し時間を置いてから実行してみてください。

何回か更新すると表記が変わってくると思います。
今回だとhello A!!hello C!!のようになります。

試しにhello A!!を表示させるインスタンスを
停止させてみたいと思います。

この状態でELBのDNS名でアクセスすると
hello C!!しか表示されないことがわかりました。

まとめ

以上のことからELBがターゲット内のインスタンスの状況を
配慮してトラフィックの制御をしていることが確認できました。