keepalive生成的genhash相同的情况
最近遇到一个有趣的事情,在这里记录下来。
keepalive做LVS负载均衡。
截取部分架构图:
LVS做了负载均衡代理nginx。
其中nginx也做负载均衡,代理了tomcat,而且tomcat的资源还是NFS集中存储上的。
所以最后的结果就是配置keepalive时生成genhash
是相同的,我又查了下genhash
的信息,没有查到太多,多番研究后得出。
genhash
这个工具生成的MD5校验和是根据server提供的页面来计算的,如果页面相同生成的MD5校验和也是相同的。
keepalive
中的这个校验和是用来做健康检查的。最好不相同。
我的环境中用genhash生成的命令是这样写的
[aaa@qq.comlocalhost ~]# genhash -s 172.16.12.122 -p 80 -u /index.html
MD5SUM = 95a9e38ed40ad581299005622d4963ec
[aaa@qq.comlocalhost ~]# 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了
[aaa@qq.comlocalhost ~]# genhash -s 172.16.12.122 -p 80 -u /heal.html
MD5SUM = b451e0427af20e3ec419231ebdf40c4a
[aaa@qq.comlocalhost ~]# genhash -s 172.16.12.123 -p 80 -u /heal.html
MD5SUM = 304193c30d5d188358e7786fb08c8858
上一篇: Netty 3.2.0 Beta1发布,zero-copy文件传输
下一篇: Oracle sys和system用户、sysdba 和sysoper系统权限、sysdba和dba角色的区别 [转]
推荐阅读
-
多个interface有完全相同的签名方法得情况,C#比Java得处理似乎更合理一点
-
多个interface有完全相同的签名方法得情况,C#比Java得处理似乎更合理一点
-
[20190320]测试相同语句遇到导致cursor pin S的情况.txt
-
C#在循环中使用Random时生成的随机数相同的解决办法
-
System.IO.FileLoadException:“混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集。”
-
解决IDEA中多模块下Mybatis逆向工程不生成相应文件的情况
-
Python numpy.array()生成相同元素数组的示例
-
怎么不生成.DOC文件的情况提供下载
-
用某个字符串生成100个随机数,并且相同的字符串不同时间生成的随机数不一样
-
javascript - 怎么实现数组内对象code值相同的情况下poll值进行累加