默认情况下不会自动剔除,但是有默认的max_fails参数和fail_timeout参数可以让nginx判断请求的服务器是否down,若down,则会再hash选择下一台服务器。
ip_hash 指令,用于实现会话保持功能,当某个客户端 多次请求定向到组内的一个服务器上,保证客户端与服务器建立稳定的会话。 只有当该服务器处于无效(down)状态时,客户端请求才会被下一个服务器接收和处理。 简单的说就是 如果一个服务器没有 设置处于down状态,即使服务器出现问题,请求也是会发送到该服务器上,不能自动删除! 举例说明:
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负载均衡中摘除一段时间,你必须其标记为“down”,而不是直接从配置文件中删除或注释掉该后端服务器的信息。代码示例如6-6:
这样,当原来为4台后端服务时,摘除backend3.example后,Nginx仍然会按4台服务器进行哈希。如果直接注释掉“server backend3.example.com”这行,Nginx会按照3台服务器进行重新哈希,原来被哈希到backend1.example.com的客户端IP有可能被哈希backend2.example.com服务器上,原有的SESSION会失效。