文章目录
- 一、Nginx实现随机分配Tomcat服务器
- 1、配置Nginx实现两个Tomcat服务器的跳转
- 2、测试Nginx能否实现跳转
- 二、在Tomcat服务器上部署项目
- 三、Tomcat集群的会话同步
- 1、Tomcat在同一台主机上
- 2、Tomcat在不同的主机上
在部署完Tomcat和Nginx之后,我们就可以开始让Tomcat实现会话同步并使用Nginx随机分配
如果有需要了解部署的朋友可以去看Tomcat及Nginx的部署
一、Nginx实现随机分配Tomcat服务器
1、配置Nginx实现两个Tomcat服务器的跳转
注意:此时配置Nginx的位置在根目录下的usr中,因为解压完成之后,会在usr下生成一个Nginx,朋友们不要搞混,不是Nginx之前安装到的目录底下
cd usr/local/nginx
cd conf/
vim nginx.conf
在文件中的添加如下,添加完之后保存并退出
upstream mytomcat{
server 118.31.55.xx:8080; #写自己部署的两个Tomcat的访问地址就好了,我这里都部署在同一台主机了
server 118.31.55.xx:8090;
}
proxy_pass http://mytomcat;
测试配置文件的编写是否正确
先进入当前nginx目录下的sbin目录
cd sbin
./nginx -t
启动Nginx
./nginx
在启动过后可以重启Nginx
./nginx -s reload
到这里Nginx随机分配Tomcat服务器的配置就完成啦。
2、测试Nginx能否实现跳转
如果是在同一台虚拟机或者是服务器上安装的两个Tomcat和Nginx的朋友,在浏览器测试时就输入主机的ip地址就好,然后就会进行随机分配
如果是在不同虚拟机上安装的Tomcat和Nginx的朋友,在测试时要输入安装Nginx的那台虚拟机的ip地址
有的朋友在启动Nginx后,在浏览器上访问的结果是这样
可能出现的原因:
①Nginx的配置文件修改错了地方,可能修改的nginx.xml文件是在nginx的安装目录下的;而不是在安装好nginx后在根目录下的usr里的nginx.xml文件;
②启动Tomcat时没有关闭防火墙;
二、在Tomcat服务器上部署项目
这里我将在IDEA上把项目打包,然后部署在Tomcat上,不需要参看的朋友可以直接跳到第三部分
打开IDEA,在IDEA上打好war包然后部署到服务器上
添加结束之后
进行打包操作
打好war包之后,会有一个war包在out文件下
我们就可以将这个war包部署在Tomcat服务器上
访问Tomcat,然后点击Tomcat的 Manager App,输入自己设置的账号和密码
忘记账号密码的朋友可以看设置Tomcat的账号密码
在图中的这个地方进行部署
部署完毕之后,在上面应用程序就会出现这个项目
附带这个测试项目的代码:
<head>
<title>$Title$</title>
</head>
<body>
TomcatA 会话id为:<%= session.getId()%>
</body>
</html>
三、Tomcat集群的会话同步
终于要来到了实现Tomcat集群会话同步这一步了
下面我将分成两种情况来实现:
①多个Tomcat在同一台主机上部署
②Tomcat在不同的主机上部署
1、Tomcat在同一台主机上
打开Tomcat的配置文件夹conf里的server.xml
vim conf/server.xml
在文件中放入
<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>
注:要注意这些放置的位置,应该放在下面这行的下面
<Engine name="Catalina" defaultHost="localhost">
两台Tomcat都需要放入这个,此时我们是在同一台主机上,所以要修改四个地方让其不一样
将这四个地方修改即可
然后配置已经部署的war中的web.xml
在Tomcat的安装目录下
cd webapps
vim xxxx/WEB_INF/web.xml
两个Tomcat中都要添加
<distributable/>
这样就实现了Tomcat集群会话同步,到浏览器上直接访问Nginx的ip地址就可以验证
注:Tomcat都必须要启动,然后在各自的Tomcat服务器上都要点开部署好的项目,这样效果才会明显,我们此刻就会注意到两个Tomcat的session是一样的
2、Tomcat在不同的主机上
在Tomcat的配置文件中都要加入前面的那一大段,只是修改的地方不同
只需要修改一个地方,修改配置文件的这个地方,将address=“auto” 改成本主机的ip地址即可
剩下的步骤都是相同的