【正解】B、D
【0からの解説】
まず指標を整理します。RPO(目標復旧時点)はデータ損失の許容量で、ここでは「最大2時間」=最大2時間分のデータ損失まで許容。RTO(目標復旧時間)は復旧までに許容する時間で、ここでは「最大10分」=10分以内に復旧する必要があります。データ層(MySQL)とアプリ層(EC2)の両方でこれを満たす組み合わせを2つ選びます。
データ層=B:Amazon Auroraグローバルデータベースは、プライマリリージョンからセカンダリリージョンへ通常1秒未満の遅延でレプリケーションし(RPO≒数秒、2時間以内を余裕で満たす)、障害時はセカンダリを短時間でプライマリに昇格できます(マネージドな計画外フェイルオーバーで通常数分以内、RTO 10分を満たせる)。クロスリージョンDRに最適です。
アプリ層=D:アプリを2リージョンに配置し、Route 53のフェイルオーバールーティング+ヘルスチェックで、プライマリ障害時に自動的にセカンダリのALBへ振り向けます。各リージョンにAuto Scalingグループを持たせれば、フェイルオーバー後も必要な台数を確保できます。DNSフェイルオーバーは数分で切り替わり、RTO 10分を満たせます。
よってB(データ)+D(アプリ)が要件を満たす組み合わせです。
【誤りの選択肢】
A:Aurora「Single-AZ」を複数リージョンに置くだけでは、リージョン間レプリケーションやフェイルオーバーが自動で成立せず、Single-AZ構成は可用性も低い。「自動復旧」では低RTO/低RPOのクロスリージョンDRを満たせない。
C:複数リージョンのAuroraクラスターをNetwork Load Balancerで“負荷分散”するというのはAuroraの設計に合わない(DBはNLBでマルチリージョン分散する使い方をしない)。要件を満たさない。
E:Global Acceleratorで両ALBを“単一のエンドポイントグループ”に入れると、両リージョンへトラフィックを分散するアクティブ/アクティブ寄りの構成になり、本問の「フェイルオーバー(プライマリ→セカンダリ)」というDR要件の意図とずれる。要件充足の組み合わせとしてはDの方が直接的で適切(DはRoute 53フェイルオーバーで明確にフェイルオーバーを実現)。
B・D:データ層はAuroraグローバルDB、アプリ層はRoute 53フェイルオーバー+ASGで、RPO 2時間・RTO 10分のクロスリージョンDRを満たす。
【参考】
Amazon Aurora global databasesConfiguring DNS failover (Amazon Route 53)Disaster recovery options in the cloud