みなさん、こんにちは。新人のRenです。AWSからメンテナンス通知がくることってありますよね?今回はRDSのメンテナンス通知が来たときの対応について説明します。

AWSから通知が来たとき、皆さんはどうしますか?メンテナンス中でもインスタンスは利用できる?メインのAZがメンテナンスのときはすべてのシステムが止まる?など様々な疑問があると思います。そのような場合の対応について見ていきましょう。

メンテナンスイベントの通知

メンテナンス時には、下記のようなイベントスケジュールが通知されます。(ここはRDSを例にしています)

We are contacting you to inform you that one or more of your Amazon RDS DB instances are scheduled to receive maintenance on the underlying hardware between 2022-XX-XX XX:15 UTC (Wednesday) and 2022-XX-15 XX :30 UTC (Wednesday).

You can view the scheduled maintenance time and perform opt-in actions on the RDS Console, using the AWS CLI or the AWS RDS API

メンテナンス期間中の注意点

メンテナンス期間中の注意点については、下記の通りです。

・メンテナンス期間中は、シングルAZ構成のインスタンスでは数分間ご利用できません
・マルチAZ構成のインスタンスでは、該当DBインスタンスがメインでご利用いただいているAZに影響がある場合、別のAZへフェイルオーバーが行われます
・フェイルオーバーが完了するまでは、該当のDBインスタンスのご利用はできません。ご利用できない期間としては通常は約60秒です
・マルチAZ構成のインスタンスでは、該当のDBインスタンスがメインではない方のAZに影響がある場合、フェイルオーバーは行われません
※フェイルオーバーとは、稼働中のシステムで問題が生じてシステムやサーバーが停止してしまった際に、自動的に待機システムに切り替える仕組みのこと

基本的な対応(オプトイン方式)
DBのダウンタイムを最低限に抑えるため、オプトインのアクションを各インスタンスで対応するというのが最も基本的な対応になります。ハードウェアメンテナンス対象になったRDSでは、「メンテナンスとバックアップ」のタブに「保留中のメンテナンス」として「hardware-maintenance」が追加されます。そのため、まずはメンテナンスウィンドウを確認するようにしましょう。

①今すぐ適用(オプトイン)
「今すぐ適用」を行うと、その場で適用がされ DBインスタンス が再起動されます。

②次のメンテナンスウィンドウで適用
「次のメンテナンスウィンドウで適用」とすると、次回のメンテナンスウィンドウの時間枠で適用されます。

③その他
マルチAZ構成の場合は、フェイルオーバーすることでスタンバイ状態の DB.Instance と マスターが入れ替わります。なお、フェイルオーバーを行うと動作している Availability Zone が入れ替わることになります。 その点を懸念される場合は、①今すぐ適用のオプトイン方式を推奨しています。

停止→起動

RDS のDBインスタンス でも EC2インスタンスと同様に「停止→起動」を行うことで同様の効果が得られます。なお「再起動」では効果が得られないので注意が必要です。このため、土日や夜間にこれを行っているDB.Instanceでは、そのタイミングでハードウェアメンテナンスがクリアされることになります。

Reboot with Failover

マルチAZ構成の場合は、Reboot with Failoverを行うことでメンテナンスをクリアすることも可能です。なぜかというと、フェイルオーバーすることでスタンバイ状態の DB.Instanceとマスターが入れ替わるためです。なおフェイルオーバーを行うと動作している Availability Zone が入れ替わることになります。その点を懸念される場合は、オプトイン方式を検討してください。

まとめ

いかかでしたでしょうか。今回は、Amazon RDSメンテナンスのときの対応についてまとめました。個人的な感想としては、想定よりも対応方法が多くあって意外でした。ぜひ参考にしてみてください!