(12/13追記)
全然ダメだった…
Apacheのlogrotate時の再起動でWeightを0にされても困るので(メールがバンバン飛ぶのも困る)、MISC_CHECKで瞬断を許容するようにしてみる。
- keepalivedのバージョンを1.1.19にする
- 1.1.18にはMISC_CHECKでreloadするとバランサから外されるという恐ろしいバグがある
- 結構クリティカルなバグだと思うんだけど、1.1.18で混入したのかなぁ?
- あと、1.1.19のkeepalived.specは、バージョンが1.1.18になっているので直した方がよいと思います
- てきとーなチェックスクリプトを用意する
#!/bin/sh URL=$1 WGET=/usr/bin/wget RETRY=3 TIMEOUT=3 WAIT=3 function check { $WGET --spider -T $TIMEOUT -O - "$URL" if [ $? -eq 0 ]; then exit 0 fi } for i in `seq $RETRY`; do check sleep $WAIT done exit 1
- MISC_CHECKを設定
real_server 192.168.10.12 80 { weight 1 inhibit_on_failure MISC_CHECK { misc_path "/usr/local/bin/keepalived_check_http http://192.168.10.12/test.html" misc_timeout 25 }
-
- いったんバランサから外れたら30秒復帰しないけど、瞬断で外される方が怖いし…
- misc_timeoutは ( wgetのtimeout 3s + sleep 3s ) * 3回 = 18s、残りはバッファ
rb_get_retryは直さないのかなー
追記
別にスクリプト作る必要なかった 間違い
wget --spider -t 3 -T 3 -O - http://192.168.10.12/test.html