SAP-C02-027 · 理解確認
理解確認:障害から自動復旧するアーキテクチャの設計
単一選択 10 / 複数選択 2 / 穴埋め 0 · 12問
この理解確認の目的
ヘルスチェック、ロードバランシング、Auto Scaling、Amazon Route 53を障害範囲に応じて組み合わせ、自己修復 / 自動フェイルオーバーをシナリオから判断できるか確認します。
顧客向け APIでデータベース接続障害が発生し、すべてのAPIリクエストがHTTP 500を返している。Amazon EC2 ステータスチェックは正常である。この障害を自動復旧のトリガーとして検出する設計として最も適切なのはどれか。
B. Auto Scalingグループの希望するキャパシティだけを監視する
C. アプリケーションの正常性を評価できるヘルスチェックを使用する
D. Amazon Route 53のTTLだけを短くする
答えと解説
答え:C
インフラストラクチャとしてEC2が正常でもアプリケーション関数が失敗することがあります。復旧アクションのトリガーには、検出したい障害レイヤーに対応する正常性シグナルが必要です。
Application Load Balancerは、あるEC2ターゲットをHTTPヘルスチェック障害によって異常と判定し、トラフィックから除外している。しかし数時間経過してもAuto ScalingグループはそのEC2インスタンスを交換しない。Amazon EC2 ステータスチェックは正常である。最も適切な改善はどれか。
B. ALBヘルスチェックを無効化し、Auto ScalingではEC2状態確認だけを利用する
C. Amazon Route 53フェイルオーバールーティングで同じリージョン内のインスタンスを交換する
D. Auto Scalingグループの最大キャパシティだけを増やして交換余地を確保する
答えと解説
答え:A
Auto ScalingグループはApplication Load Balancerのアプリケーション正常性障害を自動的にすべて置換判断へ使うわけではありません。ELB ヘルスチェックをヘルスチェックソースとして利用することで、ALBが異常と判断したインスタンスを交換できます。
ウェブ階層は複数AZに配置され、ALBとAuto Scalingグループを利用している。1台のEC2でアプリケーション障害が発生したとき、ユーザーリクエストをそのインスタンスへ送らず、希望するキャパシティも自動回復する必要がある。最も適切なアーキテクチャはどれか。
B. CloudWatch アラームだけで異常インスタンスを通知し、人手で交換する
C. Auto Scalingだけでアプリケーション正常性を判定し、ALBヘルスチェックは使用しない
D. ALBヘルスチェックで異常対象を隔離し、Auto Scalingで置換する
答えと解説
答え:D
トラフィック分離はロードバランサー、キャパシティ復旧はAuto Scalingという異なる責任を組み合わせます。
東京リージョンと大阪リージョンにそれぞれApplication Load Balancerがあり、東京をプライマリ、大阪をセカンダリとする。プライマリALB配下の対象がすべて利用不能になった場合も、人手を介さずセカンダリへDNSフェイルオーバーしたい。最も適切な構成はどれか。
B. レイテンシールーティングだけを構成し、正常性状態に関係なくレイテンシーが低いリージョンを返してプライマリ障害時も同じポリシーを維持する
C. プライマリ / セカンダリのフェイルオーバーエイリアスレコードを作成し、ALB エイリアスで評価対象正常性を有効にして対象正常性をルーティングへ反映する
D. シンプルルーティングでプライマリ / セカンダリ ALBを同時に返し、クライアント側再試行だけでリージョン障害時のトラフィック切替を実現する
答えと解説
答え:C
ALB エイリアスで評価対象正常性を有効にすると、Amazon Route 53はALBに関連付けられた対象グループの正常性をフェイルオーバールーティングへ反映できます。
Amazon Route 53のヘルスチェック間隔を10秒に設定したため、アーキテクトは「エンドポイント障害から10秒後には、すべてのクライアントが必ずセカンダリへ接続する」と説明した。最も適切な評価はどれか。
B. 正しい。Amazon Route 53はクライアントのDNSクエリごとにエンドポイント正常性を確認する
C. 誤り。フェイルオーバー時間には障害しきい値やDNS TTL / DNSリゾルバーのキャッシュなども影響する
D. 誤り。Amazon Route 53 ヘルスチェックは自動フェイルオーバーには利用できない
答えと解説
答え:C
ヘルスチェック間隔は検知の一部にすぎません。正常性状態変更までのしきい値やDNSキャッシュもエンドユーザーがセカンダリへ到達するまでの時間へ影響します。
EC2 Auto Scalingグループで新インスタンスを起動すると、アプリケーション起動に約3分かかる。しかしヘルスチェックが起動直後から失敗し、インスタンスが準備完了になる前に異常として交換され続けている。最も適切な改善はどれか。
B. ALBから対象ヘルスチェックを削除する
C. Auto Scalingグループの希望するキャパシティを1台に固定する
D. アプリケーション起動時間を考慮してヘルスチェックの猶予期間を設定する
答えと解説
答え:D
正常なブート / アプリケーションウォームアップ期間を障害と誤認すると置換ループが発生します。復旧速度だけでなく誤判定防止も必要です。
企業は2つの可用性ゾーンでウェブアプリケーションを運用し、別リージョンにも復旧環境を持っている。アプリケーション障害が発生したEC2へ新規トラフィックを送らず、壊れたEC2を自動交換し、1つのAZを失っても正常キャパシティでサービスを継続し、プライマリリージョン全体が利用不能ならセカンダリリージョンへ自動切替する必要がある。適切な設計を4つ選択してください。
B. Auto ScalingグループでELB ヘルスチェックを利用して異常インスタンスを交換する
C. Auto Scalingグループと対象を複数AZへ配置する
D. Amazon Route 53の正常性評価 / フェイルオーバールーティングでセカンダリリージョンへ切り替える
E. すべてのEC2を1つのAZへ集約して置換速度を上げる
F. Auto Scalingグループだけでリージョン間DNS ルーティングも担当する
答えと解説
答え:A / B / C / D
ALBは対象分離、Auto Scalingは異常インスタンスの置換、マルチAZは障害ドメイン分離、Amazon Route 53はリージョン / エンドポイント間のトラフィックフェイルオーバーを担当します。
すべてのウェブインスタンスの /health が外部決済APIへ接続し、決済APIが一時的に失敗すると全インスタンスが同時に異常になる設計になっている。その結果、Auto Scalingが正常なインスタンスまで大量交換している。最も適切な改善はどれか。
B. 共有依存関係の障害とインスタンス固有の障害を分離し、インスタンス交換トリガーとなる正常性シグナルを設計し直す
C. ヘルスチェックからアプリケーション自身の状態を除外し、Amazon EC2 ステータスチェックだけにする
D. Auto Scaling 最大キャパシティを増やして置換数を増やす
答えと解説
答え:B
共有依存関係の障害をインスタンス固有の故障として扱うと、正常インスタンスの大量置換で障害を拡大できます。交換アクションと整合する正常性シグナルへ分離します。
現在のAWSの正常性ベースのルーティング / ロードバランシングの障害モードについて正しいものを3つ選択してください。
B. Amazon Route 53フェイルオーバーでプライマリとセカンダリの両方が異常ならプライマリレコードを返す
C. ALBは全対象が異常なら必ずHTTP 503だけを返し対象へトラフィックを一切送らない
D. ヘルスチェックで全候補が異常になった場合でも、ルーティングポリシーによってはAmazon Route 53がレコードを返す障害モードがある
答えと解説
答え:A / B / D
ALBには全対象障害時のフェイルオープン挙動があります。Amazon Route 53フェイルオーバーもプライマリ / セカンダリ双方が異常の場合はプライマリレコードを返します。正常性ベースのルーティングは「全候補が異常なら必ず応答しない」とは限らないため、アプリケーション側でも最終障害モードを考慮します。
プライマリリージョンで短いネットワーク遅延が断続的に発生しており、ヘルスチェックが正常 / 異常を頻繁に往復してプライマリとセカンダリの切り替えを繰り返している。最も適切な改善はどれか。
B. 正常判定された瞬間に必ずプライマリへ即フェイルバックする
C. DNS TTLだけを0秒相当にすればフラッピングを防げる
D. RTOに合わせてしきい値を調整し、プライマリ安定確認後にフェイルバックする
答えと解説
答え:D
一時的な障害への過敏な正常性判定はフェイルオーバー / フェイルバックのフラッピングを招きます。障害しきい値とフェイルバック条件をRTOと障害特性に合わせて安定化します。
自動復旧アーキテクチャにおける自己修復とフェイルオーバーの責任差として最も適切なのはどれか。
B. 自己修復とフェイルオーバーはいずれもDNS TTLを短くする操作を意味し、リソース置換や場所切替は別の仕組みとして扱う
C. 自己修復はリージョン間トラフィック切替だけを指し、フェイルオーバーはEC2やコンテナの置換だけを指す責任分担である
D. 自己修復とフェイルオーバーは同義なので区別せず、どちらもヘルスチェックが異常になった後の全復旧処理を表す
答えと解説
答え:A
リソースの自己修復と場所フェイルオーバーは異なる責任です。Auto Scaling置換とAmazon Route 53フェイルオーバーなどを障害範囲に応じて組み合わせます。
フェイルオーバールーティングを使用する公開APIで、プライマリエンドポイント障害時の切り替えを設計している。DNS TTLは60秒だが、障害検出をDNSクエリ到着時だけに依存させたくない。Route 53のエンドポイントヘルスチェックの動作として最も適切な説明はどれか。
B. 複数のRoute 53正常性チェッカーが設定した10秒または30秒間隔でエンドポイントを監視し、評価済みの正常性状態をDNSルーティングへ利用する
C. TTLが期限切れになった瞬間だけヘルスチェックを実行し、TTL期間中はエンドポイントの正常性を更新しない
D. フェイルオーバールーティングではヘルスチェック結果を使わず、プライマリレコードのTTLだけでセカンダリへ切り替える
答えと解説
答え:B
Route 53のエンドポイントヘルスチェックはDNSクエリ到着時に実行する仕組みではありません。複数の正常性チェッカーが設定した間隔で独立して監視し、評価済みの正常性状態をDNSルーティングへ利用します。