vlambda博客
学习文章列表

请问 一下nginx 负载均衡配置ip_hash会自动剔除 宕机的服务器吗?

upstream按照轮询(默认)方式进行负载,每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能 自动剔除。虽然这种方式简便、成本低廉。但缺点是:可靠性低和负载分配不均衡。适用于图片服务器集群和纯静态页面服务器集群。


答:

ip_hash 指令,用于实现会话保持功能,当某个客户端 多次请求定向到组内的一个服务器上,保证客户端与服务器建立稳定的会话。
只有当该服务器处于无效(down)状态时,客户端请求才会被下一个服务接收和处理。
简单的说就是 如果一个服务器没有 设置处于down状态,即使服务器出现问题,请求也是会发送到该服务器上,不能自动删除!

举例说明:
(1)
upstream bakend { 
ip_hash; 
server 192.168.0.1:8888; 
server 192.168.0.12:9999; 

如果192.168.0.1 服务器出现问题,那么请求还是会发送到该服务上面的。
如果你知道192.168.0.1 服务器出现问题,那么就设置成下面的配置:

upstream bakend { 
ip_hash; 
server 192.168.0.1:8888 down; 
server 192.168.0.12:9999; 

将192.168.0.1 标记位down ,那么次服务不参与负载均衡,也就没有请求 发送到该服务器上了。


参考:Nginx高性能Web服务器详解
参考:
Nginx的ip_hash指令:http://server.zzidc.com/fwqjs/222.html
nginx的upstream目前支持5种方式的分配  :http://blog.chinaunix.net/uid-20662363-id-3049712.html