keepalive生成的genhash相同的情况

最近遇到一个有趣的事情,在这里记录下来。

keepalive做LVS负载均衡。

截取部分架构图:

在这里插入图片描述
LVS做了负载均衡代理nginx。

其中nginx也做负载均衡,代理了tomcat,而且tomcat的资源还是NFS集中存储上的。

所以最后的结果就是配置keepalive时生成genhash是相同的,我又查了下genhash的信息,没有查到太多,多番研究后得出。

genhash这个工具生成的MD5校验和是根据server提供的页面来计算的,如果页面相同生成的MD5校验和也是相同的。

keepalive中的这个校验和是用来做健康检查的。最好不相同。

我的环境中用genhash生成的命令是这样写的

[root@localhost ~]#  genhash -s 172.16.12.122 -p 80 -u /index.html
MD5SUM = 95a9e38ed40ad581299005622d4963ec

[root@localhost ~]#  genhash -s 172.16.12.123 -p 80 -u /index.html
MD5SUM = 95a9e38ed40ad581299005622d4963ec
genhash	-S使用到远程服务器的ssl连接。
genhash	-s使用指定的远程服务器地址。
genhash	-p使用指定的远程服务器端口。
genhash	-u使用指定的远程服务器url。
genhash -V在GET查询中使用指定的virtualhost。
genhash	-v使用详细模式输出。
genhash	-h显示这个简短的内联帮助屏幕。
genhash	-r显示版本号

得到的校验和是一样的。

我就很懵逼了,因为index.html的内容不同啊。

-u又是URL ,实际的访问地址应该是 http://172.16.12.122/index.html。

我又访问测试了下,发现index.html页面的问题。

因为nginx里设置了转发,所有的请求都被转走了,-u index.html这个选项不生效。MD5 生成时访问到的还是NFS 集中存储上相同的页面,根本没访问index.html。

找到了原因就好解决了。
就增加一个nginx的访问供keepalive做健康检查用就行了

而且这个建议换个名字。不要用index。

server {
        listen       80;
        server_name  172.16.12.122;
        location /heal.html {
            root   /usr/local/nginx/html/;
            index  index.html index.htm heal.html;
        }
        location / {
            proxy_pass http://WebA;
            proxy_next_upstream http_500 http_502 http_503 error timeout invalid_header;
            include /usr/local/nginx/conf/proxy.conf;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
}

上边是我的这段,2个location/heal.html就是健康监测,生成MD5校验和用的。

heal.html要不一样生成的就不一样。这里边随便写点东西就好。

然后重新生成就ok了

[root@localhost ~]#  genhash -s 172.16.12.122 -p 80 -u /heal.html
MD5SUM = b451e0427af20e3ec419231ebdf40c4a

[root@localhost ~]#  genhash -s 172.16.12.123 -p 80 -u /heal.html
MD5SUM = 304193c30d5d188358e7786fb08c8858
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值