diff --git a/rootfs/etc/nginx/lua/balancer/ewma.lua b/rootfs/etc/nginx/lua/balancer/ewma.lua index afea01914..641b5e0b7 100644 --- a/rootfs/etc/nginx/lua/balancer/ewma.lua +++ b/rootfs/etc/nginx/lua/balancer/ewma.lua @@ -73,19 +73,21 @@ local function pick_and_score(self, peers, k) lowest_score_index, lowest_score = i, new_score end end - return peers[lowest_score_index] + return peers[lowest_score_index], lowest_score end function _M.balance(self) local peers = self.peers - local endpoint = peers[1] + local endpoint, score = peers[1], -1 if #peers > 1 then local k = (#peers < PICK_SET_SIZE) and #peers or PICK_SET_SIZE local peer_copy = util.deepcopy(peers) - endpoint = pick_and_score(self, peer_copy, k) + endpoint, score = pick_and_score(self, peer_copy, k) end + ngx.var.balancer_ewma_score = score + -- TODO(elvinefendi) move this processing to _M.sync return endpoint.address .. ":" .. endpoint.port end diff --git a/rootfs/etc/nginx/template/nginx.tmpl b/rootfs/etc/nginx/template/nginx.tmpl index a750a645c..575345838 100755 --- a/rootfs/etc/nginx/template/nginx.tmpl +++ b/rootfs/etc/nginx/template/nginx.tmpl @@ -1090,6 +1090,7 @@ stream { port_in_redirect {{ if $location.UsePortInRedirects }}on{{ else }}off{{ end }}; + set $balancer_ewma_score -1; set $proxy_upstream_name "{{ buildUpstreamName $location }}"; set $proxy_host $proxy_upstream_name;