・前提
インフラ周りを触ってきたがDBはほとんど触ってこなかったのでハンズオンする
構成・検証内容としてEC2(AZ1に配置し、DBを操作できるロールをアタッチ)からプライマリAurora(AZ1)とレプリカAurora(AZ2)に接続してコマンドでフェイルオーバーを実行する、そしてその後レプリカがスケールするのかを検証し、最後にプライマリのコピーを取得する
・サブネットグループを作成
EC2の作成は何回も記事に記述しているので例によって割愛、ただし、SGを作成しインバウンドでTCP、ポート番号3306(MySQLやMariaDBなどDBMSが外部から接続を待ち受けるポート)、ソースにEC2のSGを追加
サブネットグループ(DBを配置するために一束にしたサブネット)を作成するためにRDSのサービスページサイドバーからサブネットグループを選択
その後束ねるAZ・サブネットを以下のように選択

・RDSのAuroraを作成
RDSサービスのサイドバーから[データベース]を選択
DBの作成から設定を選択していく(今回はAuroraのMySQLを選択する)
他に特筆すべき設定として
- マルチAZを有効にする
- EC2コンピューティングリソースに接続
- DBサブネットグループに上記作成したものを選択
- パブリックアクセスはなし
- VPCのSGを上記作成したインバウンドルールを適用
設定したら作成!
※インスタンスの作成に時間がかかり不安になった。結果10分ほどかかったが落ち着いて待つ
・EC2側に設定
内容としてDB接続のためのクライアントツールをインストールする
以下を入力
sudo dnf update -y #EC2インスタンスのパッケージ(ソフト)を最新化
sudo dnf install mariadb105 #EC2からDBに接続するソフトのインストール
・EC2からRDSへ接続
…したかったのですが、自動生成したパスワードを使用して以下の画面から接続するはずがそれを消してしまったのでパスワード変更しました…
以下その手順

右上の[変更]画面から再度パスワードの自動生成にチェックを入れて進むだけ。遷移した画面に新しいパスワードが表示されるので控える
今回ライターインスタンスに接続するのでライターインスタンスにチェックを入れて下部に表示されるタブから[接続とセキュリティ]を選択してエンドポイント(接続するためのDNSのドメインのようなもの)とセキュリティグループに上記設定したSGが設定されていることを確認
以下を入力
mysql -h <endpoint> -P 3306 -u admin -p
その後要求されるパスワードについて、先ほど控えたパスワードを入力

ログイン成功!
・EC2からリードレプリカインスタンスに接続
上記ライターインスタンスへの接続のエンドポイントを変更するだけ

こちらもログイン成功!
※この際、リードレプリカは読み込み専用なのでSELECTコマンドなどで編集しようとしてもエラーが表示される
・EC2インスタンスにDB操作するロールをアタッチする
既にロールをアタッチする段取りは過去の記事で確認済みなので、簡単に記述
IAMの[ロール]をサイドバーから選択して[ユースケース]にEC2を入力して選択したのち[AmazonRDSFullAccess]をチェック。その後ロール名を命名して作成したのちEC2にアタッチ
※RDSインスタンスのIP確認方法はnslookup <Endpoint>であり、これによってRDSインスタンスのプライベートIPを確認できる

確認完了!
・オートスケーリングを確認
RDSのリージョン別クラスタをチェックして下部の[ログとイベント]から[Auto Scalingポリシーの追加]を選択
ターゲットメトリクスを選択してスケールするトリガーを設定
まず、フェイルオーバー前の状態を確認

その後EC2から以下のコマンドを入力
aws rds failover-db-cluster --db-cluster-identifier <DB名>

その結果、リージョン別クラスタのステータスがフェイルオーバーになり、リーダーインスタンスとライターインスタンスが入れ替わっている
・DBクラスタのコピーを取得

RDS右上の変更からクローンの作成を選択する