之前搭建了Linux的Tomcat集群,放了测试项目,现在结合Redsi实现会话共享.
环境搭建:CentOS7,Nginx,Tomcat集群,Redis,SecureSRT,RedisClient.
首先查看本地CentOS的IP地址.
ifconfig
一 在Eclipse或IDEA下编写一个测试项目.这里我是在Eclipse下编写了一个测试项目.工程结构比较简单如下:
index.jsp的内容如下:非常简单就是获取session的ID
二 然后就把项目导出为war包然后上传至Linux系统里面.
然后就是将项目复制到相应的tomcatA和tomcatB的webapps下,tomcat启动后会自动解压的.
cp TestWeb.war /usr/local/src/tomcatA/webapps
cp TestWeb.war /usr/local/src/tomcatA/webapps
在之前搭建的Tomcat集群里面已经配置完成了集群的.参见教程: Linux下搭建Tomcat集群详细教程.
三 :设置Redis在Tomcat的Session配置.
cd /usr/local/src/tomcatA/conf
vim context.xml 添加如下的配置(Redis的配置,会话时间1分钟)参见Linux安装Redis详细教程这里设置
<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />
<Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"
host="192.168.217.130"
port="6379"
password="123456"
database="0"
maxInactiveInterval="60" />
</Context>
另外要将使用的session共享的jar包也上传至两个tomcat的lib目录下.
上传后的
另外一台tomcatB也需要这样配置的,相同的方式,相同的位置,自己动手配置一下的比较容易,就不说啦.
四:首先将两台tomcat分别启动查看项目是否启动成功了.(浏览器下面访问一下看一下.)
cd /bin
sh startup.sh(启动后的目录图)
为了方便区分一下负载均衡到底是在哪一台的.关闭一下tomcat.然后来到TestWeb的目录下修改一下.
vim index.jsp
同样的方式修改一下tomcatB的.
发现在启动访问项目的时候是192.168.217.130:8081/TestWeb不是通过ip+端口号的方式,修改为ip+端口号的访问方式比较方便配置nginx的负载均衡.
cd /conf
vim server.xml(添加如下的Context标签代表一个项目)指向自己的项目的实际路径即可.
<Context path="" docBase="/usr/local/src/tomcatA/webapps/TestWeb" debug="0" reloadable="true" />
启动一下tomcatA如果配置正确是可以通过192.167.217.130:8080的方式访问项目的.
同样的方式设置一下tomcatB的配置.
五:配置一下Nginx的负载均衡(加权轮询的方式)
来到nginx的配置文件.
location / {
proxy_pass http://myserver;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
server {
listen 80;
server_name 192.168.217.130;
upstream myserver {
server 192.168.217.130:8080 weight=1;
server 192.168.217.130:8081 weight=2;
}
至此完成了nginx的配置.
nginx的启动命令(sbin的目录下): ./nginx
关闭命令: ./nginx -s stop
运行过程中重载配置 : ./nginx -s reload
六 测试访问
上面用到的端口 6379/8081/8080/ 防火墙都要开放的.在tomcat启动之前先启动redis的.
不断刷新浏览器发现三次内1次tomcatA两次tomcatB.SessionID不会变化.查看我们比较关心的Session存储问题.
根据需要设置合理的会话时间即可.
至此完成Linux下的Tomcat集群的基于Redis的Session共享配置.如果在配置的过程中出现问题的,在下面评论即可.