サイトアイコン 協栄情報ブログ

一つのALBでマルチホストの実現方法紹介


この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。

皆さま、こんにちは!協栄情報の陳です。

やりたいこと

今回は、一つのALBを利用して、2サーバで2サイトを作成し、高可用性を実現したいです。

ALBは、リクエストを受信すると、優先度順にリスナールールを評価し、適用するルールを決定し、ルールアクションのターゲットグループからターゲットインスタンスを選択します。ロードバランサーの1つとして、アプリケーションの可用性と耐障害性が向上します。

構成図

作業ステップ

VPCとサブネットの作成

ALBは、2つ以上のアベイラビリティーゾーンからサブネットを指定しないといけないですので、1つのVPCを作成して、別のアベイラビリティーゾーンで2つのサブネットを作成しておきます。

インスタンスの作成

構成図によって、EC2を二台作成しておきます。

インスタンスのセキュリティグループにポート81を追加します。

ALB検証用なウェブサーバーのインストール

こちらはApache ウェブサーバーをインストールします。

ウェブサーバーをインストールした後で、ポート81を追加設定します。

バーチャルホストとして、複数ポートのアクセス設定をconfファイルの末尾に追加します。

ディレクトリ「/var/www/html80」に簡単なテスト検証用index.htmlを作成します。

EC2-A

  <div class="mainbox">
    <div class="msgr">Web Server 1</div>
    <div class="msgr">EC2-A port:80</div>
    <div class="msg">ようこそ</div>
  </div>

EC2-B

  <div class="mainbox">
    <div class="msgr">Web Server 1</div>
    <div class="msgr">EC2-B port:80</div>
    <div class="msg">ようこそ</div>
  </div>

ディレクトリ「/var/www/html81」に簡単なテスト検証用index.htmlを作成します。
EC2-A

  <div class="mainbox">
    <div class="msgr">Web Server 2</div>
    <div class="msgr">EC2-A port:81</div>
    <div class="msg">ようこそ</div>
  </div>

EC2-B

  <div class="mainbox">
    <div class="msgr">Web Server 2</div>
    <div class="msgr">EC2-B port:81</div>
    <div class="msg">ようこそ</div>
  </div>

例として、ホストEC2-Aのポート81へアクセスできることを確認します。

ターゲットグループの作成

先ずはウェブサーバー1のターゲットグループを作成します。target typeはIP addresses、Protocol:PortはHTTP:80と選択します。

IPアドレスはインスタンスのプライベートIPアドレスを入力して、「Include as pending below」を押下して、ターゲットグループを作成します。

次はウェブサーバー2のターゲットグループを作成します。target typeはIP addresses、Protocol:PortもHTTP:81と選択します。

IPアドレスはインスタンスのプライベートIPアドレスを入力して、「Include as pending below」を押下して、ターゲットグループを作成します。

ALBの作成

ALBを選択して、下図のようにロードバランサーを設定します。

HTTPSを利用していないので、セキュリティグループの設定に進めて、インスタンスのセキュリティグループと同じ設定しておきます。

ルーティングの設定は後で行いますので、とりあえず既存なターゲットグループを選択します。

ロードバランサーの詳細を確認して、ALBを作成します。

Route53にレコードを作成

ドメイン名を入力して、ホストゾーンを作成します。

ホストゾーンにレコードを作成する

上記作成したALBをルーティング先として、バーチャルホストウェブサーバー1へアクセス用のドメイン名を作成します。

上記作成したALBをルーティング先として、バーチャルホストウェブサーバー2へアクセス用のドメイン名を作成します。

作成したレコードが下記のようです。

リスナールールの設定

上記作成したALBを選択して、リスナータブより、「ルールの表示/編集」をクリックします。

上記作成したレコードをIF条件のホストヘッダとして、下図のように、ルールを設定します。

ルーティングの検証

ALBでウェブサーバー1へアクセスします。

画面を再読み込みして、EC2-Bに切り替えます。

ALBでウェブサーバー2へアクセスします。

画面を再読み込みして、EC2-Bに切り替えます。

ルーティングされないリクエストを行います。

最後に

ルーティング設定はホストヘッダ以外にも条件にパス、HTTPヘッダ、HTTPリクエストメソッド、文字列のクエリ、送信元IPアドレスを設定可能です。皆さまは場合によって、選択してください。ちなみに、ロードバランサーのプロトコルは、本番作業の場合、HTTPSがお勧めです。

それでは、今回も読んでいただきありがとうございました!!

モバイルバージョンを終了