[アップデート] RDS マルチAZ配置で「フェールオーバー時の”理由”」がイベントログで確認できるようになりました!

原因がコンピューティングなのか、ネットワークやストレージなのか、メンテナンスなのか、他理由なのかが特定しやすくなったぞ
2021.02.28

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

ちゃだいん(@chazuke4649)です。

少し前のアップデートですが、
RDS マルチAZ配置で「自動フェールオーバー時の"理由"」がイベントログで確認できるようになりました!

Amazon RDS がマルチ AZ 配置用の新しいイベントを発行

どういうこと?

RDSはマルチAZを有効にしていれば、DBインスタンスのダウン、メンテナンス、AZ障害などでフェールオーバーが自動で実行されます。
ただ、その際RDSイベントとして「フェイルオーバーが行われたこと」は確認できましたが、「フェイルオーバーの理由」はイベント項目としてありませんでした。

今回のアップデートで「なぜフェイルオーバーが行われたか」をRDSイベントで確認できるようにありました。

フェイルオーバーの理由

現時点で以下のようなイベントログを確認できます。

フェイルオーバーの理由 説明
The operating system underlying the RDS database instance is being patched in an offline operation. OSパッチまたはセキュリティアップデートのメンテナンスウィンドウ中にフェイルオーバーがトリガーされました。
The primary host of the RDS Multi-AZ instance is unhealthy. マルチAZデプロイメントは、障害のあるプライマリDBインスタンスを検出し、フェイルオーバーしました。
The primary host of the RDS Multi-AZ instance is unreachable due to loss of network connectivity. RDSモニタリングは、プライマリDBインスタンスへのネットワーク到達可能性障害を検出し、フェイルオーバーをトリガーしました。
The RDS instance was modified by customer. RDS DBインスタンスの変更により、フェイルオーバーがトリガーされました。
The RDS Multi-AZ primary instance is busy and unresponsive. プライマリDBインスタンスが応答しません。
The storage volume underlying the primary host of the RDS Multi-AZ instance experienced a failure. マルチAZデプロイメントは、プライマリDBインスタンスでストレージの問題を検出し、フェイルオーバーしました。
The user requested a failover of the DB instance. DBインスタンスを再起動し、フェイルオーバーを使用して再起動を選択しました。

High availability (Multi-AZ) for Amazon RDS - Amazon Relational Database Service
※現時点では日本語版には未反映であるため、オリジナル(英語)のドキュメントを参照ください。

やってみた

実際に新しいイベントログが表示されるかどうか試してみます。

前提として、すでにRDSインスタンスが起動しており、以下の通りマルチAZは有効になっている状態です。

1.RDSを再起動する

RDSは再起動を実行する際に、フェイルオーバーを行うことができます。今回はこの方法でフェイルオーバーを発生させてみます。

DB インスタンスの再起動 - Amazon Relational Database Service

方法はとても簡単で、RDSコンソールから、ActionでRebootを選択し、Reboot With Failoverにチェックをつけるだけです。

上記によって、フェイルオーバーが実行されました。

2.イベントログを確認する

一定時間待つと、ステータスが[Available]に戻ったので、再起動とフェイルオーバーが完了したことがわかります。

ではイベントログを確認してみます。

RDSコンソール > Databases > 対象のRDSインスタンスを選択 > Logs&events > Recent events を確認します。

すると以下の通り、関連するイベントログが表示されていました。

今回は確かに手動で再起動を行いその際にフェイルオーバーが行われたので The user requested a failover of the DB instance.のイベントが表示されていました。

確認は以上です。

合わせて読みたい記事

以下エントリでは、DBインスタンスのフェイルオーバー原因を特定する方法が網羅的にまとめられています。今回のアップデートはそれらの選択肢の1つに追加されます。

RDSイベントサブスクリプションは、RDSで発生したイベントをSNSを経由してメール通知できる機能です。今回のフェイルオーバーの理由もこれによってメール通知が可能となります。

RDSのモニタリングについて網羅的にまとめてあるエントリです。

終わりに

フェイルオーバー理由をイベントログとして簡単に受け取ることができるようになりました。ぜひ一度お試しください。

それではこの辺で。ちゃだいん(@chazuke4649)でした。