share facebook facebook twitter menu hatena pocket slack

RDSのフェイルオーバーに関する注意点

鈴木 宏康

WRITTEN BY 鈴木 宏康

RDSはMulti-AZで利用していると、時々フェイルオーバーしてしまいます。

フェールオーバーした時の確認は、下記のようにAWS Management Consoleで確認することが可能です。

当然、API(DescribeEvents)でも確認することができ、APIのドキュメントを確認すると、イベントログが保存される期間は、14日間のようです。(CloudWatchと同様)

とても便利な機能なのですが、一つ注意点があります。

RDSがフェイルオーバーするということは、RDSが別ゾーンに切り替わってしまうということになります。

パフォーマンス面のことを考え、バッチ処理を行うようなEC2インスタンスとRDSをあえて同じゾーンにしていた場合は、別ゾーンになってしまうと、パフォーマンス的に良くない状態になります。

例として、大量の連続したトランザクションを処理する場合には、通信のレイテンシーが非常に大きく影響してしまうので、同一AZの場合とAZをまたいだ場合では、数字の上では1ms未満と数ms程度の小さい差ですが、最終的には差が大きく生じてしまいます。

即座に元のゾーンにフェイルバックしてもらえれば良いのですが、実際はフェイルバックすることはなく、もう一度フェイルオーバーするまでは、元のゾーンには戻らないようです。

ということなので、上記のような用途の時には、フェイルオーバーの通知が欲しいところです。

先ほど少し紹介したAPI(DescribeEvents)を定期的に実行し確認することで通知することは可能なはずです。

また、Multi-AZでフェイルオーバーした際に、必ずDNSの書き換えが発生するということなので、RDSのFQDNを解決した際に得られるAレコードを監視して、変更された場合にはフェイルオーバーした、と確認し通知することも可能です。

上記のことをNagios(のプラグイン)でチェックすると下記のようになります。
(nslookupが必要なのでbind-utilsのインストールもしています)

# yum install bind-utils
# /usr/lib/nagios/plugins/check_dns -H suzlab.xxxxxxxx.ap-northeast-1.rds.amazonaws.com -a xxx.xxx.xxx.xxx
DNS OK: 0.126 seconds response time. suzlab.xxxxxxxx.ap-northeast-1.rds.amazonaws.com returns xxx.xxx.xxx.xxx|time=0.125635s;;;0.000000
# /usr/lib/nagios/plugins/check_dns -H suzlab.xxxxxxxx.ap-northeast-1.rds.amazonaws.com -a yyy.yyy.yyy.yyy
DNS CRITICAL - expected 'yyy.yyy.yyy.yyy' but got 'xxx.xxx.xxx.xxx'

こちらの記事はなかの人(suz-lab)監修のもと掲載しています。
元記事は、こちら

鈴木 宏康

鈴木 宏康

愛知県生まれ。東京工業大学大学院修士課程修了。在学時より、ベンチャー企業でインターネットに関する業務に携わり、現在はクラウド(主にAmazon Web Services)上での開発・運用を軸とした事業の、業務の中心として活躍。

cloudpack

cloudpackは、Amazon EC2やAmazon S3をはじめとするAWSの各種プロダクトを利用する際の、導入・設計から運用保守を含んだフルマネージドのサービスを提供し、バックアップや24時間365日の監視/障害対応、技術的な問い合わせに対するサポートなどを行っております。
AWS上のインフラ構築およびAWSを活用したシステム開発など、案件のご相談はcloudpack.jpよりご連絡ください。