Welcome! Log In Create A New Profile

Advanced

Using round robin for load balancing if hash key is empty

Niklas Keller
May 22, 2019 04:02PM
Hey,

I'd like to propose falling back to round robin if the hash key is
empty. This allows using hashed cookie values for sticky sessions
while using round robin for all requests that do not carry any session
information and thus do not need the stickiness. While Nginx Plus
allows to use the learning mode, this patch avoids the need for
synchronization between multiple instances.

Instead of falling back to round robin automatically, this could also
be changed to offer a configuration option, but I think it's a
sensible default.

An additional configuration option could be added in the future to
change the fallback from round robin to another node selection
strategy.

You can find the patch at the end of this email.

Kind regards,
Niklas

# HG changeset patch
# User Niklas Keller <me@kelunik.com>
# Date 1558554036 -7200
# Wed May 22 21:40:36 2019 +0200
# Node ID 34015c26b7fe9bda83390d25d989acb109c8d1ea
# Parent 234373adb2ce6023e69e527cbf2b60adf70b1130
Use round-robin if hash key is empty

diff -r 234373adb2ce -r 34015c26b7fe
src/http/modules/ngx_http_upstream_hash_module.c
--- a/src/http/modules/ngx_http_upstream_hash_module.c Tue May 21
17:23:57 2019 +0300
+++ b/src/http/modules/ngx_http_upstream_hash_module.c Wed May 22
21:40:36 2019 +0200
@@ -178,7 +178,7 @@

ngx_http_upstream_rr_peers_rlock(hp->rrp.peers);

- if (hp->tries > 20 || hp->rrp.peers->single) {
+ if (hp->tries > 20 || hp->rrp.peers->single || hp->key.len == 0) {
ngx_http_upstream_rr_peers_unlock(hp->rrp.peers);
return hp->get_rr_peer(pc, &hp->rrp);
}
_______________________________________________
nginx-devel mailing list
nginx-devel@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-devel
Subject Author Views Posted

Using round robin for load balancing if hash key is empty

Niklas Keller 373 May 22, 2019 04:02PM

Re: Using round robin for load balancing if hash key is empty

Roman Arutyunyan 153 May 23, 2019 09:50AM

Re: Using round robin for load balancing if hash key is empty

Maxim Dounin 125 May 27, 2019 12:58PM

Re: Using round robin for load balancing if hash key is empty

Vladimir Homutov 143 May 23, 2019 11:22AM

Re: Using round robin for load balancing if hash key is empty

Niklas Keller 190 May 23, 2019 01:56PM

Re: Using round robin for load balancing if hash key is empty

Roman Arutyunyan 156 May 27, 2019 01:00PM

Re: Using round robin for load balancing if hash key is empty

Niklas Keller 149 May 27, 2019 05:02PM



Sorry, you do not have permission to post/reply in this forum.

Online Users

Guests: 311
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready