这篇博客大部分搬运于尚硅谷谷粒学院对Nginx的介绍。仅在每个策略下加上自个的描述。


随着互联网信息的爆炸性增长,负载均衡(load balance)已经不再是一个很陌生的话题。

顾名思义,负载均衡即是将负载分摊到不同的服务单元,既保证服务的可用性,又保证响应足够快,给用户很好的体验。

快速增长的访问量和数据流量催生了各式各样的负载均衡产品,很多专业的负载均衡硬件提供了很好的功能,但却价格不菲,这使得负载均衡软件大受欢迎,nginx 就是其中的一个,在 linux 下有 Nginx、LVS、Haproxy 等等服务可以提供负载均衡服
务,而且 Nginx 提供了几种分配方式(策略):

  1. 轮询(默认):
    这个应该比较好理解,就是轮流来,刚刚是你,现在就是我了。如果不更改策略则默认就是这个。
    下面看看尚硅谷的解释:
    每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除。
  2. weight:
    尚硅谷的解释:
    weight 代表权,重默认为 1,权重越高被分配的客户端越多.
    这个好理解,可以给每一个服务器设置权重,哪一个处理性能强一点就给的权重多一点,或者是别的业务需求等等。weight 和访问比率成正比,用于后端服务器性能不均的情况。
    具体配置,在upstream上的每个server元素后面添加weight值即可:
upstream server_pool{
server 192.168.5.21 weight=10;
server 192.168.5.22 weight=10; }
  1. ip_hash:
    尚硅谷解释:
    每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器,可以解决 session 的问题。
    简单说,就是每个ip固定一个服务器为其服务。
    打个比方,我上网买书,发现一家店很nice,于是每回都去那里买,就认准了那家。同理我们的请求也是一样,每次请求过来就认准了那个服务器。
    具体实现是,在upstream里面添加ip_hash即可:
upstream server_pool{
ip_hash;
server 192.168.5.21:80;
server 192.168.5.22:80; }
  1. fair:

尚硅谷解释:

按后端服务器的响应时间来分配请求,响应时间短的优先分配。

这个就很明确了,具体配置实现,在upstream里面添加fair即可:

upstream server_pool{
server 192.168.5.21:80; server 192.168.5.22:80;
fair; }

关于负载均衡的具体配置实例,以后会更新出来,谢谢您的观看🙏