高可用性・耐障害性の設計応用問題
あるWebアプリケーションがAuto Scalingグループ内の複数のEC2インスタンスと、Application Load Balancer(ALB)を使用しています。あるインスタンスでアプリケーションがクラッシュし、HTTPレスポンスを返せない状態になりました。ALBとAuto Scalingはそれぞれどのように動作しますか?
A.ALBのヘルスチェックが失敗し、そのインスタンスへのトラフィックルーティングを停止する。Auto Scalingも独自のヘルスチェックで異常を検知し、インスタンスを終了して新しいインスタンスを起動する← 正解
✓ 正解です。ALBはトラフィックを停止し、Auto ScalingはALBヘルスチェックタイプ設定時にアプリ異常も検知してインスタンスを自動交換します。
B.ALBはヘルスチェック失敗を検知してトラフィックを停止するが、Auto Scalingはインフラレベルのヘルスチェック(EC2ステータス)のみを見るため、アプリクラッシュは検知できず自動交換は行われない
✗ Auto ScalingはALBヘルスチェックと連携するよう設定可能です。ALBの失敗をトリガーにインスタンスを交換する構成が一般的です。
C.ALBのヘルスチェックが失敗すると、そのインスタンスは即座に終了される。Auto Scalingは新しいインスタンスを起動するが、ALBは新インスタンスのヘルスチェック完了前からトラフィックを送信する
✗ ALBはトラフィックを停止しますが、インスタンスを直接終了する権限はありません。また新インスタンスはヘルスチェック通過後にトラフィックを受けます。
D.Auto Scalingがヘルスチェック失敗を検知してインスタンスを交換するが、ALBはAuto Scalingから通知を受けるまでそのインスタンスへのルーティングを継続する
✗ ALBは独自のヘルスチェックで即座にルーティングを停止します。Auto Scalingからの通知を待つ設計ではありません。