当前位置: 主页 > 环境部署 > 负载均衡 >

haproxy + 自定义7层探测

时间:2013-04-23 11:55来源:www.shencan.net 作者:shencan 点击:
先说下这个变态的需求吧 我们是给运营商做缓存 haproxy探测后端设备服务是不是可用 haproxy 默认就自带 4 7层探测 4层是探测 IP+端口 7层是探测一个 URL 问题来了 这个URL 只能是一个? 歇菜
欢迎大家分享自己的文档,请点击查阅:分享方法,Linux系统运维
如果你喜欢这文章,可以点击文章结尾处百度分享,分享到你的各种社区收藏,或推荐给朋友……


先说下这个变态的需求吧

我们是给运营商做缓存  haproxy探测后端设备服务是不是可用  haproxy 默认就自带  4  7层探测    4层是探测 IP+端口   7层是探测一个 URL   问题来了 这个URL 只能是一个?   歇菜了   后端设备的命运 就交给 这样URL了  选哪个呢?  公司的logo ?   一个永远不能cache的 文件?

 

需求 明确了   怎么办呢

突然有一天在网上看了 一篇文章 将haproxy 4层负载均衡的  突然看到了

option httpchk  OPTIONS  *  HTTP/1.1\r\nHost:\ www

这个 httpchk  (虽然当时  网上的教程是 注释的 )  我眼前一亮 这是检测啥  然后看了一下官方文档 关于 check port 的资料 发现 配置 backend 可以这样(IP处理过)

option httpchk  OPTIONS  *  HTTP/1.1\r\nHost:\ www

server 3dG 1.1.1.1:80 rise 5 check inter 3000 port 55555

server 3dH 1.1.1.2:80 rise 5 check inter 3000 port 55555

(当然还可以加其他参数  )  亮点在 55555 这个端口

大概意思 是 检测后端55555 端口 进行一个OPTIONS 请求 (没事的可以看看HTTP协议)   会根据后端的返回内容来判断 后端是不是可用

 

好   现在我们来看看 后端 55555 端口是干毛的

netstat -tpln |grep  55555
tcp        0      0 0.0.0.0:55555               0.0.0.0:*                   LISTEN      25509/xinetd

是一个 xinetd服务   然后再看看

cat /etc/xinetd.d/shencan
service shencan
{
flags           = REUSE
socket_type     = stream
port            = 55555
wait            = no
user            = root   #注意下  用户
server          = /usr/local/bin/shencan.sh  #脚本路径 (可执行权限)
log_on_failure  += USERID
disable         = no

}

明白了吧

定义了一个 xinted服务 监听55555 这个端口  server是 一个脚本  /usr/local/bin/shencan.sh

我们来 看看这个脚本吧

 

cat  /usr/local/bin/shencan.sh
#!/bin/bash
code=`curl  -o /dev/null -s -w “%{http_code}\n” -x “222.73.233.145:80″  http://www.qq.com`

if [ "$code" == "200"   ]
then

/bin/echo  -e “HTTP/1.1 200 OK\r\n”

else

/bin/echo -e “HTTP/1.1 503 Service Unavailable\r\n”

fi

脚本内容很简单(因为我测试 哈哈哈..)

当时核心是 2个 echo    一个是 “HTTP/1.1 200 OK\r\n”  一个是  “HTTP/1.1 503 Service Unavailable\r\n”    这个就是haproxy判断 后端 是不是可用的 最根本的因素

 

流程讲完了   咱们拓展一下吧

这个东西 拓展 主要是这个脚本的判断   核心不能变 (最后 2个echo)   你可以写一堆东西来判断服务 是不是可以用(抓1000个URL  ….  哈哈    看看 squidlog -s  里面的错误率)   题外话

反正 这个地址 就是 可以拓展的 核心地方了  脚本 随便写   你会啥 就写啥

 

总结

哎   没啥总结的  我是测试通过了 公司再有着蛋疼的需求  就上这个吧 .   注意关键 那个脚本

转载请注明linux系统运维
http://www.linuxyw.com/linux/fuzaijunheng/20130423/116.html

------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
验证码: 点击我更换图片