基于Nginx的负载均衡,使用Docker搭建Tomcat集群
Tomcat单机与集群
- 单机(同个session)
- 集群(session不共享)
Nginx负载均衡
- 轮询(默认)
实现简单,不考虑每台服务器处理能力。
服务器down掉,能自动剔除。
upstream www.mynginx.com { server 127.0.0.1:8081; server 127.0.0.1:8082; server www.mynginx.com:8083; }
- 权重
会考虑每台服务器处理能力的不同,weight默认值是1。
多个配置权重节点,比较的是相对值,而不是’次数’
用于各个服务器性能不均匀场景。
upstream www.mynginx.com { server 127.0.0.1:8081 weight=5; server 127.0.0.1:8082 weight=10; server www.mynginx.com:8083 weight=20; }
- ip hash
根据ip hash的结果分配访问服务器(决定因素ip地址),能够实现同一个用户访问同一台服务器,可以解决session的问题。
可用于数据分片存储场景。
upstream www.mynginx.com { ip_hash; server 127.0.0.1:8081; server 127.0.0.1:8082; server www.mynginx.com:8083; }
- url hash(nginx插件,第三方)
按访问url的hash结果来分配请求,能实现同一个url访问同一台服务器
根据usr hash分配请求会不平均,请求频繁的url会请求到同一台服务器上
可用于高频请求资源做缓存,每次访问从缓存取的场景。
upstream www.mynginx.com { hash $request_url; server 127.0.0.1:8081 ; server 127.0.0.1:8082 ; server www.mynginx.com:8083 ; }
- fair(第三方)
是一个按服务器响应时间来分配请求,响应时间短的优先分配。
upstream www.mynginx.com { fair; server 127.0.0.1:8081; server 127.0.0.1:8082; server www.mynginx.com:8083; }
负载均衡综合配置使用
upstream www.mynginx.com {
fair;
server 127.0.0.1:8081 down;(down:该server暂时不参与负载)
server 127.0.0.1:8082 weight=2;(weight默认为1,值越大,负载权重就越大)
server www.mynginx.com:8083;
server www.mynginx.com:8084 backup; (其他非backup在down/繁忙的时候,会请求该机器)
}
Nginx+Tomcat搭建集群
1.使用docker快速搭建两个Tomcat (tomcat1 tomcat2)
2.目前两个tomcat是访问不到任何东西的(最新Tomcat镜像是如此),因为webaps中什么也没有,需要将webapps.dist中所有文件copy到webapps中。
以容器tomcat2为例: cp webapps.dist/* webapps -r
3.为了区别两个Tomcat,对容器tomcat2做一点改动。
注意:在容器中无法使用vim命令(bash: vim: command not found)
解决方法:apt-get update apt-get install vim
以上两个命令速度很慢,换种做法
使用docker cp命令将容器内文件拷贝出来
docker cp tomcat2:/usr/local/tomcat/webapps/ROOT/index.jsp ./
4.修改index.jsp文件并拷贝到容器内进行覆盖
docker cp index.jsp tomcat2:/usr/local/tomcat/webapps/ROOT/index.jsp
5.查看8080端口和8081端口:
6.下载nginx(Nginx官网)
7.解压进入nginx .conf并进行相应配置
8.配置完成后:
a.创建nginx容器对应挂载目录
b.上传该配置文件到nginx配置文件挂载目录
9.创建并启动nginx容器
docker run -id -p 80:80 --name nginx -v /usr/local/docker/nginx/index:/usr/share/nginx/html -v /usr/local/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /usr/local/docker/nginx/logs:/var/log/nginx nginx
10.浏览器访问ip地址
Session不共享问题
在tomcat集群情况下,由于用户每次请求访问,访问的服务器站点可能是不同的,就会产生不同的session,于是出现了session不共享问题。
Session共享解决方案
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/137155.html