Hi Ruben, On Mon, Oct 09, 2017 at 11:51:54AM +0200, Ruben wrote: > First of all thanks for your reply. But what happens if I have for example > a hostname: test, which resolves to a randomized list of multiple ip's. > Such that when I do: > > dig test > 10.0.0.8 > 10.0.0.9 > 10.0.0.10 > > and a few moments later > > dig test > 10.0.0.10 > 10.0.0.8 > 10.0.0.9 > > Is it then still consistent on the ip's or is the consistency just on the > name "test" in this case?
The consistency is only about choosing the name "test". Once the name is chosen (consistently), its ips are balanced by the round-robin balancer. With this approach you can change ips of your server or add new addresses to it and everything will keep working as before. However, you cannot stick to a particular ip address of a server. > From the docs I read that it resolves the hostname and injects the ip's as > server when multiple ip's are returned. But it's not completely clear on > which the hash is acting. > > I am asking this, because docker constantly returns a randomized fixed list > of ip's (for dns load balancing). But I always want to route a user, > targetting for some url, to the same container. In the commercial version of nginx we have the sticky module, which can be used to solve your issue: http://nginx.org/en/docs/http/ngx_http_upstream_module.html#sticky > 2017-10-09 11:25 GMT+02:00 Roman Arutyunyan <a...@nginx.com>: > > > Hi Ruben, > > > > On Mon, Oct 09, 2017 at 09:33:55AM +0200, Ruben wrote: > > > I was wondering what the selection algorithm is for choosing a server in > > > the upstream directive using hash. Is the selection based on the ip of > > the > > > server or is it based on the position of the list. > > > > > > So if I have for example the following configuration: > > > > > > upstream test { > > > hash $arg_test; > > > server 10.0.0.10; > > > server 10.0.0.9; > > > server 10.0.0.8; > > > } > > > > > > or (ip's in different order) > > > > > > upstream chat { > > > hash $arg_test; > > > server 10.0.0.8; > > > server 10.0.0.9; > > > server 10.0.0.10; > > > } > > > > > > If someone is targeting an url with ?test=1, is it in both configs > > directed > > > to the same ip or not. So is the selection based on the ip or based omn > > the > > > position in the list. > > > > The regular (non-consistent) hash balancer selects a server based on the > > position in the list. However, the consistent hash balancer > > (hash $arg_test consistent) makes a selection based on the server name/ip > > specified in the "server" directive. > > > > -- > > Roman Arutyunyan > > _______________________________________________ > > nginx mailing list > > nginx@nginx.org > > http://mailman.nginx.org/mailman/listinfo/nginx > > > _______________________________________________ > nginx mailing list > nginx@nginx.org > http://mailman.nginx.org/mailman/listinfo/nginx -- Roman Arutyunyan _______________________________________________ nginx mailing list nginx@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx