1. 案例
1.1 环境准备
- Nginx
- 2个tomcat实例:8080、8081
1.2 实现效果
访问服务器9002端口,依次请求2个tomcat实例
1.3 修改Nginx配置文件
upstream myserver {
server 127.0.0.1:8080;
server 127.0.0.1:8081;
}
server {
listen 9002;
server_name 192.168.25.131;
location / {
proxy_pass http://myserver;
}
}
- 在http块内部增加upstream,配置负载均衡的服务列表
- proxy_pass 改成 upstream 配置的名称 myserver 即可
1.4 测试
浏览器访问 http://192.168.25.131:9002/first/a.html,第一次输出8080
刷新后输出8081
再刷新又变成8080
2. 负载均衡策略对比
2.1 轮询
轮询是Nginx默认的负载均衡策略,顾名思义,所有请求依次按顺序分配到不同的服务。上面我们做的案例,就是轮询。
2.2 权重
指定每个服务的分配比例,我们把上面的配置修改一下
upstream myserver {
server 127.0.0.1:8080 weight=2;
server 127.0.0.1:8081 weight=1;
}
- 8080配置weight=2
- 8081配置weight=1
- 因此,8080的分配请求数是8081的2倍
- 最终请求顺序是这样的:8080, 8080, 8081, 8080, 8080, 8081…
2.3 iphash
每个请求根据访问 ip 的 hash 结果分配,因此,同一个来源 ip 将分配到固定的服务上。配置方式如下:
upstream myserver {
ip_hash;
server 127.0.0.1:8080;
server 127.0.0.1:8081;
}
2.4 fair
按后端服务器的响应时间来分配请求,响应时间越短,分配的请求越多
upstream myserver {
fair;
server 127.0.0.1:8080;
server 127.0.0.1:8081;
}