keepalived对后端realserver的健康检查方式主要有以下几种:
- TCP_CHECK:工作在第4层,keepalived向后端服务器发起一个tcp连接请求,如果后端服务器没有响应或超时,那么这个后端将从服务器池中移除。
TCP_CHECK配置:
TCP_CHECK { connect_timeout 5 #连接超时时间 nb_get_retry 3#重连次数 delay_before_retry 3 #重连间隔时间 connect_port 80 #健康检查的端口 } # TCP_CHECK
- HTTP_GET:工作在第5层,向指定的URL执行http请求,将得到的结果用md5加密并与指定的md5值比较看是否匹配,不匹配则从服务器池中移除;此外还可以指定http返回码来判断检测是否成功。HTTP_GET可以指定多个URL用于检测,这个一台服务器有多个虚拟主机的情况下比较好用。
- SSL_GET:跟上面的HTTP_GET相似,不同的只是用SSL连接
HTTP_GET和SSL_GET配置:
1 HTTP_GET | SSL_GET 2 { 3 url { 4 path /# HTTP/SSL 检查的url 可以是多个 5 digest <STRING> # HTTP/SSL 检查后的摘要信息 用工具genhash生成 6 status_code 200# HTTP/SSL 检查返回的状态码 7 } 8 connect_port 80 # 连接端口 9 bindto <IPADD> 10 connect_timeout 3 # 连接超时时间 11 nb_get_retry 3 # 重连次数 12 delay_before_retry 2 #连接间隔时间 13 } 14 # END OF HTTP_GET|SSL_GET
- MISC_CHECK:用脚本来检测,脚本如果带有参数,需将脚本和参数放入双引号内。脚本的返回值需为:
0) 检测成功
1) 检测失败,将从服务器池中移除
2-255)检测成功;如果有设置misc_dynamic,权重自动调整为 退出码-2,如退出码为200,权重自动调整为198=200-2。
1 MISC_CHECK { 2 3 misc_path "/opt/mytools/check_web.sh web1" #脚本名,需全路径 4 5 misc_timeout 30 #脚本执行的超时时间 6 7 misc_dynamic #动态调整服务器权重 8 9 }
- SMTP_CHECK:用来检测邮件服务的smtp
1 SMTP_CHECK { 2 host { 3 connect_ip <IP ADDRESS> 4 connect_port <PORT> # 默认检查端口25 5 } 6 connect_timeout <INTEGER> 7 retry <INTEGER> 8 delay_before_retry <INTEGER> 9 helo_name <STRING>|<QUOTED-STRING> # "请求命令参数,可选 10 } #SMTP_CHECK