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も同様である。
野村総合研究所 クラウド基盤サービス三部 主任