40 代おっさん 冗長性のあるブログを構築してみた　③

## 本記事について

本記事は AWS 初学者の私が学習していく中でわからない単語や概要をなるべくわかりやすい様にまとめたものです。
もし誤りなどありましたらコメントにてお知らせいただけるとありがたいです。

前々回の記事
<https://qiita.com/kou1121/items/1e2660087e09f0070a6d>

前回の記事
<https://qiita.com/kou1121/items/aefb40e32dffb10fe678>

## 最終作成図

![RDSEC2冗長性.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641940/97ae5dbd-5c07-57be-91be-4a68a0d529d2.png)

## RDSのサイトアドレスをロードバランサーのDNS名に書き換える

WebServer1　または　WebServer2にSSｈでログインしてください

rootユーザーになってcdコマンドでhtmlディレクトリに移動してください

```shell
mysql -h RDSのエンドポイント -u wordpress -p
```

パスワードを求められますのでパスワード入力してください

![MySQL画面.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641940/07bb9e14-4b2d-2c8c-08bc-84a98cf38d29.png)

上のような画面になりMySQLを動かせるようになると思います
次にワードプレスのテーブルを使用するので

```shell
USE wordpress
```

次に下のコマンドを実行すると

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

![2MySQL画面.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641940/560e6cdb-7232-a9f1-37db-c744274d7b0e.png)

httpの後ろがパブリックアドレスになっているのでこちらを変更します
次のコマンドを打ってください

```shell
UPDATE wp_options SET option_value = 'http://ロードバランサーのDSN名' WHERE option_name IN ('siteurl', 'home');
```

![3MySQL画面.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641940/17714686-3057-c5df-5511-465d1044eb30.png)

ではここまで来たらさきほどコピーしたロードバランサーのDSN名をブラウザー打ち込むとブログが閲覧できると思います。

![ブログ閲覧.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641940/7ba21346-2af9-0760-3a2a-639778ac6f9f.png)

このように見えますが下線部分（赤）のところが何度か更新ボタンをクリックするとWebServer1　または　WebServer2　に変わると思います。
これでロードバランサーで振り分けできることが確認できます

## ロードバランサーのセキュリティグループのみの通信にする

今現在はすべての80番通信が許可されている状態になっていますのでそれをロードバランサーのセキュリティグループのみに設定します

AWSマネジメントコンソールからEC2を選択
左ペインよりセキュリティグループを選択
上にあるフィルタリングにてWeb-SG-1を検索してチェック入れてください
インバウンドルールを確認すると

![インバウンド.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641940/1053234e-dc78-b843-2c32-6a94b7bb9f78.png)

今現在はHTTP通信がすべて許可されていると思います（0.0.0.0/0となっていればすべてです）
Edit inbound rulesをクリック

インバウンドルール画面に行きましたら
タイプがHTTPであるものを削除してください
ルールを追加をクリックしてHTTPを選択しCIORブロック（🔍のところ）にロードバランサーのセキュリティグループを入れてください

![インバウンド編集.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641940/d9ba3c2b-cfeb-ce8d-8e5a-ebd8cd620959.png)

これでルールを保存をクリック

出来ましたらロードバランサーのDNSでサイトが見れるか確認をしてください

### EC2をシャットダウンして障害テストをしてみる

AWSマネジメントコンソールからEC2を選択
左ペインよりインスタンスを選択
インスタンス画面よりWebServer1を停止します
そうするとWebServer2のみでブログが見れていることが確認できます。（なんども更新ボタンを押してみてください）
これで仮にWebServer1が何かしらの障害が起きてもWebServer2で見れることとなります
念のためにWebServer1を再開してみるとWebServer1とWebServer2に振り分けが出来ていると思います

## RDSも冗長化構成にしてみる

AWSマネジメントコンソールからRDSを選択
左ペインよりデータベースを選択

database-1（自分が作ったデータベース）のラジオボタンチェックして上にある変更をクリック

DB インスタンスを変更画面に行きましたら

下に行き
可用性と耐久性のところの
スタンバイインスタンスを作成するのラジオボタンチェックを入れてください
この状態で下にある続行をクリック
次の画面に行きまして
変更のスケジュールの欄がありますので
今すぐにチェックを入れてください
下にあるDBインスタンスを変更をクリック
ステータスが変更中になっているのでしばらく待ちます
利用可能になりましたら
database-1を右側にスライドするとマルチAZありになっていると思います

![マルチAZ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641940/e35ec060-f148-a06d-7275-2d77fd5216a8.png)

ではRDSがマルチAZでフェイルオーバーするか再起動をします
※フェイルオーバーとは、「予備も一緒に動かしている（ホットスタンバイ）システムにおいて、メインサーバーに障害が発生したときに自動的に予備サーバーに切り替えてくれる機能」を指します。

database-1クリックして
アクションから再起動を選択してください

次の画面に行くとフェイルオーバーで再起動しますが？の部分にチェックを入れて
下にある確認をクリック

![DBインスタンスを再起動.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641940/6af4d215-323d-5f5b-12a5-883414240329.png)

サイト見てみると変わらず見れることが確認できると思います
実際にフェイルオーバーしているか確認するには

database-1クリックしてログとイベントをクリックして
最近のイベントを確認

![最近のイベント.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641940/8936e4bf-5f4f-8028-d58d-cf8307d14b04.png)

Multi-AZ instance failover startedと書かれています（赤枠）
Google翻訳すると
マルチAZインスタンスのフェイルオーバーが開始されました（これくらい読めるようになりたい・・・）
となっています
ちなみに後ろに行くほど新しいログのようです

## 最後に

ふ～～
終わった～～
なんか色々できるようになりました＞＜
まだ不勉強な点があると思いますがこれからも頑張りたいと思います！！

またこの記事は AWS 初学者を導く体系的な動画学習サービス「AWS CloudTech」を見て作成しました。
<https://aws-cloud-tech.com/>