Tomcat底层原理分析:7.Tomcat集群配置解析

【专栏目录】
Tomcat底层原理分析:1.基础环境搭建
Tomcat底层原理分析:2.Tomcat架构分析
Tomcat底层原理分析:3.Jasper引擎
Tomcat底层原理分析:4.Tomcatd的server.xml配置内容解析
Tomcat底层原理分析:5.Web应用配置解析
Tomcat底层原理分析:6.Tomcat中对JVM的配置解析
Tomcat底层原理分析:7.Tomcat集群配置解析
Tomcat底层原理分析:8.Tomcat安全性配置解析
Tomcat底层原理分析:9.Tomcat性能调优
【本文导读】

本文主要讲了如何设置Tomcat集群以及如何使用Nginx进行反向代理;
注:本文图片均来自java进阶教程动手实现Tomcat【黑马程序员精品公开课】,侵权立删。

1.Tomcat集群结构图

通过Nginx进行反向代理,即可实现访问一个ip:port,将请求负载均衡到集群中的一个Tomcat-Server中。

image

2.Nginx配置

安装好Nginx后,打开nginx.conf,设置下面内容

# 假设当前Tomcat集群中有两台服务器

# upstream serverpool配置的作用:匹配要代理的服务的ip和端口。(不难看出,Nginx可以代理很多服务,不仅仅是Tomcat)
upstream serverpool{
    server localhost:8888;  # 匹配Tomcat集群中一台服务器的ip和端口
    server localhost:9999;  # 匹配Tomcat集群中另一台服务器的ip和端口
}

# server配置的作用:用户可以通过访问localhost:90,即可将请求负载均衡到Tomcat集群中的某一个服务器上
server{
    listen      90;         # 设置Nginx代理端口
    server_name localhost;  # 设置Nginx代理ip
}

3.负载均衡策略

方式介绍
轮询按照请求时间的顺序,平均地将请求分给每一个服务器
权重按照权重比,将请求分配到每一个服务器上
哈希按照客户端的ip等参数,进行哈希,匹配对应的服务器
# 权重方式举例说明
upstream serverpool{
    server localhost:8888 weight=2;  # 2/3的概率会由该服务器处理
    server localhost:9999 weight=1;  # 1/3的概率会由该服务器处理
}

4.Session共享

4.1问题

假设第一次请求:登录,访问的是第一个服务器,该服务器会保存当前用户的session;那么第二次请求:查询,可能会被负载均衡到第二个服务器上,而该服务器上没有“第一次请求:登录”生成的session,无法查询,即发生了session不共享的问题。如图:

image

4.2解决方案

方法详解弊端
ip_hash策略将同一个客户端发起的请求,hash到同一个服务器中处理如果当前服务器宕机,需要重新计算哈希
Session复制通过广播方式,将当前服务器上的session复制到其他服务器上当集群中服务器越多,性能越低,网络资源越浪费
SSO单点登录session的验证统一交给SSO服务器,使得Tomcat服务器变得无状态成本高,适用于企业级,不适用于小型项目
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值