` nginx(五) | 听云轩

nginx(五)

配置nginx的负载均衡

nginx负载均衡是通过upstream模块来实现的,内置实现了三种负载策略。

1、轮询(默认)

nginx根据请求次数,将每个请求均匀分配到每台服务器。

2、最少连接

将请求分配给连接数最少的服务器。nginx会统计哪些服务器的连接数最少。

3、IP hash

绑定处理请求的服务器。第一次请求时,根据该客户端的IP算出一个hash值,将请求分配到集群中的某一台服务器上。后面该客户端的所有请求,都将通过这台服务器处理。

  • 配置轮询

思路:通过upstream定义一组主机,然后通过proxy_pass转发给这组主机。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
http {
upstream tomcats{
server 192.168.1.1:8080;
server 192.168.1.2:8080;
server 192.168.1.3:8080;
}
server {
listen 80;

location / {
proxy_pass http://tomcats ;
}
}
}
  • 我们可以通过修改权重weight,实现非等价的负载均衡。
1
2
3
4
5
upstream tomcats{
server 192.168.1.1:8080 weight=2; #2/6次
server 192.168.1.2:8080 weight=1; #1/6次
server 192.168.1.3:8080 weight=3; #3/6次
}
  • max_fails

默认为1,某台server允许请求失败的次数,超过这个次数,在fail_timeout时间内,新的请求不会发送给它,表示无法到达;如果为0,则会标记它会永久无效的状态。

  • fail_timeout

默认为10秒,某台服务器达到max_fail次失败后,在这个时间内,不会将请求分配给它。

1
2
3
4
5
upstream tomcats{
server 192.168.1.1:8080 weight=2 max_fails=3 fail_timeout=15;
server 192.168.1.2:8080;
server 192.168.1.3:8080;
}
  • max_conns

限制分配给服务器的最大连接数量(1.5.9以后才有),为0表示不限制。

1
2
3
upstream tomcats{
server 192.168.1.1:8080 max_conns=1000;
}
  • resolve

指定DNS服务器,需要在HTTP模块下配置resolver指令。

1
2
3
4
5
6
7
8
9
http {
resolver 10.0.0.1;

upstream tomcats {
zone ....;

server example.com resolve;
}
}

表示example.com域名,由10.0.0.1服务器负责解析。

------ 本文结束 ------
您的支持将鼓励我继续创作