SAA-C03弾力性に優れたアーキテクチャの設計MEDIUM単一選択

ある企業が、AWS で Web アプリケーションを運用しており、ALB → EC2 Auto Scaling → RDS Multi-AZ の構成で高可用性を実現している。RDS のフェイルオーバーが発生した際に、アプリケーションがデータベース接続エラーとなり、フェイルオーバー完了後も接続が復旧しない問題が発生している。最も適切な対処方法はどれか。

  1. A. RDS のエンドポイント DNS TTL を 0 に設定してフェイルオーバーを高速化する。
  2. B. RDS のフェイルオーバー後に EC2 インスタンスを手動で再起動する。
  3. C. アプリケーションのデータベース接続にコネクションプールのフェイルオーバー設定(接続エラー時の自動再接続・リトライロジック)を実装するか、Amazon RDS Proxy を使って RDS Proxy がエンドポイントの透過的な切り替えを管理する。
  4. D. RDS Multi-AZ を無効化してフェイルオーバー自体を防止する。
解答と解説を見る

正解: C

RDS Multi-AZ のフェイルオーバーは DNS エンドポイントが新しいプライマリを指すように変更される仕組みである。アプリケーションが古い接続(DNS キャッシュや既存コネクション)を持ち続けていると、フェイルオーバー後に接続が維持されない。Amazon RDS Proxy を使うと、RDS のフェイルオーバーが発生しても RDS Proxy のエンドポイントは変わらず、Proxy が新しいプライマリへの接続を透過的に管理する。アプリケーション側の再接続ロジックが不要になる。選択肢Bの手動再起動は自動化されておらず、応答時間も遅くなる。選択肢DのMulti-AZ 無効化は高可用性を失う重大な設計変更であり、フェイルオーバー問題の解決策ではない。選択肢AのRDS のエンドポイント DNS TTL は AWS が管理しており、直接変更できない(RDS エンドポイントの DNS TTL は 5 秒程度で既に短い)。アプリ側の JVM などのDNSキャッシュが問題の場合は別途対処が必要。

▸ この試験を本気で演習する(全150問・無料)