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