LVS(Keepalived)でhealth_check.htmlはやめるべし!
まさに表題の通り。。
Keepalived + LVSの構成で組んでいたとして、よくあるTipsとして「ヘルスチェックはhealth_check.htmlという静的ファイルを用意して、それを死活監視のポイントにしよう」である。過去のLVSの構築手順の記事でもその旨を記載したものの、いろいろな体験した結果、これはNGという結論に至った。
確かにhealth_check.htmlのようなページを用意することで、簡単にクライアント側から切り離しが出来るので非常に楽。
#サーバの切り離しが簡単 mv health_check.html health_check.html_
ただし、大きなトラップがあって、たかが静的なhealth_check.htmlページごときだと、ほとんどの場合で死活監視OKとなってしまう笑。
サーバにLoadAverageが150を超えるなど、高負荷がかかった場合どうなるかというと、色々止まる。sshもログインできなくなる。 ただそんな過酷な状況下でもapacheは意外としぶとく、静的ページに至っては0秒のスピードで返してくれたりする。しかも律儀にログに残ってたりもする。
結論
クリティカルなシステムであれば、死活監視対象は比較的処理に時間がかかりそうなページにしとく。
ただし、重いページを選択すると、通信が多く発生したり、負荷がかかるページであれば、死活監視だけでapacheにダメージを与えることになるので、ここはうまくバランスをとる必要はあり。