Skip to content
This repository has been archived by the owner on Aug 26, 2022. It is now read-only.

通过HTTP API修改UPSTREAM不起作用 #46

Open
walkermi opened this issue May 10, 2019 · 4 comments
Open

通过HTTP API修改UPSTREAM不起作用 #46

walkermi opened this issue May 10, 2019 · 4 comments

Comments

@walkermi
Copy link

我通过API,修改后端服务器list

curl 127.0.0.1:1995/upstream/node-dev.example.com -d
{"servers":[{"host":"192.168.1.1", "port": 8080}, {"host":"192.168.1.2", "port": 8080}]}

curl 127.0.0.1:1995/upstream/node-dev.example.com -d
{"servers":[{"host":"192.168.1.1", "port": 8080}]}

命令response显示ok,获取status也得到修改后的server list,但是看日志貌似没用调用到protocol,实际并没有从upstream list摘除192.168.1.2这台服务器,看代码也没有发现有调用到1895这个端口上的tcp protocol。

难道HTTP API只能修改保存的upstream list内容,实际摘除还需要自己发送tcp命令
echo -ne 'PUT upstream node-dev.example.com\n\x00\x00\x00\x3f{"cluster":[{"servers":[{"host":"192.168.1.1", "port": 8080}]}]}' | nc 127.0.0.1 1895 | xxd

请指点一下,先谢了。

@walkermi
Copy link
Author

http://huangnauh.github.io/2017OpenRestyMeetup_files/protocol.png

这个protocol是谁发起的呢?是不是需要在http api的upstream处理中自行加入发送给1895端口的这个格式的命令呢?@huangnauh @yejingx

@walkermi
Copy link
Author

又跟了一下代码,直接给1895端口发送tcp protocol,和通过http api发送upstream,最后都调用到了checkups.update_upstream(name, upstream),但这个checkups貌似并没有同步,tcp协议发送的影响力实际的balancer选择后端,http的修改,并没有影响balancer的选择。

@walkermi
Copy link
Author

lua_shared_dict stream_state  10m;
lua_shared_dict stream_locks  10m;
lua_shared_dict stream_cache  10m;
lua_shared_dict stream_mutex  1m;
lua_shared_dict stream_config 10m;
lua_shared_dict stream_load   10m;

lua_shared_dict state 50m;
lua_shared_dict locks 10m;
lua_shared_dict mutex 1m;
lua_shared_dict cache 50m;
lua_shared_dict config 50m;
lua_shared_dict load   50m;

可能找到原因了,http 和 stream 并不是同一个shared,所以http api的修改,并不能同步到stream子系统。

这个有办法解决吗?@huangnauh @yejingx

@yejingx
Copy link
Contributor

yejingx commented May 16, 2019

@walkermi 原因如你所说,http 和 stream 是不同的子系统,这个目前没有办法解决。

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

2 participants