实现Session共享全套教程,从头到尾
如何查看session的共享,最简单的就是使用nginx进行分发请求。查看不同页面的sessionID是否相同。
首先就需要在你的虚拟机上对nginx进行部署
在安装nginx之前需要下载这些依赖
1. yum install gcc-c++
2. yum install pcre pcre-devel
3. yum install zlib zlib-delvel
4. yum install openssl openssl-devel
对nginx进行解压(解压时候需要自己创建路径eg:/user/soft/)
# 下载安装包 我下载的是1.20.1版本
wget http://nginx.org/download/nginx-1.20.1.tar.gz
# 解压安装包
tar -xvf nginx-1.20.1.tar.gz
安装nginx
# 移动到下载安装包的位置
cd nginx-1.20.1/
# 执行 执行当前文件夹中的配置configure文件 默认安装在user/local/nginx(如果不确定可以使用 whereis nginx)
./configure
# 执行make
make
# 执行make install
make install
启动nginx
# 移动到/usr/local/nginx/sbin/
cd /usr/local/nginx/sbin/
# 执行 ./nginx 启动nginx(注意关闭防火墙)
./nginx
# 也可以使用这条命令执行启动nginx
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
#重启命令
./nginx -s reload
#测试命令
./nginx -t
到此nginx就配置完了,下面就是Tomcat的一些配置。
首先找到两个Tomcat下的server.xml(在Tomcat的conf下)
找到以下标签()的位置,然后将下边的复制到此
<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的集群
下面就是项目的部署
对Tomcat中项目的部署
- 找到Tomcat中的conf文件夹中找到这个xml文件 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,manger-script,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>
3、 再就是对项目的配置了,在你的web.xml文件中加入这个标签
<distributable/>
下面就可以将Tomcat启动。
访问你的Tomcat (eg:localhost:9090/)
输入你刚才配置的账号和密码
将你的项目分别部署在集群的服务器上
最后一步就是查看成果的时候了。
直接访问你配置的nginx的 ip+项目名+页面名,就可以查看两个session域是否共享的了(即SessionID是否一样)