カテゴリー
AWS EC2 Load Balancer RDS

AWS 冗長化されたWEBサイトの構築②ロードバランサーを使ったWEBサイトの冗長化編

前回までの作業

前回までの作業は下記を参照ください。

②ロードバランサーを使ったWEBサイトの冗長化編

2台目のWEBサーバーの作成

AMIの作成

作成済みのEC2インスタンスからAMIを作成します。

EC2サービスの[インスタンス]よりEC2インスタンスを選択して、[アクション]ー[イメージとテンプレート]ー[イメージを作成]を選択します。

[イメージ名]:WordPress(任意)
[タグ]:Name WordPress(任意)

暫くするとAMIが作成されます。

作成されたAMIを選択して、[アクション]ー[起動]を選択します。

[ネットワーク]:インスタンスを配置するVPCを選択
[サブネット]:パブリックサブネットを選択
[自動割り当てパブリックIP]:有効
[キャパシティーの予約]:なし

ストレージはデフォルトで。

“Name”タグに”test_web_2″を指定しました。

最初に作成したインスタンスと同じセキュリティーグループ(sg_test_web)を選択します。

Webサーバーの追加設定

テスト(確認)用の設定

ロードバランサー配下に2台のWEBサーバーを配置したときにどちらのサーバーにアクセスしているかわかるようにします。

sshで各サーバーに接続して、/var/www/html/index.phpファイルの先頭に<h1>Server_番号</h1>を追加しました。

ロードバランサーの作成

セキュリティーグループの作成

[セキュリティグループ名]:sg_lb_web(任意)
[説明]:access to LoadBalancer(任意)
[VPC]:セキュリティーグループを作成するVPCを選択

【インバウンドルール】
[タイプ]:HTTP [ソース]:任意の場所
[タイプ]:HTTPS [ソース]:任意の場所

[タグ]:sg_lb_web(任意)

ロードバランサーの作成

EC2サービスより[ロードバランサー]を選択して「ロードバランサーの作成」をクリックします。

“Application Load balancer”の作成ボタンをクリックします。
通常、http及びhttpsを使用するときは”Application Load balancer”を使用します。

【ロードバランサーの設定】
[名前]:test-web-lb(任意)
[リスナー]:httpsを追加
[VPC]:ロードバランサーを配置するVPC
[アベイラビリティーゾーン]:WEBサーバーがある異なる2つのアベイラビリティーを選択して、パブリックサブネット1とパブリックサブネット2を選択

【セキュリティ設定の構成】
[証明書タイプ]:”ACMから証明書を選択する”を選択
[証明書の名前]:ACMで作成した証明書を選択

【セキュリティーグループの設定】
先ほど登録したセキュリティーグループ(sg_lb_web)を選択します。

【ルーティングの設定】
[ターゲットグループ]:”新しいターゲットグループ”を選択
[名前]:grp-test-web(任意)
[ヘルスチェック パス]:/wp-includes/images/blank.gif
※本番ではデータベースの値を表示するページを指定するのがよいと思います。

【ターゲットの登録】
インスタンスを選択して「登録済みに追加」ボタンをクリックします。

test_web_1とtest_web_2を選択しました。

作成後、しばらくすると[ターゲットグループ]の画面で登録したインスタンスが全て”healthy”と表示された事を確認します。

ドメインとロードバランサーの関連付け

ドメインへのトラフックがロードバランサーにルーティングされるようにRoute53を設定します。

Route53サービスより、[ホストゾーン]で対象のドメイン名をクリックします。

「レコードを作成」ボタンをクリックします。

[レコード名]:www
[エイリアス]:有効
[トラフィックのルーティング先]:Application Load BalancerとClassic Load Balancerへのエイリアス、リージョンとロードバランサーを選択

ドメイン名でブラウザからアクセスできることを確認します。
アクセスできない時はDNSが伝達中ですのでしばらく時間をおいて再度実行してください。

追加の設定

WordPressのドメイン設定

WordPressの管理画面の[設定]ー[一般]から

[WordPressアドレス(URL)]:http://www.afurosan.net(取得したドメインを入力)
[サイトアドレス(URL)]:http://www.afurosan.net(取得したドメインを入力)

と変更しました。

WordPressのSSL対応

ロードバランサーにhttpsで接続された時にWordPressのHTTPSをオンにします。

WEBサーバーにSSHで接続して、/var/www/html/wp-config.phpファイルの先頭の”<?php”の次の行に下記をコピーして保存します。

2台のWEBサーバーそれぞれ設定してください。

if($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') {
$_SERVER['HTTPS'] = 'on';
}
httpsへのリダイレクト設定

ロードバランサーでhttpのリクエストがあった時にhttpsへリダイレクトする設定を行います。

詳細は下記のリンクを参照ください。

確認

ロードバランサーの確認

それではロードバランサーが正しく動作しているか確認していきます。

EC2サービスの[ロードバランシング]-[ターゲット]からターゲットグループを選択します。

“Monitorring”タブよりUnhealthy Hostsが0に、Healthy Hostsが2となっている事が確認できます。

この状態でブラウザでドメインにアクセスすると、Server1とServer2のページが交互に表示されます。

つぎにServer1にSSH接続して下記コマンドを実行してhttpdサービスを停止します。

 sudo systemctl stop httpd.service

しばらくすると、Unhealthy Hostsが1(Healthy Hostsが1)となり、ブラウザーからはServer2にのみ接続されるようになりました。

デフォルトではヘルスチェックのInterval30秒で2回Unhealthyと判定されればUnhealthyステータスへと判定されます。

また、EC2インスタンスの停止ではHealthy Hostsは減りますが、Unhealthy Hostsは増えません。

RDSの確認

データベースがフェイルオーバーできるか確認していきます。

RDSサービスの[データーベース]よりインスタンスを選択して[フェイルオーバー]を選択します。

今回は15秒程度でフェイルオーバーできました。公式サイトによると60秒~120秒だそうです。

ブラウザでもWordPressの画面が正常に表示された事が確認できました。

また、管理コンソールでも”読み込み”と”書き込み”が入れ替わっている事が確認できました。

次回

次回はリソース監視を設定していきます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です