1.准备工作。
结合本文场景,需要安装Nginx和Java环境(运行SpringBoot项目)。
1.1 关于Linux系统安装Nginx可以参考我的文章
1.2 由于只是测试,SpringBoot只是映射了根路径,端口分别是10001和10002,分别返回demo1和demo2字符串作为区分。
2.Nginx负载均衡的集中方式介绍
2.1 轮询
轮询方式是Nginx负载默认的方式,顾名思义,所有请求都按照时间顺序分配到不同的服务上,如果服务Down掉,可以自动剔除,如下配置后轮询7071、7072、888三个服务
upstream mukeUpServerUp {
server 127.0.0.1:7071;
server 127.0.0.1:8888;
server 127.0.0.1:7072;
}
2.2权重
指定每个服务的权重比例,weight和访问比率成正比,通常用于后端服务机器性能不统一,将性能好的分配权重高来发挥服务器最大性能,如下配置后7071、8888服务的访问比率会是7072服务的二倍。
upstream mukeUpServerUp {
server 127.0.0.1:7071 weight=2;
server 127.0.0.1:8888 weight=2;
server 127.0.0.1:7072 weight=1;
}
2.3 iphash
每个请求都根据访问ip的hash结果分配,经过这样的处理,每个访客固定访问一个后端服务,如下配置(ip_hash可以和weight配合使用)。
upstream mukeUpServerUp {
ip_hash;
server 127.0.0.1:7071 weight=2;
server 127.0.0.1:8888 weight=2;
server 127.0.0.1:7072 weight=1;
}
2.4 最少连接
将请求分配到连接数最少的服务上。
upstream mukeUpServerUp {
least_conn;
server 127.0.0.1:7071 weight=2;
server 127.0.0.1:8888 weight=2;
server 127.0.0.1:7072 weight=1;
}
2.5 fair
upstream mukeUpServerUp {
server 127.0.0.1:7071 weight=2;
server 127.0.0.1:8888 weight=2;
server 127.0.0.1:7072 weight=1;
fair;
}
3.Nginx配置
代理配置
location /v2/muke/ {
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_connect_timeout 300000;
proxy_send_timeout 600000;
proxy_read_timeout 600000;
proxy_pass http://mukeUpServerUp/v2/muke/;
}
负载配置
upstream mukeUpServerUp {
least_conn;
server 127.0.0.1:7071 weight=2;
server 127.0.0.1:8888 weight=2;
server 127.0.0.1:7072 weight=1;
}
测试
查看一下进程
top -p 2228,2291,2344
查看静止进程情况
使用Apache Jmeter 进行测试下
1000线程,循环三次
处于nginx访问监听
三个进程都有使用,说明配置成功了。
看一下接口最终的接口使用情况,由于本地代理的问题,错误率比较高。正常情况下是不会的