RDS hardware maintenance scheduled イベントに対応する方法

記事タイトルとURLをコピーする

SRE2課 佐竹です。
RDS のハードウェアメンテナンスイベントに対応する方法を記載します。

はじめに

RDS DB.Instance では EC2 Instance と同様にハードウェアメンテナンスが行われる場合があります。このメンテナンスイベントは、メンテナンス対象となったハイパーバイザー(ハードウェア)上で動作する各インスタンスを利用中の各ユーザに通知が行われます。この通知が届いたということは、近日中に対象のインスタンスにダウンタイムが発生することがわかります。
イベントの通知に関しては、以下のブログをご参考ください。

blog.serverworks.co.jp

EC2 Instance の場合

RDS と比較するために、EC2 のハードウェアメンテナンスの対応方法について先に記載します。以下、公式のナレッジセンターにまとまった情報がありますので紹介します。

EC2 の予定されたメンテナンスイベント中はどのようなことが起き、また、どのような予防的なアクションを実行できますか ?
https://aws.amazon.com/jp/premiumsupport/knowledge-center/ec2-scheduled-maintenance-action/

推奨される対応方法は以下の通り「停止⇒起動」となります。

インスタンスの停止と起動
インスタンスにルートデバイスとして Amazon Elastic Block Store (Amazon EBS) ボリュームがある場合は、インスタンスを停止および起動することで、メンテナンスを完了します。インスタンスを停止および起動すると、基盤となる新しいホストに移行します。

この「対象インスタンスの停止⇒起動」を予定されているスケジュールより前に実行することで、事前に回避が可能になります。事前に回避するメリットですが、以下の通りです。
ハードウェアメンテナンスは「ハードウェアの故障が近日中に発生する予兆」を検知して行われるものも存在しています。このような場合に「AWSがスケジュールを設定した予定よりも早い段階でハードウェアが故障してしまう」ことで「意図しないタイミングでのインスタンス再起動」が行われてしまう場合があります。そのため、できる限り早い段階で「対象インスタンスの停止⇒起動」を実行し、ハードウェアメンテナンスをクリアすることが安定運用におけるメリットとなります。

RDS DB.Instance の場合

先に、RDS のメンテナンスに関しての情報を整理するため、公式のナレッジセンターを紹介します。

必要とされる Amazon RDS メンテナンス中のダウンタイムを最小限に抑える方法を教えてください。
https://aws.amazon.com/jp/premiumsupport/knowledge-center/rds-required-maintenance/

この中に「AWS はハードウェア、オペレーティングシステム (OS)、あるいは DB インスタンスまたは DB クラスターのデータベースエンジンバージョンに対してメンテナンスを実行する場合があります。」と記載されています。今回は、この中のハードウェアメンテナンスについて記載しています。

RDS hardware maintenance scheduled イベント通知の詳細

以下が実際に Personal Health Dashboard 上に通知されたハードウェアメンテナンスイベントの内容本文となります。

We are contacting you to inform you that one or more of your Amazon RDS DB instances listed in the 'Affected resources' tab are scheduled to receive maintenance on the underlying hardware between 2020-08-18 07:00 UTC (Tuesday) and 2020-08-25 06:59 UTC (Tuesday). 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.

Single-AZ deployments will be unavailable for a few minutes in the instance's maintenance window.

Multi-AZ deployments may be unavailable for the amount of time it takes a failover to complete, usually about 60 seconds, also in the instance's maintenance window. For more details refer to the email sent to your system account.

Please review the maintenance window or take appropriate opt-in action for each affected DB instance to minimize the impact of this maintenance on your application.

対応方法1 opt-in action

この方法が、RDS のハードウェアメンテナンスの最も基本的な対応方法になります。

f:id:swx-satake:20200805142306j:plain

画像の通りハードウェアメンテナンス対象になったRDSでは、「メンテナンスとバックアップ」のタブに「保留中のメンテナンス」として「hardware-maintenance」が追加されます。これに対して以下の2つの選択が可能です。

  1. 今すぐ適用
  2. 次のメンテナンスウィンドウで適用

「今すぐ適用」を行うと、その場で適用がされ DB.Instance が再起動されます。
「次のメンテナンスウィンドウで適用」とすると、次回のメンテナンスウィンドウの時間枠で適用されます。ただし「RDS を停止すると保留中のアクションが削除される」点には注意してください。つまり、「次のメンテナンスウィンドウで適用」を実行した場合は、そのメンテナンスウィンドウの時間になるまでは、停止しないようにしてください。 詳しくは以下のブログの「保留中のアクションが削除される」を参考ください。

blog.serverworks.co.jp

対応方法2 停止⇒起動

AWSサポートに裏どりをしたところ、RDS DB.Instance でも EC2 Instance と同様に「停止⇒起動」を行うことで同様の効果が得られます。なお「再起動」では効果が得られませんため、ご注意ください。
このため、土日や夜間に「停止⇒起動」を行っている DB.Instance ではそのタイミングで本ハードウェアメンテナンスがクリアされることになります。

対応方法3 Reboot with Failover

「再起動」では効果が得られませんと記載しましたが、 Multi-AZ 構成の場合は Reboot with Failover を行うことでメンテナンスをクリアすることも可能です。これは、フェイルオーバーすることでスタンバイ状態の DB.Instance とマスターが入れ替わるためとなります。なおフェイルオーバーを行うと動作している Availability Zone が入れ替わることになります。その点を懸念される場合は、「opt-in」方式を検討してください。

まとめ

f:id:swx-satake:20200805152038p:plain:w200

本ブログでは RDS hardware maintenance scheduled イベントに対応する方法について整理しました。具体的な対応方法は以下の通りです。

  1. opt-in action で「今すぐ適用」を行う。もしくは「次のメンテナンスウィンドウで適用」を行う(ただし「停止」アクションに注意)
  2. 停止⇒起動 を行う
  3. Multi-AZ 構成で Reboot with Failover を行う

個人的には RDS でも「停止⇒起動」でハードウェアメンテナンスがクリアされることは意外でした。
Cloud Automator では RDS の停止と起動のアクションに対応してますので、これであれば Cloud Automator を利用しての対応も可能ですね。

以上になります。

佐竹 陽一 (Yoichi Satake) 記事一覧はコチラ

SRE2課所属。AWS資格12冠。2010年1月からAWSを利用してきました。
AWSのコスト削減、最適化を得意としています。