ngx_http_dyups_module
ngx_http_dyups_module copied to clipboard
BUG : 原先是hash算法的,执行了update upstream后,hash规则失效
第一步: 将upstream的配置如下:
upstream test.hash.com {
hash $request_uri consistent;
server 10.90.101.177:1996;
server 10.90.101.177:1997;
server 10.90.101.177:1998;
server 10.90.101.177:1999;
server 10.90.101.177:2000;
}
通过curl测试,请求是按照require_uri进行hash到后端的 第二步: 通过dyups的http接口修改upstream内容(去除掉后端10.90.101.177:2000):
# curl -d "hash $request_uri consistent;server 10.90.101.177:1996;server 10.90.101.177:1997;server 10.90.101.177:1998;server 10.90.101.177:1999;" 127.0.0.1:81/upstream/test.hash.com
通过curl测试,无论怎么变url参数,请求会一直固定的打到一台机器上。
第三步: 通过dyups的http接口修改upstream内容(去除掉后端10.90.101.177:2000):
# curl -d "10.90.101.177:1996;server 10.90.101.177:1997;server 10.90.101.177:1998;server 10.90.101.177:1999;" 127.0.0.1:81/upstream/test.hash.com
通过curl测试,发现请求会以轮询的方式请求后端。
以上操作,第二步的现象是有问题的,更新之后发现hash规则失效了,这是否是一个bug呢?
该模块目前是没有人维护了吗?
第三步,post数据的时候需要把其他模块指令也push上去。
同时注意,改模块的兼容列表中未写明有chash模块,所以不保证100%兼容。不过可以自行测试下。
第三步,post数据的时候需要把其他模块指令也push上去。
同时注意,改模块的兼容列表中未写明有chash模块,所以不保证100%兼容。不过可以自行测试下。
其中第二步就已经是把chash模块的指令加上了,但是结果是不管怎么变request_uri,请求都是打到了一台机器上,这个是有问题的。是不是现在不支持hash配置的upstream变更?
那应该就是不兼容了,因为该模块没有测试过。
自行调试可以这样:
你可以看下 第二步 通过curl测试,无论怎么变url参数,请求会一直固定的打到一台机器上。
这个步骤对应的访问请求的debug log 查看其中的upstream chash模块是否work
那应该就是不兼容了,因为该模块没有测试过。
自行调试可以这样:
你可以看下 第二步
通过curl测试,无论怎么变url参数,请求会一直固定的打到一台机器上。
这个步骤对应的访问请求的debug log 查看其中的upstream chash模块是否work
好的,我调试看看。
@zhangbao0325 # curl -d "hash $request_uri consistent;server 10.90.101.177:1996;server 10.90.101.177:1997;server 10.90.101.177:1998;server 10.90.101.177:1999;" 127.0.0.1:81/upstream/test.hash.com $request 转义看看,因为你在shell终端进行curl,$request会变成一个变量。