理解负载均衡
负载均衡就是internet的请求首先发送给nginx服务器,nginx服务器通过自己内部的调度策略分配给不同的服务器的过程就叫做负载均衡,形象的如下图表示
- 实现的效果
浏览器地址栏输入地址 http://192.168.11.3/edu/a.html 负载均衡效果,平均分配到8080和8081端口中 - 准备工作
准备两台tomcat,一台开放8080,一台开放8081,并且在两台tomcat的webapps下有相同的项目名字edu。
在linux的/usr/local/nginx/conf/nginx.conf
中修改成下面的代码
- 重载nginx (我之前启动过,因此这里需要重启,如果之前没有启动使用重载nginx的命令会报错)
./nginx -s reload
- 效果
nginx分配的策略
- 轮询
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除 - weight
weight表示权 重默认值为1 权重越高 被分配的客户端越多。
指定轮询几率 weight和访问比率成正比,用户后端服务器的性能不均的情况
upstream myserver {
server 192.168.11.3:8080 weight=10
server 192.168.11.3:8081 weight =10
}
- ip_hash
每个请求按访问ip的hash结果分配,这样每个访客访问一个后端服务器,可以解决session的问题
即 a用户访问网站用的是8080端口的服务器,那么下次再访问的时候他也只会访问8080端口
也或者 a用户访问的是服务器1,那么下次访问的时候也只会访问服务器1
upstream myserver {
ip_hash;//不能加weight
server 192.168.11.3:8080;
server 192.168.11.3:8081;
}
- fair
按后端服务器的响应时间来分配请求,响应时间短的优先分配
即一个请求轮询访问服务器池,谁先响应就将数据提交到前端
upstream myserver {
server 192.168.11.4;
server 192.168.11.3;
fair;
}