Amazon Aurora MySQL 互換エディションクラスターでフェイルオーバーが発生したときの、アプリケーションのダウンタイムと接続エラーを最小限に抑えたいと考えています。
解決策
Aurora MySQL 互換クラスターでフェイルオーバーが発生すると、クラスターで一時的な接続の中断やダウンタイムによるエラーが発生する可能性があります。設定を正しく構成しなかった場合、アプリケーションのダウンタイムが長くなります。フェイルオーバー中のアプリケーションのダウンタイムを最小限に抑えるには、次のアクションを実行してください。
クラスターエンドポイントとリーダーエンドポイントを使用する
クラスターエンドポイントとリーダーエンドポイントに接続します。個々の DB インスタンスのエンドポイントには接続しないのがベストプラクティスです。クラスターエンドポイントとリーダーエンドポイントは、フェイルオーバー後のインスタンスロールの変更に自動的に従います。クラスターエンドポイントを使用すると、現在のライター DB インスタンスを自動的に参照して読み取りおよび書き込み操作を行います。リーダーエンドポイントを使用すると、使用できるリーダー DB インスタンスを自動的に参照して読み取り操作を行います。
DNS TTL 値を低く設定する
アプリケーションが Amazon Aurora DB インスタンスの DNS エンドポイントをキャッシュする場合、有効期限 (TTL) の値を 30 秒未満に設定します。TTL 値を低く設定することで、基盤となる IP アドレスが変更される可能性がある場合、フェイルオーバー後に古い DNS データが長時間キャッシュされないようにできます。TTL 値を高く設定しすぎると、アプリケーションがフェイルオーバー後に古い IP アドレスを使用する可能性があり、接続エラーが長引く可能性があります。
AWS JDBC ドライバーを使用する
AWS Java Database Connectivity (JDBC) ドライバーを使用すると、DNS の伝播に頼らずに接続を新しいライターまたはリーダーの DB インスタンスに切り替えることができます。ドライバーはすぐに接続を復元できます。詳細については、GitHub のウェブサイトの「AWS JDBC Driver」(AWS JDBC ドライバー) を参照してください。
Amazon RDS Proxy を使用する
Amazon RDS Proxy を使用して DB インスタンスに直接接続します。プロキシは自動的にトラフィックを新しいライター DB インスタンスにルーティングし、フェイルオーバー中のアプリケーションのダウンタイムを最小限に抑えます。プロキシは DNS キャッシュの問題を回避し、フェイルオーバー中も既存の接続を維持します。Amazon RDS Proxy は、DNS に依存せずにクラスターメタデータに基づいて DB インスタンスのロールを追跡します。プロキシは接続を迅速に復元するのに役立ち、DNS の伝播を待つよりも速い場合があります。
関連情報
Introducing the Advanced JDBC Wrapper Driver for Amazon Aurora (Amazon Aurora 向けの Advanced JDBC Wrapper ドライバーのご紹介)
Improve application availability on Amazon Aurora (Amazon Aurora でアプリケーションの可用性を向上させる)