upstream-hash-by should override load-balance annotation
This commit is contained in:
parent
6cb28e059c
commit
992a68de23
3 changed files with 11 additions and 5 deletions
File diff suppressed because one or more lines are too long
|
@ -61,6 +61,10 @@ local function balance()
|
||||||
|
|
||||||
if backend["upstream-hash-by"] then
|
if backend["upstream-hash-by"] then
|
||||||
local endpoint = resty_balancer.balance(backend)
|
local endpoint = resty_balancer.balance(backend)
|
||||||
|
if not endpoint then
|
||||||
|
return nil, nil
|
||||||
|
end
|
||||||
|
|
||||||
return endpoint.address, endpoint.port
|
return endpoint.address, endpoint.port
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -90,14 +94,15 @@ local function sync_backend(backend)
|
||||||
|
|
||||||
local lb_alg = backend["load-balance"] or DEFAULT_LB_ALG
|
local lb_alg = backend["load-balance"] or DEFAULT_LB_ALG
|
||||||
|
|
||||||
|
if backend["upstream-hash-by"] or lb_alg == "round_robin" then
|
||||||
|
resty_balancer.reinit(backend)
|
||||||
|
end
|
||||||
|
|
||||||
-- TODO: Reset state of EWMA per backend
|
-- TODO: Reset state of EWMA per backend
|
||||||
if lb_alg == "ewma" then
|
if lb_alg == "ewma" then
|
||||||
ngx.shared.balancer_ewma:flush_all()
|
ngx.shared.balancer_ewma:flush_all()
|
||||||
ngx.shared.balancer_ewma_last_touched_at:flush_all()
|
ngx.shared.balancer_ewma_last_touched_at:flush_all()
|
||||||
return
|
|
||||||
end
|
end
|
||||||
|
|
||||||
resty_balancer.reinit(backend)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
local function sync_backends()
|
local function sync_backends()
|
||||||
|
|
|
@ -32,6 +32,7 @@ end
|
||||||
function _M.balance(backend)
|
function _M.balance(backend)
|
||||||
local instance = instances[backend.name]
|
local instance = instances[backend.name]
|
||||||
if not instance then
|
if not instance then
|
||||||
|
ngx.log(ngx.ERR, "no LB algorithm instance was found")
|
||||||
return nil
|
return nil
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue