Skip to content
This repository has been archived by the owner on May 29, 2023. It is now read-only.

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

Open
zhangbao0325 opened this issue Jun 4, 2019 · 6 comments

Comments

@zhangbao0325
Copy link

第一步:
将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
Copy link
Author

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

@chobits
Copy link
Collaborator

chobits commented Jun 25, 2019

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

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

@zhangbao0325
Copy link
Author

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

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

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

@chobits
Copy link
Collaborator

chobits commented Jun 25, 2019

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


自行调试可以这样:

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

@zhangbao0325
Copy link
Author

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

自行调试可以这样:

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

好的,我调试看看。

@IYism
Copy link

IYism commented Nov 25, 2019

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

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants