気がつけば外は蝉がミンミン泣いて、作業に没頭するあまり季節に取り残されてしまった yuku_tasです。
冷房に負けない健康的な体を作っていきたいものですね!
プログラマーの皆様は昨今いかがお過ごしでしょうか。
概要
AWS RDSをシングルAZ => マルチAZ => シングルAZと変更し、それぞれのダウンタイムを確認する。
調査したくなった経緯
AWS RDSを業務で利用する必要が生じまして、その際にシングルAZとマルチAZを切り替える必要が出ました。公式の表現は日本語としてわかりにくいのでちょっと要約をしてみます。(間違っていたらご指摘を下されば嬉しいです)
「マルチAZ」とは「シングルAZ」と違い
- 同じ2台を同時にスタンバイ
- 実際に使うのは1台(2台分のスペックにはならない)
- AWSのコンソール画面からの見え方も1台に見える
- 料金は 2倍
- 障害が生じたり、メンテナンスの時にダウンタイムを限りなく少なく( ~60秒 )でき、高可用性(高い稼働率)を実現できる
という内容となります。
間違いなく便利だけれどコストの面も含めてデメリットもあるよという構成ですね。
気になるダウンタイム
その中で、公式ドキュメントで以下の記述を見つけ、とても気になったので掘り下げたくなりました。
データの損失と手動による介入なしで、60 秒という速さで完了する自動データベースフェイルオーバーにより、アプリケーションの高可用性をサポートします。
これは要するに、マルチAZにしても 結局ダウンは生じるじゃん という内容になります... ではどのくらいダウンするのか?を調べたくなった。これが今回の調査の動機になります。
※ 注釈
※ 短時間での立ち上げ・終了を行えば費用はあまりかかりませんが、終了を忘れた場合は従量課金が生じます。本手順の実行にあたってはご自身の責任で行っていただくよう、よろしくお願いいたします。
※ 上記の公式ドキュメントにもある通り、リードレプリカ(「読み取り可能なスタンバイ」)を設定するとダウンタイムはさらに短く(~35秒) できるようですが 今回は考慮から外します。
テスト用RDSの立ち上げ
早速AWS RDSのコンソールから立ち上げを行ってまいりましょう。
AWS RDSの最小インスタンスであり、無料利用枠が2024年7月現在に用意されている db.t3.micro を、直接ローカルから接続できるようにするため、パブリックアクセス をつけて立ち上げます。
(※ パブリックアクセスは 商用環境ではセキュリティ面で大いに問題があるので利用は控えましょう! AWSのセキュリティ面での抜け漏れを警告してくれるサービス、 Security Hubでもこの点で警告が出ます。)
MySQL (RDSで初期選択される現在の安定版MySQL 8.0.35) を使います。以下のように選択していきます。
開発/テスト => 単一のDBインスタンス を必ず選択してください。これが「シングルAZ」を指します。
AWS Secret Managerで管理 から セルフマネージド を選択。(有料のため。 商用利用ではSecret Managerでパスワードを管理することをお勧め します。)
インスタンスタイプやストレージの割り当てはそのまま。変更なしです。
- 新しいVPCの作成
- 新しいDBサブネットグループの作成
- VPCセキュリティグループは「新規作成」
を選択していきます。
パブリックアクセスは 「あり」 を選択。先述の通り、テスト用にPCから直接接続をできるようにするためです。
あとはデフォルトのまま「データベースを作成」を押して立ち上げましょう。
末尾で価格のアラートが出ます。月単位での金額なのでこんなにいかないはず。
立ち上げ待ちとなるのでしばらく待ちましょう。立ち上げたインスタンス名をクリックするとローカルから接続のための情報が確認できます。
TablePlusでローカルから接続する設定を実施
- エンドポイント名
- 先ほど設定したマスターユーザー名 (上記例では「admin」)
- 先ほど設定したパスワード
- ポート番号
などを使ってローカルからの接続設定を行います。本記事の解説範囲を超えてしまうため、この点は省略させていただきます。
先ほどのRDSが立ち上がったら、「エンドポイント名」「ポート番号」を控えましょう
セキュリティグループでIPを開ける
先ほど「パブリックアクセス」を有効にしたものの、実はこのままでは、RDSへの直接の接続はできません。
今回のテスト用にセキュリティグループをあなたのPCのIPに限って解放します。
IPはこちらで確認が可能です。
RDSの「VPCセキュリティグループ」のリンクから移動し、次の画面で セキュリティID をクリック
セキュリティグループ画面に移動します。この時点で、1行だけ設定が追加されていると思いますがこの時点では動きません。「インバウンドルールの編集」からIPを追加します。
このようにIPを1つだけ追加し、特別に疎通するようにします。
** ※ この設定は商用環境では一般的でないのでそのまま利用しないようにご注意ください! **
TablePlusから接続を確認
特に接続のエラーやタイムアウトが表示されず、まっさらなデータベースが表示されたら TablePlusからの接続成功です!
この後のテスト手順
- シングルAZ => マルチAZに変更
- マルチAZ => シングルAZに変更
その中で、
- TablePlusで常時接続を確認
- かつ、RDSのログ画面からそれぞれの作業にダウンタイムとしてどのくらいが生じたか
を確認していきます。
ただ、本ページが少し長くなってしまったので、記事を分割し次回で完結させたいと思います。もうしばらくお付き合いをいただけますよう、よろしくお願いいたします。
弊社ではAWSを中心にクラウドインフラの構築・保守運営業務も行っておりますのでお困りの方は是非お声がけください。
参考URL: モルドスプーン株式会社
この記事が何かのお役に立てれば幸いです。
最後までお読みいただきありがとうございました!