1. 负载均衡基本策略配置
1.1 weight(权重)配置
weight表示当前服务器承载的业务比例。假设现在有两台服务器A和B组成集群,但是A和B的配置不一样,A的性能更好些,那么此时我们希望服务器A能承载更多的业务,服务器B承载更少的业务,那么我们就可以给A和B分别配置相应的权重。
比如,图中我们可以给A和B分别配置weight=8及weight=2,表示外来的访问请求有80%的概率会由nginx转发至A服务器处理,有20%的概率由nginx转发至B服务器进行处理。通过这种简单的配置能更好地实现灵活的负载均衡。
1.2 down(下线)配置
down表示下线,即当一台服务器出故障时,为了不影响业务,我们配置down,将这台业务服务器下线,那么nginx就不会将请求转发至该服务器进行处理。
如图所示,如果我们将服务器A设置为down,则nginx服务器不会将请求转发到A,而是只会转发到B。这种策略配置实际上用的并不多,毕竟在生产环境中,很少主动让服务器下线的,被动下线更加用不到这个配置了。
1.3 backup(备份)配置
backup表示备份服务器,即当出现严重故障导致集群其它服务器都不可用时,就会启用备份服务器,保证业务的正常运行
如图,当A和B都不可用时,请求才会转到C,如果A和B有一台可用,则不会转到C
2. 负载均衡会话保持策略(了解即可)
上面的几种策略都存在一个问题,那就是当nginx进行代理转发时,每次都是转发到随机的一台服务器上,无法进行会话的保持。那么这里有几种策略可以进行会话的保持。以下几种策略仅作了解即可,实际生产环境中用的不多,因为无法动态上下线服务器,不够灵活。
2.1 ip_hash策略
根据客户端的IP地址转发同一台服务器,可以保持会话。但是这个实际并不常用,因为当客户端是移动端的情况下,IP是随时发生变化的,如果采取这种策略,会导致会话无法保持,达不到预期的效果。
2.2 least_conn
根据最少连接数转发请求,连接数少的服务器就优先转发。保证后端服务器负载更均衡,但是不支持服务器动态上下线(及时部署新的服务器)。
2.3 fair
根据后端服务器响应时间转发请求,优先转发至响应时间短的服务器。这种策略容易受网络波动影响,造成流量都倾斜到单台服务器上。
2.4 url_hash
根据访问的url地址转发到同一台服务器,实现定向流量转发。这个实际上无法保持会话,因为实际上同一个用户访问不同的url可能会转发到不同的服务器上。因此,这个策略的使用适用于访问固定资源(不在同一服务器)的场景
3. 简单例子,配置权重,下线和备份
这里简单配置以下权重weight,下线down和备份backup,这里我们只有两台服务器A和B,我们先配置一台权重为8,另一台权重为2,如下,配置好后使用systemctl reload nginx重新加载nginx配置
此时,访问大概率是被转发到192.168.66.218上,仅有少部分请求会转发到192.168.66.1上。
此时,我们修改配置将192.168.66.1作为备份
则所有请求都会转发至192.168.66.128
若是停掉192.168.66.128的服务,则所有请求则会转发至192.168.66.1
再次修改配置,开启192.168.66.128的服务,并让192.168.66.128下线:
会发现,此时只会访问192.168.66.1.