ngx_http_dyups_module icon indicating copy to clipboard operation
ngx_http_dyups_module copied to clipboard

BUG : 原先是hash算法的,执行了update upstream后,hash规则失效

Open zhangbao0325 opened this issue 5 years ago • 6 comments

第一步: 将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呢?

zhangbao0325 avatar Jun 04 '19 10:06 zhangbao0325

该模块目前是没有人维护了吗?

zhangbao0325 avatar Jun 25 '19 06:06 zhangbao0325

第三步,post数据的时候需要把其他模块指令也push上去。

同时注意,改模块的兼容列表中未写明有chash模块,所以不保证100%兼容。不过可以自行测试下。

chobits avatar Jun 25 '19 06:06 chobits

第三步,post数据的时候需要把其他模块指令也push上去。

同时注意,改模块的兼容列表中未写明有chash模块,所以不保证100%兼容。不过可以自行测试下。

其中第二步就已经是把chash模块的指令加上了,但是结果是不管怎么变request_uri,请求都是打到了一台机器上,这个是有问题的。是不是现在不支持hash配置的upstream变更?

zhangbao0325 avatar Jun 25 '19 06:06 zhangbao0325

那应该就是不兼容了,因为该模块没有测试过。


自行调试可以这样:

你可以看下 第二步 通过curl测试,无论怎么变url参数,请求会一直固定的打到一台机器上。 这个步骤对应的访问请求的debug log 查看其中的upstream chash模块是否work

chobits avatar Jun 25 '19 06:06 chobits

那应该就是不兼容了,因为该模块没有测试过。

自行调试可以这样:

你可以看下 第二步 通过curl测试,无论怎么变url参数,请求会一直固定的打到一台机器上。 这个步骤对应的访问请求的debug log 查看其中的upstream chash模块是否work

好的,我调试看看。

zhangbao0325 avatar Jun 25 '19 07:06 zhangbao0325

@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会变成一个变量。

IYism avatar Nov 25 '19 04:11 IYism