#実装デモ
障害を想定した試験として
①メインのEC2を手動で停止してブログが見れるか確認
②メインのRDSを停止してもブログが見れるか確認
注意
RDSのDBインスタンスを削除しないと
実装デモ終了時は9~10円/時間かかります。
RDS<アクション<削除でOK
最終スナップショットを作成すると、いつでも復旧可能になる
##準備
・同じリージョンの別AZにメインとサブそれぞれにEC2とRDSを作成。
・ELBを配置して2台のEC2にhttp通信が振り分けられる様に設定しておく。
・どちらのEC2が起動しているか見分けがつきやすいように、htmlファイルに見分けがつきやすい様に変化をつけておく
##ロードバランサー作成
EC2のダッシュボードページ<ロードバランシング<ロードバランサーを選択
ロードバランサーの作成をクリック<ALB作成をクリック
1,
ロードバランサーの設定
名前(任意),スキームはインターネット向け,IPアドレスタイプはipv4,リスナーはHTTPの80番ポートのまま,AZはVPCとAZを選択、パブリックサブネットを選択
2,セキュリティ設定の追加を選択
(※注意※)HTTPSプロトコルを使用する様警告がでますが、デモだとHTTP接続で進める
3,新しいセキュリティグループを作成するを選択、セキュリティグループ名(任意)を入力
4,ルーティングの設定<ターゲットグループ
名前(任意),ターゲットの種類をインスタンス,プロトコルをHTTPの80番ポート,プロトコルバージョンはHTTP1を選択
ヘルスチェック
HTTPの/でも良いが/readme.htmlを指定
詳細設定でEC2インスタンスのヘルスチェック間隔を設定できる
正常のしきい値を2、間隔を10秒に変更(10秒毎にヘルスチェック通信を飛ばして2回OKならそのインスタンスは正常とみなす設定になる)
5,ターゲットの登録
どのインスタンスをターゲットグループに追加するか選択できる
準備した2つのインスタンスを選択、登録済みに追加をクリック
これで2つのインスタンスに通信が振り分けられる設定になる
確認、作成をクリックし完了
↑の確認でEC2のダッシュボードページ<ロードバランシング<ターゲットグループを選択
今回作成したロードバランサーを選択、targetsを選択すると、どのWebサーバーに対してヘルスチェックの状態を確認できます。
##RDSの中に設定されているサイトアドレスをロードバランサーのDNS名に書き換える
どちらかのウェブサーバーにログインして下のコマンドでRDSに接続します
mysql -h database-1.xxxxxxxxxxxxxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com -u wordpress -p
解説
mysql -h RDSのエンドポイント) -u wordpress -p
-uでwordpressインストール時に設定したユーザー名に-pオプションをつける
実行してパスワードを入力
(※)wordpressのテーブルを使用する宣言)
USE wordpress
(※)↓テーブルの名前やオプションを表示
SELECT * FROM wp_options WHERE option_name IN ('siteurl', 'home');
(※)option_value欄がサーバーのパブリックIPアドレスと同じという点を確認しておく
UPDATE wp_options SET option_value = 'ロードバランサーのDNS名' WHERE option_name IN ('siteurl', 'home');
(※)上のSELECT文を実行後、書き変わっているか確認
<確認>
・このDNS名をブラウザに打ち込んで正常にブログが開くか
・更新を何度か繰り返してみて、区別できるように準備編でhtmlファイルの違いがみられるか
##セキュリティグループの設定変更
今の状態だと全て接続元からの80番ポートからの通信が許可されている
→ ロードバランサーからのセキュリティグループからのアクセスのみに許可するよう設定を変更する
EC2<セキュリティグループ<適切なセキュリティグループを選択<インバウンドルール<インバウンドルールを編集
↓
80番ポートの0.0.0.0/0を削除
↓
同じく80番ポートにロードバランサーで作成したセキュリティグループを選択<ルールを保存
表示に問題ないか確認
##障害テスト(EC2)
障害を想定したテストを実施するため、EC2インスタンス片方だけシャットダウンする
EC2のページ<インスタンスの状態<インスタンスを停止
<確認>
振り分けが行われず、更新しても停止していないサイトのみが表示し続けられる
##RDSも冗長化構成
Amazon RDS<データベースを選択<該当するDBを選択して変更をクリック
DBインスタンスの設定<可用性と耐久性<マルチAZ配置<スタンバイインスタンスを作成するにチェックをつける
続行→ 変更スケジューリング(デモなので今すぐ変更を選択)
##障害テスト(RDS)
先程冗長構成を選択肢たDBを選択<アクション<再起動
DBインスタンスをフェイルオーバーで再起動
<確認>
・Webサイトが正常に動作するか
・DB<ログとイベントの最近のイベントに〇〇 instance failover startedや
〇〇 instance failover completedログが残っているか
##参考
この記事はAWS初学者を導く体系的な動画学習サービス
「AWS CloudTech」の課題カリキュラムで作成しました
https://aws-cloud-tech.com