获取测试包
- 链接:https://pan.baidu.com/s/113o5XXeqqYIn3SWRRWuEPQ 提取码:soj8,
java -jar just-change-port-0.0.1-SNAPSHOT.jar --server.port=8088
启动测试包,server.port表示项目监听的端口号,可以自己设置。 , 访问后应该是这样的首页。
Nginx负载均衡方式
- 轮询(默认方式) 请求按顺序分发给rs
- 权重 每台服务器给定一个weight(权重值), 权重高的会收到更多的请求,,可以根据rs性能不同设置不同权重。
- ip_hash 将请求ip的hash值对应某台机器,同一个ip只会访问同一台rs。
单机器负载均衡配置
本次配置会将访问vip(h128:8080)的请求分发到rs的8081、8082、8083端口,并分别测试三种负载均衡方式。
-
修改配置文件
vim nginx.conf
在http块下添加
upstream rs { server 192.168.100.128:8081; server 192.168.100.128:8082; server 192.168.100.128:8083; } server { listen 8080; server_name h128; location /{ proxy_pass http://rs/; } }
upstram块命名了叫rs的server群, server块中将访问h128:8080端口的的请求转发给rs群,通过负载算法绝对访问哪个端口。 这种是默认的轮询方式。 重新加载nginx或重启
service nginx reload
-
在测试机8081、8082、8083端口启动测试项目。
# nohup启动 8081 nohup java -jar just-change-port-0.0.1-SNAPSHOT.jar --server.port=8081 >> 8081.nohup & # nohup启动 8082 nohup java -jar just-change-port-0.0.1-SNAPSHOT.jar --server.port=8082 >> 8082.nohup & # nohup启动 8083 nohup java -jar just-change-port-0.0.1-SNAPSHOT.jar --server.port=8083 >> 8083.nohup &
、
、
-
访问h128:8080端口,发现已经可以在不同端口轮询。
、
、
-
权重方式配置:
upstream rs { server 192.168.100.128:8081 weight=1; server 192.168.100.128:8082 weight=4; server 192.168.100.128:8083 weight=7; }
重新加载配置文件, 重新访问http://h128:8080/后发现weight更高的收到请求更多。
-
ip_hash配置:
upstream rs { ip_hash; server 192.168.100.128:8081; server 192.168.100.128:8082; server 192.168.100.128:8083; }
现在访问8080端口只能访问8082端口的项目。
。 因为ip_hash会固定访问的rs。
多机器负载均衡
- 获取测试项目 链接:https://pan.baidu.com/s/1iNn2q_07IVh4uKlehDOTuQ 提取码:tfoo ,,改进了一下,可以显示访问的服务器ip和端口号,也可以自己设置。
- 准备几台机器用于运行测试项目。
, 我有128、129、130三台 ,,
- 每台机器上运行测试项目
# 128上 nohup java -jar just-change-port-0.0.2-SNAPSHOT.jar --server.ip=192.168.100.128 --server.port=8090 & nohup java -jar just-change-port-0.0.2-SNAPSHOT.jar --server.ip=192.168.100.128 --server.port=8091 & nohup java -jar just-change-port-0.0.2-SNAPSHOT.jar --server.ip=192.168.100.128 --server.port=8092 & # 129上 nohup java -jar just-change-port-0.0.2-SNAPSHOT.jar --server.ip=192.168.100.129 --server.port=8090 & # 130上 nohup java -jar just-change-port-0.0.2-SNAPSHOT.jar --server.ip=192.168.100.130 --server.port=8090 &
现在 129、130机器的8090端口,以及128机器上的8090、8091、8092端口都已经监听。
-
修改128上的配置文件: 添加
upstream machines { server 192.168.100.128:8090; server 192.168.100.128:8091; server 192.168.100.128:8092; server 192.168.100.129:8090; server 192.168.100.130:8090; } server { listen 8900; server_name h128; location /{ proxy_pass http://machines/; } }
-
测试: 访问192.168.100.128:9000。如果不行检查防火墙是否关闭,端口是否开发,先试试直接访问ip:port。 nginx下的logs目录查看日志。