無料枠のRDSをマルチAZ構成化させ、手動でフェイルオーバーする

# はじめに
※本記事は、AWS初心者がマルチAZ構成の練習した際の情報をまとめたものです。

無料枠のRDSでは初期設定でマルチAZ構成のオプションが使えないため、「無料枠でつくったRDSでは無理か……」と思っていましたが、実は後からの設定できるようなのでマルチAZ構成化させてみます。
そして、手動でフェイルオーバーを起こして切り替わっているか確認してみます。

そこまで時間のかからない作業内容ですが、変更作業に数分以上待ち時間が発生します。
筆者は別の練習も並行したため数時間稼働しましたが0.19＄しか掛かっていません。

# 注意
- 低額ですが、**料金は発生**します。無料枠はシングルAZのRDSが対象だからです。
- 料金は1時間辺り**「0.052USD」**（db.t3.micro（東京・MariaDB））だと思われます。
※2020年11月23日時点

- 練習後、放置すると料金が加算されていきますので、**ちゃんと消しましょう。**
- 料金に関する部分はAWS公式でご確認して下さい。
※[Amazon RDS for MariaDB の料金](https://aws.amazon.com/jp/rds/mariadb/pricing/)
※流石に料金はご自身でご確認した方が良いと思います。

# 目的
- 無料枠で作ったRDSをマルチAZ構成化させたい。
- RDSのフェイルオーバーを体験・練習したい。
- 低料金でRDSのマルチAZの練習がしたい。

# 全体の流れ
1.サブネットグループの作成
2.無料枠RDSの作成
3.マルチAZ化のオプションを適用化させる
4.RDSを再起動させ、手動のフェイルオーバーを実行

# 1.サブネットグループの作成
「サブネットグループ」はマルチAZの際にRDSが配置されうるサブネットをグループ化させた物です。
RDSをマルチAZ化する場合はこのグループの作成が必要になります。
予め使用するVPC・AZ毎のサブネットとグループ用のセキュリティグループは作成しておきましょう。

### サブネットグループの作成設定
RDSのコンソールメニューを開き、その中のサブネットグループを選択します。
<img width="500"  src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/901230/083f2288-463d-d9b8-ec70-3fe5e25c28c8.jpeg">
そして「DBサブネットグループを作成」を押します。
名前・使用するVPC・AZ（アベイラリティゾーン）・サブネットを入力・選択します。
<img width="400"  src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/901230/e4baa938-f7bb-f3e6-32da-821d6c969591.jpeg">
作成を押せばサブネットグループが出来ているはずです。

# 2.無料枠RDSの作成
※既に無料枠でRDSを作っている方は省略して下さい。
### RDSの作成###
特に弄る事なく無料枠のRDSを作成します。(DBはMariaDB）
<img width="300"  src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/901230/7d9f8e7f-1b3d-7cb1-bd29-5d7df65a2d95.jpeg">
無料枠の場合、初期作成の段階ではマルチAZのオプションは押せなくなっています。
マルチAZは無料枠ではないから押せなくしているのでしょう。
<img width="600"  src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/901230/6bf5d7c9-82c3-55a3-e7fc-be142e0db188.jpeg">
無料枠で作成した後、オプションを変更させていきます。


# 3.マルチAZ化のオプションを適用化させる　
### データベースの設定変更###
作成したRDSの詳細画面から変更ボタンを押して、DBインスタンスの変更画面に移行します。
先程押せなかった、マルチAZ配置が設定できるようになっています。
「スタンバイインスタンスを作成する」にチェックを入れます。
<img width="600"  src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/901230/5686a0c2-11f7-5cd5-68ca-bbf16cfe1fe8.jpeg">
先程、設定したサブネットグループ等を選択し、他の部分はそのままで変更をかけます。
次の画面で「変更を適用するタイミング」は「すぐに適用」を設定しましょう。

### 待機 ###
数分から十数分位、待ちましょう。
変更がかかるのにそれくらいの時間がかかります。

### 確認

<img width="600"  src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/901230/2b8725dd-961d-df82-bfe6-60f7ff0548f7.jpeg">
「マルチAZあり」と表記されているので変更完了です。
無料枠用のRDSをマルチAZ化させる事が出来ました。


# 4 .RDSを再起動させ、手動のフェイルオーバーを実行
ここからはフェイルオーバーの練習を行います。
RDSを再起動させる際にフェイルオーバー、別AZのスタンバイRDSに切り替わります。
### 元の状態を確認
フェイルオーバーの前に、現在のRDSがどのAZの物か確認しましょう。
<img width="600"  src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/901230/5630b910-e153-5523-a792-74d192411c38.jpeg">
現在のAZは「ap-northeast-1c」である事がわかりました。

### 再起動 ###
データベースを選択し、アクション→再起動を押します。
<img width="600"  src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/901230/4274d6a5-8d29-978d-cd47-1bd8996dcaa7.jpeg">
「フェイルオーバーで再起動しますか？」にチェックを入れて確認を押します。
<img width="600"  src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/901230/1c267f98-54cb-150e-010d-a93089544d5e.jpeg">



### 変更されたか確認

再起動した後、フェイルオーバーはされていますがコンソールには即座に反映されません。
コンソールの反映には数分待ちましょう。

待っている間、データーベースの詳細情報にあるログとイベントでフェイルオーバーが行われた事は表示されているので確認してみましょう。
<img width="600"  src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/901230/ed7fd574-464f-070c-acf6-5255ae702469.jpeg">

### フェイルオーバーの確認
もう一度確認してましょう
<img width="600"  src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/901230/d1fa3016-d2a0-6aa9-dc11-afbe937b422c.jpeg">
AZは「ap-northeast-1a」になっていました。
無事、別AZ上のRDSにフェイルオーバーしている事がわかります。


# 参考URL
- [今夜は社内AWSもくもく会２ - RDSを無料枠でマルチAZ化](https://tetsufuru.hatenablog.com/entry/2019/08/13/231927)
- [マルチAZ構成のRDS(MySQL)を強制フェイルバックさせてみた](https://dev.classmethod.jp/articles/multiaz-rds-failback/#toc-4)