Selection of server in upstream directive using hash

Roman Arutyunyan arut at nginx.com
Mon Oct 9 09:25:09 UTC 2017


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


More information about the nginx mailing list