keepalivedのヘルスチェック その4 - 瞬断対策を考える

  1. delay_before_retryを長めに、delay_loopを短めにして瞬断してもすぐ復帰するようにする
  2. サービスレベルでリトライするヘルスチェックにする

できれば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は許容するようになった。