Tomcat集群入门
一、Tomcat集群的优点
- 提高服务的性能,并发能力,以及高可用性
- 提高项目架构的横向扩展能力
二、Tomcat集群实现、架构转换图、问题、解决方法
2.1 通过Nginx负载均衡进行请求转发
2.2 实训项目初步架构图
2.3 实训项目Tomcat集群架构图
2.4 Session的问题
Session登录信息存储即读取的问题,Session没有共享,例如在Tomcat1中保留了登录信息Session,下订单的时候负载均衡到Tomcat2中,则电商平台会提示请登录的情况
2.5 服务器定时任务并发的问题
例如在电商平台下订单的时候,如果长期没有付款会自动关闭,并把库存释放,假设设置了1分钟定时器后,每1分钟后鉴定这1分钟需要关闭的订单,那么多台Tomcat都会启动,它们去读取SQL,然后判断订单,容易导致数据错乱
2.6 解决Session登录问题
可以采用nginx ip hash policy,可以不改变现有技术架构,直接实现横向扩展,但在实际中不会常用,有因为会导致服务器负载不平均,完全依赖ip hash,并且在客户IP变化的环境下无法服务
2.7 针对以上问题,实训项目Tomcat集训架构图修改如下
多台tomcat请求session的时候,都会请求到redis session server中,例如user1无论负载到哪台Tomcat中,,都会将session信息存储到redis session server中,利用分布式redis还可以实现分布式锁,来解决多台Tomcat一起同时启动定点任务的问题,如果不实现分布式锁,则会造成CPU资源浪费,因为只需要一台Tomcat启动定时问题即可
三、Windows下Tomcat单机部署多应用
3.1 添加新增的Tomcat相关环境变量
3.2 修改catalina.bat和startup.bat配置文件
第一个tomcat不变,打开第二个tomcat目录bin下catalina.bat与startup.bat,将文件里面内的CATALINA_BASE替换成CATALINA_2_BASE,将文件里面内的CATALINA_HOME替换成CATALINA_2_HOME
3.3 修改serverxml
- Serverport节点端口号修改
- Connector port节点端口修改
3.4 启动tomcat
CMD分别进入两个Tomcat的bin目录,启动Tomcat,即进入${tomcat}/bin/,然后执行startup.bat
访问http://localhost:8080 与http://localhost:9080,可以打开tomcat部署的webapps的ROOT项目首页
四、Nginx与Tomcat搭建集群
4.1 修改系统host
C:\Windows\System32\drivers\etc\hosts,加入127.0.0.1 www.imooc.com,打开cmd窗口,用ping命令进行验证