keepalived检查方法
young / / keepalived / 阅读量

HTTP及SSL GET检测

这里有几个要点:

1、两者都有两种检测方式,一种是简单的基于返回码确认;另一种是基于确认后端页面内容hash值,确认前后是否发生变化(是不是感觉有点高端,还有简单的防止页面被篡改的作用,当然,动态页面显然不行);

2、两者都是处理简单的GET请求,基于post返回值确认是否正常,这种方法显然不适用 ,不过POST方式是可以通过MISC_CHECK方式进行支持检测的;

3、两者配置语法上相同,只不过类型名不同而已 。同属于大的web请求范畴,只不过一个走的HTTP协议,一个走的HTTPS协议;

基于状态码的检测

配置如下:

real_server 192.168.2.195 80 {
	weight 1
	HTTP_GET {
		url {
			path /index.html
			status_code 200      #http://192.168.2.188/index.html的返回状态码
		}
		connect_timeout 3
		nb_get_retry 3
		delay_before_retry 3
	}
}

基于genhash的检测

配置如下:

real_server 192.168.2.195 80 {
    weight 1
    HTTP_GET {
        url {
            path /index.html
            digest bfaa334fdd71444e45eca3b7a1679a4a  #index.html的digest值
        }
        connect_timeout 3
        nb_get_retry 3
        delay_before_retry 3
    }
}

安装完keepalived包,系统中会多出一个命令genhash,通过该命令可以获取页面的hash串

[root@node1 ~]$ genhash  -s 192.168.2.195 -p 80 -u /index.html
MD5SUM = 6df8d89daedcbb90e3f0c1d1f82cbcf6

TCP_CHECK 检测

配置如下:

real_server 192.168.2.100 80 {
    weight 100
    TCP_CHECK {
        connect_timeout 3  #连接超时时间
        nb_get_retry 3  #重连次数
        delay_before_retry 3  #重连间隔
        connect_port 80
    }
}

其还可以配合HTTP_GET和SSL_GET一起用,如下:

real_server 192.168.201.100 443 {
    weight 1
    SSL_GET {
        url {
            path /
            digest ff20ad2481f97b1754ef3e12ecd3a9cc
        }
        connect_port    444
        connect_timeout 3
        nb_get_retry 3
        delay_before_retry 3
    }
}

SMTP检测

SMTP这个顾名思义,主要用于邮件系统SMTP协议的检测,具体如下示例:

SMTP_CHECK {
    connect_timeout 10
    retry 2
    delay_before_retry 5
    helo_name foo.bar.com
    host {
        connect_ip 172.16.1.11
    }
    host {
        connect_ip  192.168.155.10
    }
}

这里也可以指定连接的端口(默认是25),监听的地址

MISC_CHECK检测

这个是通过调用外部配置名脚本进行检测确认后端主机是否正常的方法 。

MISC_CHECK {
    misc_path <STRING>|<QUOTED-STRING># 外部程序或者脚本路径
    misc_timeout <INT># 执行脚本的超时时间
    misc_dynamic #如果设置了misc_dynamic,healthchecker程序的退出状态码会用来动态调整服务器的权重(weight).
    #返回0:健康检查OK,权重不被修改
    #返回1:健康检查失败,权重设为0
    #返回2-255:健康检查OK,权重设置为:退出状态码-2,比如返回255,那么weight=255-2=253
}

对应的脚本后面是支持传参的,两个示例如下:

#不传参配置
real_server 192.168.200.6 1358 {
    weight 1
    MISC_CHECK {
      misc_path /usr/local/bin/script.sh
    }
}
#传参配置
real_server 192.168.200.6 1358 {
    weight 1
    MISC_CHECK {
      misc_path "/usr/local/bin/script.sh  arg1  arg2"
    }
}
支付宝捐赠
请使用支付宝扫一扫进行捐赠
微信捐赠
请使用微信扫一扫进行赞赏
有 0 篇文章