介绍

负载均衡就是将大量的请求按照某种方式均衡分配给集群中的服务器,防止大量请求只请求一台服务器,从而导致服务崩溃。

负载均衡

轮询策略

Nginx负载均衡策略(内置)主要有四种:

  • 轮询策略(默认的负载均衡策略)
  • 最少连接数负载均衡策略
  • ip-hash负载均衡策略
  • 权重负载均衡策略

轮询策略

轮询负载策略是指每次将请求按顺序轮流发送至相应的服务器上:

1
2
3
4
5
6
7
8
9
10
11
12
upstream server_list {
server 111.229.10.76:8080;
server 113.12.43.122:8080;
server 119.33.31.61:8080;
}

server{
listen 80;
location /{
proxy_pass: http://myapp;
}
}

最少连接数负载均衡策略

此策略是指每次将请求分发到当前连接数最少的服务器上,也就是 Nginx 会将请求试图转发给相对空闲的服务器以实现负载均衡,它的配置示例如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
   #负载均衡
upstream server_list {
least_conn;
server 111.229.10.76:8080;
server 113.12.43.122:8080;
server 119.33.31.61:8080;
}

server{
listen 80;
location /{
proxy_pass: http://myapp;
}
}

ip-hash 负载均衡策略

ip-hash 负载均衡策略可以根据客户端的 IP,将其固定的分配到相应的服务器上,配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
   #负载均衡
upstream server_list {
ip-hash;
server 111.229.10.76:8080;
server 113.12.43.122:8080;
server 119.33.31.61:8080;
}

server{
listen 80;
location /{
proxy_pass: http://myapp;
}
}

加权负载均衡

此配置方式是指每次按照服务器配置的去权重进行请求分发,权重高的服务器会收到更多的请求,这就相当于给 Nginx 在请求分发时加了一个参考的权重选项,并且这个权重值是可以人工配置的,我们可以将服务器配置高的调的权重相对高一些,以便承担更多请求:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
upstream server_list {
server 111.229.10.76:8080 weight=5;
server 113.12.43.122:8080 weight=2;
server 119.33.31.61:8080 weight=1;
server 43.12.12.31:8080 backup;
server 12.31.23.44:8080 down;
}

server{
listen 80;
location /{
proxy_pass: http://myapp;
}
}

其中,8次请求中,有5次发给了权重为5的服务器,2次发给了权重为2的服务器,1次发给了权重为1的服务器,down代表临时不参与负载,backup代表其他全部的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻