最近在用 balancer 模块做一些流量调度的事情, 有几个问题:
第一, 启动的时候, upstream 除了使用 balancer_by_lua* 之外, 还要设置至少一个默认的backend, 如果在 balancer 流程中没有选择 backend, 这个默认的 backend就会被选择, 实际上, 我的流程如果没有选择出 backend, 希望能直接告诉用户没有后端可用, 或者输出一些其他的信息(现在在 filter 阶段做了处理, 但还是有走默认的逻辑), 不需要走默认, 有没有办法?
第二, 我的 balancer 逻辑有三次重试, 如果三次重试都因为网络失败, 前两次失败的时候, 代码会重新走到 balancer 中, 我调用 get_last_failure 可以得到 failed 的结果, 但是在三次失败之后, 代码不会走到 balancer中, 跳到下一个阶段, 我在 log_by_lua* 阶段再调用get_last_failure, 得到的是502(实际上还是 failed), 有没有办法在 log 之前就拿到最后一次的请求结果, 或者是在 log 阶段拿到真正的 upstream 结果, 而不是被 nginx 处理过的502
thanks