apisix
apisix copied to clipboard
help request: Can i use etcd's gRPC proxy as apisix's etcd?
Description
i know that apisix's watch is based on http/1.1,so if i have many route or upstream,apisix will make lots of post request to etcd(such as this paper:https://apisix.apache.org/zh/blog/2021/08/10/apisix-nginx/#%E5%9F%BA%E4%BA%8E-etcd-watch-%E6%9C%BA%E5%88%B6%E7%9A%84%E9%85%8D%E7%BD%AE%E5%90%8C%E6%AD%A5%E6%96%B9%E6%A1%88) so can i use etcd's gRPC proxy(https://etcd.io/docs/v3.5/op-guide/grpc_proxy/) to coalesce watch and improve my performance?if it can be use,why i have some errors in logs,and how can i to fix it ?(i make sure etcd is work,i can use client to control etcd cluster)
lua ./apisix/cli/apisix.lua start
Sep 01 19:38:10 apisix[15069]: lua: /usr/local/apisix/apisix/cli/etcd.lua:215: attempt to index local 'body' (a number value)
Sep 01 19:38:10 apisix[15069]: stack traceback:
Sep 01 19:38:10 apisix[15069]: /usr/local/apisix/apisix/cli/etcd.lua:215: in function 'init'
Sep 01 19:38:10 apisix[15069]: /usr/local/apisix/apisix/cli/ops.lua:689: in function 'init_etcd'
Sep 01 19:38:10 apisix[15069]: /usr/local/apisix/apisix/cli/ops.lua:752: in function '?'
Sep 01 19:38:10 apisix[15069]: /usr/local/apisix/apisix/cli/ops.lua:840: in function 'execute'
Sep 01 19:38:10 apisix[15069]: ./apisix/cli/apisix.lua:34: in main chunk
Sep 01 19:38:10 apisix[15069]: [C]: ?
Sep 01 19:38:10 systemd[1]: apisix.service: control process exited, code=exited status=1
Sep 01 19:38:10 systemd[1]: Failed to start apisix.
Environment
- APISIX version (run
apisix version):v2.15 - Operating system (run
uname -a):centos - OpenResty / Nginx version (run
openresty -Vornginx -V): - etcd version, if relevant (run
curl http://127.0.0.1:9090/v1/server_info):v3.5 - APISIX Dashboard version, if relevant:
- Plugin runner version, for issues related to plugin runners:
- LuaRocks version, for installation issues (run
luarocks --version):
No, you cannot (at least for now). The ETCD proxy is just a transparent proxy and you still have to use the gRPC protocol from APISIX, which has not been supported yet.
No, you cannot (at least for now). The ETCD proxy is just a transparent proxy and you still have to use the gRPC protocol from APISIX, which has not been supported yet.
@tokers fine,but if i want to decrease watch numbers(because my etcd cluster is high load),what should i do?modify the config_etcd.lua's syncdata function?
No, you cannot (at least for now). The ETCD proxy is just a transparent proxy and you still have to use the gRPC protocol from APISIX, which has not been supported yet.
@tokers fine,but if i want to decrease watch numbers(because my etcd cluster is high load),what should i do?modify the config_etcd.lua's syncdata function?
That would be error prone. We are releasing the apisix 3.0 which will use gRPC to communicate with etcd.
No, you cannot (at least for now). The ETCD proxy is just a transparent proxy and you still have to use the gRPC protocol from APISIX, which has not been supported yet.
@tokers fine,but if i want to decrease watch numbers(because my etcd cluster is high load),what should i do?modify the config_etcd.lua's syncdata function?
That would be error prone. We are releasing the apisix 3.0 which will use gRPC to communicate with etcd.
that's exciting,when we can use it?
A preview version of 3.0 will be released at the end of September.
3.0 has been Released. But it seems that the grpc part is not included?
ref: https://github.com/apache/apisix/issues/8229#issuecomment-1299698923
The gRPC support has now been removed: #10015