keepalived MISC_CHECK 自定义脚本做健康检查

[摘要] keepalived 对后端webserver健康检查一般使用TCP_CHECK或者HTTP_GET方式,如果要使用自定义脚本做健康检查就需要使用CHECK方式了。

keepalived配置,两台代理服务器做成了LVS,防止单点故障 🙂

    real_server 10.90.250.5 3128 {
        weight 10
        MISC_CHECK {
          misc_path "/usr/local/bin/check_squidproxy.sh 172.31.10.21 3128 https://about.twitter.com/?from=t"  
          misc_timeout 10
          misc_dynamic
        }

下面是自定义的健康检查脚本:

cat /usr/local/bin/check_squidproxy.sh
#!/bin/bash
# Author: Fisher at sudops.com
# Script: check_squidproxy.sh
# Version: 1.0
#

if [ $# -ne 3 ];then
  echo "Warning: check_command error."
  exit 1
else
  PROXY_IP=$1
  PROXY_PORT=$2
  CHECK_URL=$3
  CMD=`/usr/bin/curl -I -x ${PROXY_IP}:${PROXY_PORT} "${CHECK_URL}" 2>/dev/null | grep "200 OK" | wc -l`
  if [ ${CMD} -ne 1 ];then
    echo "CRITCAL: check proxy ${PROXY_IP} failed." 
    exit 1
  else
    echo "OK: check proxy ${PROXY_IP} OK." 
    echo 0
  fi
fi