ELBとASG間で行われるヘルスチェック
問題
ELBに関連づけられたAutoScalingGroupがあります。 ELBヘルスチェックは異常となっているが、インスタンスの置き換えはおこならない。 ELBヘルスチェックにて異常となったインスタンスが置き換わるようにするにはどうすればよいか?
整理
ELBは定期的にASGに対してpingを送信して接続のチェックをしている。
異常となっているなら、インスタンスの置き換えはされてもよいものだが...
用語
- ELB (Elastic Load Balancing) 受け取ったトラフィック(リクエスト)を後方の複数のインスタンスに分散するための前衛。いろんな機能がある。
- ヘルスチェック ELBが後方のインスタンスに対して正常に動作しているかを確認するための作業。これが失敗した場合、振り分けを停止する。 [inService , outService] (5つのインスタンスのうち一つがヘルスチェックに失敗した場合、その振り分けを停止し、4つに対して振り分けを行うようにする)
ASGは(Elastic Load Balancing)
ASGは起動設定を元に構成される
- 起動設定を元にASGを作っていく
大事なこと
インスタンスが置き換わるようにするという問題の意図としては、ELB側の設定ではなく、ASG側の設定に問題があることがなんとなく想像がつく。
この記事に答えが書いてあった。
つまり↑このヘルスチェックがEC2かELBかで挙動が代わり、
EC2: インスタンスのステータスが running 以外である場合、またはシステムステータスが impaired である場合、Amazon EC2 Auto Scaling はインスタンスを異常と見なし、代わりのインスタンスを起動します
ELB: Elastic Load Balancing がOutOfService とレポートしたときにインスタンスを異常とマークするようになります。
まとめ
長くなりましたが
- ELB+ASG構成の場合、ELBのヘルスチェックを元にASG内のインスタンスの再起動をしたい場合はASG側のヘルスチェックの設定をEC2からELBに変更してあげる必要があるよ! ということでした。