Nginx 配置负载均衡
ps: 我这里给出的配置文件中的 upstream 、server 都是 在 nginx.conf 的 http 下的 修改后记得重新加载下配置文件
nginx -s reload
# 1. 常用配置
配置文件如下
# 负载到 8080 和 8089 端口上 ; weight默认是1 ,越大则权重越高
upstream webservers{
server 127.0.0.1:8080 weight=1;
server 127.0.0.1:8089 weight=1;
}
server {
# 监听端口
listen 8888;
server_name localhost;
# 将请求转发到进行负载
location / {
# 转发到负载服务上,就是上面定义的负载
proxy_pass http://webservers;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 2. 其他负载策略
默认情况下,nginx采用的是轮询策略,nginx还提供了其他几种常用的负载均衡配置 常见可选操作
- down 表示单前的server暂时不参与负载weight 默认为1
- weight越大,负载的权重就越大
- max_fails : 允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误
- fail_timeout:max_fails次失败后,暂停的时间
- backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻
# 1、ip_hash
每个请求按访问IP的hash结果进行分配,这样每个访客就可以固定访问一个后端服务,一定程度上可以解决session问题;
upstream webservers{
ip_hash;
server 127.0.0.1:8080;
server 127.0.0.1:8089;
}
1
2
3
4
5
2
3
4
5
# 2、weight
weight代表权重,默认为1,权重越高,被分配的客户端请求就会越多
upstream webservers{
server 127.0.0.1:8080 weight=8;
server 127.0.0.1:8089 weight=2;
}
1
2
3
4
2
3
4
# 3、fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的将会被优先分配
upstream webservers{
fair;
server 127.0.0.1:8080;
server 127.0.0.1:8089;
}
1
2
3
4
5
2
3
4
5
# 4、url_hash
按访问URL的hash结果分配。这样相同的url会被分配到同一个节点,主要为了提高缓存命中率。比如,为了提高访问性能,服务端有大量数据或者资源文件需要被缓存。使用这种策略,可以节省缓存空间,提高缓存命中率
upstream webservers{
hash &request_uri;
server 127.0.0.1:8080;
server 127.0.0.1:8089;
}
1
2
3
4
5
2
3
4
5
# 5、least_conn
按节点连接数分配,把请求优先分配给连接数少的节点。该策略主要为了解决,各个节点请求处理时间长短不一造成某些节点超负荷的情况。
upstream webservers{
least_conn;
server 127.0.0.1:8080;
server 127.0.0.1:8089;
}
1
2
3
4
5
2
3
4
5
上次更新: 2023/01/07, 19:34:27