0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【ハンズオン2】冗長性のあるブログサービスを構築する(冗長構成)

Last updated at Posted at 2021-07-24

今回の記事について

この記事はAWS初学者を導く体系的な動画学習サービス
「AWS CloudTech」の課題カリキュラムで作成しました。
https://aws-cloud-tech.com

前回の続き

前回の記事の続きになります。
前回作成した環境に構築していきますので、まずはこちらをご覧ください。

今回やる事

・もう片方のAZへAMIを使ってEC2を作成
・ELBの設置
・片方のEC2を停止してもwordpressサイトが表示されるか、ELBがちゃんと機能するか確認
・RDSのフェイルオーバーができるか確認

環境

macOS Big Sur バージョン11.2.2

構成図

hands-on2.png

もう片方のAZへAMIを使ってEC2を作成

まずAMIを作成する前に、ELBを設置してそれぞれのEC2サーバーを切り替えた時の表示を区別したいので、Web Server1, Web Server2という文字をそれぞれのEC2へ書き込む。

なので手順としては
1、既存のEC2へWeb Server 1という文字を書き込み
2、EC2のAMIを作成し、別のパブリックサブネットにEC2を作成する
3、手順1と同じように今度はWeb Server 2という文字を書き込む

1、既存のEC2へWeb Server 1という文字を書き込み

EC2へログイン

cd /var/www/html

sudo vi index.php

echo '<p>Web Server 1</p>';
(下記画像のように記入)

スクリーンショット 2021-07-23 19.00.17.png

2、EC2のAMIを作成し、別のパブリックサブネットにEC2を作成する

・一度EC2を停止

・アクション⇨イメージとテンプレート⇨イメージを作成

・イメージ名を入力し、イメージを作成

・左ペインのAMIで状態がpendingからavailableになったら、AMIを使ってEC2インスタンスを起動

・もう一つのパブリックサブネットに作成する

3、手順1と同じように今度はWeb Server 2という文字を書き込む

AMIで作成したEC 2にログインし、/var/www/html/index.php ファイルを開く

echo '<p>Web Server 2</p>';
に変更。

ELBの設置

ALBの作成

手順1 ロードバランサーの設定
・基本的な設定
名前:任意の名前
スキーム:インターネット向け
IPアドレスタイプ:Ipv4

・リスナー設定
HTTP 80

・アベイラビリティーゾーン
VPC、各ゾーンのパブリックサブネットを選択

手順2 セキュリティ設定の構成
リスナーでHTTPSの設定をしていなければ、注意画面が出るが、あとで設定できるのでここはひとまず次へ進む

手順3 セキュリティグループの設定
新規作成でLB用のSGを作りましょう。
設定はデフォルトのまま、とりあえずポート80をフルオープンでOKです。

手順4 ルーティングの設定

・ターゲットグループ
ターゲットグループの名前設定:任意の名前 
ターゲットの種類:インスタンス
プロトコル:HTTP
ポート:80
プロトコルバージョン:HTTP1

・ヘルスチェック
プロトコル:HTTP
パス:指定したファイルを作成する必要がある
例:/readme.html で設定した場合
インスタンス内の/var/www/html配下にreadme.htmlファイルを作成する必要がある(何か書き込んだファイル)

・ヘルスチェックの詳細設定
デフォルトもしくは任意の設定

手順5 ターゲットの登録

設定したパブリックサブネットのそれぞれのインスタンスを登録済みに追加する

手順6 確認

設定した項目を確認し、問題なければ作成

ターゲットグループの欄に移動し、作成したターゲットグループを選択
Targetsの部分のHealth StatusがHealthyになってればヘルスチェック完了してる。
*うまくいってなければ、パスを確認してみてください

片方のEC2を停止してもwordpressサイトが表示されるか、ELBがちゃんと機能するか確認

・RDSの中に設定されているサイトアドレスをELBのDNS名に書き換える

手順1 どちらかのウェブサーバーにログインし、RDSに接続する

mysql -h RDSのエンドポイント -u wordpress -p
⇨パスワード入力

手順2 ワードプレスのテーブルを選択

USE wordpress

手順3 現在の設定を確認

SELECT * FROM wp_options WHERE option_name IN ('siteurl', 'home');

手順4 テーブルのアドレスを変更

UPDATE wp_options SET option_value = 'http://xx.xx.xx.xx' WHERE option_name IN ('siteurl', 'home');
*xx.xx.xx.xxの部分にELBのDNS名を入力

再び手順3で書き変わっているか確認する

・DNS名をブラウザに打ち込みブログが表示されるか確認

何度か更新ボタンを押して、WebServer1, WebServer2がランダムに表示されればELBが機能している証拠

補足1:
EC2のセキュリティグループの設定でHTTPフルオープンの代わりに、ELBのセキュリティグループからの通信のみを許可する設定にする

スクリーンショット 2021-07-24 20.08.57.png

変わらず接続できればOK

補足2
試しにEC2を一台停止して、変わらずウェブサイトが表示されるか確認。
片方のインスタンスに障害が起きても、もう片方のインスタンスが接続されることが確認できればOK

RDSのフェイルオーバーができるか確認

RDSの設定を変更
マルチAZ配置欄で「スタンバイインスタンスを作成する」にチェック

次へ進む

今回はデモなので、今すぐ変更にチェックをし、変更ボタンを押す。

RDSを再起動してみる
アクション⇨再起動⇨「フェイルオーバーで再起動しますか?」にチェックを入れ再起動

フェイルオーバーされたか確認
RDSのログとイベントで「Multi-AZ instance failover completed」になってればフェイルオーバー出来たことが確認できる

次回の記事

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?