确认下,自己开发的load_balance是什么?
建议直接使用:https://github.com/openresty/lua-resty-core/blob/master/lib/ngx/balancer.md
这个模块可以完全满足你的需求。
如果你就是基于balancer来做的,那么回答你的问题:
1. set_more_tries不会超过proxy_next_upstream_tries配置的次数
2. 配置了proxy_next_upstream和proxy_next_upstream_tries后,nginx会在其生效时再次进入balancer_by_lua_*阶段,其中就可以重新选择并设置peer.
在 2016年4月5日星期二 UTC+8下午5:56:40,Paul Von写道:
hi all,
问个nginx 里面proxy模块中proxy_next_upstream、proxy_next_upstream_tries指令的问题。这个地方设置了nginx在访问上游upstream失败时,会尝试连接其他的upstream服务器(proxy_next_upstream_tries次)。若我自己开发了某个load_balance模块,通过peer.get定义了某种算法选取upstream(假设该算法不是nginx里面自带的如rr算法、hash算法等),当在选取upstream且在访问upstream失败时,我在peer.free回调函数中指定了尝试次数,并开始连接下一个可用的upstream。
我的问题是
1. 在我自己编写load_balance模块时,改变选取算法并规定选取次数,会不会影响proxy_next_upstream及proxy_next_upstream_tries?
2. 如果配置了proxy_next_upstream及proxy_next_upstream_tries,那么其选取后端的逻辑是什么呢?会继续调用peer.get中的方式么?这两条指令使用的场景是?
谢谢
PS:还有个问题:proxy模块 和 load_balance模块的本质区别和联系是什么呢?它们的执行阶段是否有重叠?