• 幕客老师召集小伙伴
  • 运维高手36项修炼
  • python自动化运维项目实战
  • nginx从入门到实战
  • 阿里云与Centos7实战

负载均衡nat模式对nginx的ip_hash影响分析

一、什么情况下我们需要nginx用到ip_hash算法?

当nginx后台的服务需要保持session会话时,我们需要把同一个IP过来的请求,定向到后台同一服务上去,这样来保持session的会话连接。

二、问题来了 

如果前段负载均衡采用fullnat的模式,那么nginx端收到SRC_IP,都是负载均衡的IP,那么这时ip_hash就相当于把所有的请求同时往一台服务器推送。这样的效果适得其反。

 

三、所以,即要保证ip_hash的正常运行,又的去修改前段负载均衡设备的轮训策略,怎么办呢?

方法一、也是一种老方法,编译一个模块ngx_http_upstream_consistent_hash 模块是一个负载均衡器,使用一个内部一致性hash算法来选择合适的后端节点。

方法二、新方法

在nginx1.8.0稳定版本出来后,把原有的upsteam 的hash的算法增加了许多种,其中一种就是,可以允许对自定义key进行一致性hash。官方描述如下:

 

The generic hash method: the server to which a request is sent is determined from a user-defined key which may be a text, variable, or their combination. For example, the key may be a source IP and port, or URI:

upstream backend {
    hash $request_uri consistent;

    server backend1.example.com;
    server backend2.example.com;
}

The optional consistent parameter of the hash directive enables ketama consistent hash load balancing. Requests will be evenly distributed across all upstream servers based on the user-defined hashed key value. If an upstream server is added to or removed from an upstream group, only few keys will be remapped which will minimize cache misses in case of load balancing cache servers and other applications that accumulate state.

 

[申明:欢迎转载,但请注明出处 http://imoocc.com 原创]

负载均衡nat模式对nginx的ip_hash影响分析

Pingbacks已打开。

引用地址

暂无评论

发表评论