- delay_before_retryを長めに、delay_loopを短めにして瞬断してもすぐ復帰するようにする
- サービスレベルでリトライするヘルスチェックにする
できれば2がいいなー。
とりあえすこないだかいたスクリプトを修正。
#!/bin/sh URL=$1 WGET=/usr/bin/wget RETRY=3 TIMEOUT=3 WAIT=1 function check { $WGET --spider -t 1 -T $TIMEOUT -O - "$URL" if [ $? -eq 0 ]; then exit 0 fi } for i in `seq $RETRY`; do check sleep $WAIT done exit 1
virtual_server 192.168.11.100 80 { delay_loop 15 lb_algo rr lb_kind DR protocol TCP real_server 192.168.11.15 80 { weight 1 MISC_CHECK { misc_path "/usr/local/bin/keepaliced_http_get http://192.168.11.15/keepaliced_HTTP_GET" misc_timeout 12 } } }
とりあえず瞬間的な500は許容するようになった。