负载均衡实例
预期效果:在浏览器中请求a.html,该请求可以被分发到2个tomcat服务器中,以此来分担压力;
1.配置tomcat
在linux服务器中安装2个tomcat;
修改tomcat目录下的server.xml,使tomcat1监听8080端口,tomcat2监听8081端口;
在两个tomcat的webapp目录中都放入文件夹test,test中放入a.html;
tomcat1中的a.html:访问时会显示8080
<h1>8080</h1>
tomcat2中的a.html:访问时会显示8081
<h1>8081</h1>
分别启动两个tomcat:进入tomcat的bin目录,执行./startup.sh
cd apache-tomcat-8080/bin
./startup.sh
查看是否启动成功:
ps -ef|grep tomcat
如果显示两个tomcat的进程信息则启动成功;
可以看到启动成功;tomcat1的进程id是 26707;tomcat2的进程id是26802;
2.在nginx中配置负载均衡
需要修改nginx安装目录下的conf目录中的nginx.conf;
1)负载均衡需要的配置
ngnix提供了几种负载均衡的分配策略:
1】轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除。
2】weight
weight 代表权,重默认为 1,权重越高被分配的客户端越多
指定轮询几率, weight 和访问比率成正比,用于后端服务器性能不均的情况。
例如:
upstream server_pool{
server 192.168.5.21 weight=10;
server 192.168.5.22 weight=10;
}
3】ip_hash
每个请求按访问 ip 的 hash 结果分配,
这样每个访客固定访问一个后端服务器,可以解决 session 的问题。
也就是你用这个ip访问,会分配一个服务器,后面再次用这个ip访问的都是同一个服务器;
例如:
upstream server_pool{
ip_hash;
server 192.168.5.21:80;
server 192.168.5.22:80;
}
4】fair (第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
例如:
upstream server_pool{
server 192.168.5.21:80;
server 192.168.5.22:80;
fair;
}
2)实际操作
在nginx中为tomcat1和tomcat2配置负载均衡;
为了简单用默认策略;
本机ip可以用命令:ifconfig来查看;
首先http全局块中加上一个upstream + 自己起的名字;
表示进行负载均衡的服务器的列表;
upstream myserver{
server 192.168.10.112:8080;
server 192.168.10.112:8081;
}
在server块的location中加上一个规则:
location / {
proxy_pass http://myserver;
root html;
index index.html index.htm;
}
这里的规则名字要和前面一样,例如这里叫myserver;
重启nginx让配置生效:
切换到sbin目录,执行重载命令
./nginx -s reload
3)测试效果
在本机访问a.html
http://192.168.10.112/test/a.html
结果:
刷新
可以看到:访问同一地址时,可以访问到不同的tomcat;