Tomcat部署项目及Tomcat间会话同步

一、Tomcat中部署项目的相关配置

1.相关配置

在Tomcat中进入conf/tomcat-users.xml文件,将以下代码放到最后

<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<user username="admin" password="admin" roles="manager-gui,mangerscript,manager-jmx,manager-status"/>

在Tomcat中conf/Catalina/localhost文件夹下创建manager.xml文件,并将以下代码放入该文件中

<?xml version="1.0" encoding="UTF-8"?>
<Context privileged="true" antiResourceLocking="false"
docBase="${catalina.home}/webapps/manager">
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="^.*$" />
</Context>

2.测试

当所有配置完成后启动Tomcat服务器,访问相应的IP地址:端口号。
在这里插入图片描述
点击Manager App后输入配置好的账号密码(这里账号密码均为admin)
在这里插入图片描述
点击选择文件,选择自己想要上传的项目war包即可
在这里插入图片描述
上传成功后使用IP地址:端口号/项目名称即可访问上传的项目
在这里插入图片描述

二、Tomcat间的会话同步

当我们采用Tomcat集群时,我们使用Nginx去分发请求。

但当一台服务器损坏时,用户访问另一台服务器时,当前会话的session id会改变,用户可能会出现丢失已登录的状态等问题。

要解决这个问题我们就应该做到服务器之间的session同步,也就是不管用户在本次会话中访问了哪一台服务器,当前会话的session id都不会改变。
在这里插入图片描述

1.配置Tomcat

进入Tomcat中conf/server.xml文件,将以下代码添加到Cluster标签后面

注:Cluster标签默认被注释,添加在注释之后即可

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="8">

          <Manager className="org.apache.catalina.ha.session.DeltaManager"
                   expireSessionsOnShutdown="false"
                   notifyListenersOnReplication="true"/>

          <Channel className="org.apache.catalina.tribes.group.GroupChannel">
            <Membership className="org.apache.catalina.tribes.membership.McastService"
                        address="228.0.0.4"
                        port="45564"
                        frequency="500"
                        dropTime="3000"/>
            <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
                      address="auto"
                      port="4000"
                      autoBind="100"
                      selectorTimeout="5000"
                      maxThreads="6"/>

            <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
              <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
            </Sender>
            <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
            <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor"/>
          </Channel>

          <Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
                 filter=""/>
          <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>

          <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
                    tempDir="/tmp/war-temp/"
                    deployDir="/tmp/war-deploy/"
                    watchDir="/tmp/war-listen/"
                    watchEnabled="false"/>

          <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
        </Cluster>

在另一台服务器中也做相同的配置,但要将以下四个位置进行修改,修改为任意的数字即可
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

注:如果是两台主机中的两个Tomcat,则不需要修改以上四个,只需将下面的改为当前Tomcat所在主机的IP地址即可

在这里插入图片描述

2.修改web工程的WEB-INF下的web.xml

对于要进行负载和集群的的应用中的WEB-INF中的web.xml文件要添加如下一句配置

<distributable/>

在这里插入图片描述

3.配置Nginx

在/usr/local/conf/nginx.conf中配置两个服务器的ip地址和端口号
在这里插入图片描述

4.测试

以上配置全部完成后即可进行测试

将两个服务器全部启动,将Nginx也启动后访问Nginx的IP地址/项目名称,并不断刷新,访问两台服务器并查看session id是否会变
在这里插入图片描述
在这里插入图片描述
不断刷新,Nginx会将分配到不同的服务器中,但一次会话得session id不会变化

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java.L

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值