AWS関連

【AWS】Connection Draining を使ってELB から安全にEC2 を切り離す

Connection Draining について

何らかの理由がありEC2 などを切り離したい場合、ELB(CLB)からいきなり登録解除してしまうとコネクションを利用しているアプリっケーションは突然503などのエラーになってしまいます。(ユーザー利用中であれば影響あり…)

CLBにおいてConnection Draining を指定することにより、登録解除または不健全な状態にあるインスタンスがあっても、指定した秒数の間は通信が切れることがありません。

つまり、「処理中のリクエストが終わるまで一定期間待ってくれる」のが Connection Draining ということになります。

最大タイムアウト値は、1~3,600秒の間で設定が可能 (デフォルトは300秒)。

最大タイムアウト時間に達すると、ロードバランサーは登録解除されたインスタンスへの接続を強制的に終了する。

・リクエストが処理されている間のステータス:
InService: Instance deregistration currently in progress.

・リクエスト対応が完了したとき、または最大タイムアウト制限に達したときのステータス:
OutOfService: Instance is not currently registered with the LoadBalancer.

情報としては以上ですが、ついでに有効化/無効化のCLI コマンドを載せておきます。

Connection Draining の有効化(CLI)

aws elb modify-load-balancer-attributes \
    --load-balancer-name my-loadbalancer \
    --load-balancer-attributes "{\"ConnectionDraining\":{\"Enabled\":true,\"Timeout\":300}}"

Connection Draining の無効化(CLI)

aws elb modify-load-balancer-attributes \
    --load-balancer-name my-loadbalancer \
    --load-balancer-attributes "{\"ConnectionDraining\":{\"Enabled\":false}}"

最後まで読んでいただきありがとうございました。