ip_hash in active_active nginx setup

Maxim Dounin mdounin at mdounin.ru
Thu May 21 18:32:43 UTC 2015


On Thu, May 21, 2015 at 12:14:36PM -0400, s_n wrote:

> Hi all,
> we want to use a F5 loadbalancer in front of two nginx instances, which
> balance the load to our app-nodes.
> The F5 loadbalancer distributes incoming requests via round-robin algorithm
> to the two nginx instances.
> The nginx instances should be configured to use ip_hash to distribute the
> requests to the addnodes ensuring sticky sessions. Specific customer
> requirements make the use of cookies to ensure sticky sessions impossible.
> I understand, that all nginx instances use the same function to hash the IP
> adress. But i am not sure if the distribution of the hash values to the
> appnodes happens in a consistent way.
> I came across the following discussion on github which indicates that the
> same IP address may be forwarded to different appnodes in the scenario
> described above:
> http://serverfault.com/questions/511763/do-multiple-nginx-servers-load-balance-the-same-ip-address-to-the-same-backend-w
> Long story short / tl;dr:
> Will different nginx instances forward requests from the same IP always to
> the same appnode when using ip_hash as a load balancing method?

As long as you use identical lists of servers in the upstream{} 
blocks on your nginx instances, balancing on instances should be 

Note though, that if an upstream server is considered down due to 
errors, nginx will re-route requests to other servers, see 
And since different instances (and even different worker processes) 
may see different errors, this re-routing may be different.

That is, ip_hash balancing method does not guarantee that all 
requests from a specific IP address will be routed to a given 
upstream server.  Rather, it's a method to minimize (but not to 
eliminate) migration of users between upstream servers.  Obviously 
enough, it's not possible to completely eliminate migration as 
long as upstream servers may fail.

Maxim Dounin

More information about the nginx mailing list