この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。
皆さま、こんにちは!協栄情報の陳です。
やりたいこと
今回は、一つのALBを利用して、2サーバで2サイトを作成し、高可用性を実現したいです。
ALBは、リクエストを受信すると、優先度順にリスナールールを評価し、適用するルールを決定し、ルールアクションのターゲットグループからターゲットインスタンスを選択します。ロードバランサーの1つとして、アプリケーションの可用性と耐障害性が向上します。
構成図
- サーバが2台しかない
- 2台サーバが2サイトにして、高可用性に設計
- サーバ毎にの別々のポートで複数のサイトを構築
- ALBからリスナールールを作成し、アクセストラフィックを分別
- 1つのALBで複数のサイトを実現
- サーバ毎にのバックアップや、オンライン保守で実現可能
作業ステップ
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がお勧めです。
それでは、今回も読んでいただきありがとうございました!!