Amazon Web Services(AWS)のリレーショナルデータベースサービス「Amazon Aurora」のデータベースクラスターでは、1台以上のレプリカがある場合、プライマリーインスタンスに障害が発生すると、自動的にレプリカのうち優先度の高い1台がプライマリーインスタンスに昇格する。

 このとき、リクエストが新しいプライマリーインスタンスに接続されるように、自動でクラスターエンドポイントのDNS(Domain Name System)レコードが更新される。これによって、フェイルオーバーを実現する。通常は、障害検知からフェイルオーバーは1分以内に完了する。

 しかし、アプリケーション側でDNSのTTL(Time to live)を無視し、DNSレコードをキャッシュする設定になっている場合、このフェイルオーバーに追従できず、障害インスタンスにアクセスし続けてしまう場合がある。

 なおレプリカがない場合は、障害発生時にプライマリーインスタンスが再作成されるため、10分程度の時間が掛かる。

つまずき対策

 DNSレコード更新によるフェイルオーバーに追従するには、アプリケーションやDNSキャッシュサーバーでDNSレコードをキャッシュしないこと、またはTTLを短くすることが必要だ。これはAmazon Auroraだけでなく、Amazon RDS(Relational Database Service)、ELB(Elastic Load Balancing)、Amazon Redshiftも同様である。

瀬戸島 敏宏
野村総合研究所 クラウド基盤サービス三部 主任
大手企業を中心に、AWSをはじめとしたパブリッククラウド導入のコンサルティング、設計、構築を担当。特に金融機関のパブリッククラウド導入支援を中心に活動。以前はNRIクラウドの初期の立上げを担当。その他NRIハッカソンの企画運営など、オープンイノベーションに関する取り組みにも従事。共著書に『Amazon Web Services クラウドデザインパターン設計ガイド』(日経BP社)がある。