设为首页 收藏本站
查看: 1024|回复: 0

[经验分享] Tomcat实现session保持的三种方式、使用msm方式搭建jsp网站

[复制链接]

尚未签到

发表于 2018-12-2 08:14:25 | 显示全部楼层 |阅读模式
  Tomcat简单的来说类似于php的功能,主要实现java程序的编译,最后呈现给用户的是html格式的代码,使用用户可以在浏览器中访问。Tomcat是Java语言研发的,所以依赖于java的虚拟机(jvm)。
一、使用前端调度器实现实现session保持
  实现的原理如下图,会话保持使用前端的调度器实现。例如:使用Ngnix调度时,使用ip_hash算法就可以实现。

配置步骤:
1、安装配置 Tomcat
操作系统: CentOS 6,5
目标主机:172.16.10.122  172.10.10.133
第一步:安装Java虚拟机
### 获得jdk软件 jdk-6u31-linux-x64-rpm.bin 这里说明:对应的jdk版本有bin版本和rpm版本,
可以根据自己的需要下载。下载地址是:
### 安装步骤
chmod +x jdk-6u31-linux-x64-rpm.bin
./jdk-6u31-linux-x64-rpm.bin
## cat /etc/profile.d/java.sh
export JAVA_HOME=/usr/java/latest
export PATH=/usr/java/latest/bin/:$PATH
###
source /etc/profile.d/java.sh
第二步:安装tomcat
### 获得tomcat软件 apache-tomcat-7.0.55.tar.gz
### 安装步骤
tar xf ache-tomcat-7.0.55.tar.gz -C /usr/local
ln -sv apache-tomcat-7.0.55 tomcat
### cat /etc/profile.d/tomcat.sh
export CATALINA_HOME=/usr/local/tomcat
export PATH=$CATALINA_HOME/bin:$PATH
###
第三步:添加测试站点,站点的目录数如下:
### tree /usr/local/tomcat/webapps/test/
/usr/local/tomcat/webapps/test/
|-- WEB-INF
|   |-- classes
|   `-- lib
`-- index.jsp
3 directories, 1 file
# 3个目录WEB-INF classes lib 1个文件
# 文件内容:172.16.10.122


  TomcatA
  
    TomcatA.example.com
   
      
        Session ID
   
        
      
      
        Created on
        
     
   
  

# 文件内容:172.16.10.133


  TomcatB
  
    TomcatB.example.com
   
      
        Session ID
   
        
      
      
        Created on
        
     
   
  


第四步:启动tomcat
catalina.sh start结果示例:



以上测试成功后,配置以下的内容。
2、配置前端调度器
操作系统: CentOS 6,5
目标主机:172.16.10.1
第一步:安装Ngnix
### 可以使用源码编译安装,也可使用rpm方式安装(需配置好epel源)这里使用 rpm方式安装。
yum install ngnix -y
第二步:配置Ngnix前端调度
### cat /etc/nginx/conf.d/default.conf 主要配置如下:
upstream www.tomcat.org {
ip_hash;
server 172.16.10.122:8080;
server 172.16.10.133:8080;
}
server {
    listen       80;
    server_name  www.tomcat.org;
    location / {
        proxy_pass http://www.tomcat.org;
        index  index.jsp index.html index.htm;
    }
}结果测试:

  这是通过ip_hash调度方法实现的。思考如下问题:这样做还能减轻后端tomcat的压力吗??
  解决办法:将session信息在每个Tomcat节点上保存一份,做成tomcat集群(session集群)。
二、使用tomcat集群保持session
  实现架构不变。
1、配置tomcat集群
### 在 /usr/local/tomcat/conf/server.xml 的 内部以下内容添加:
目标主机:172.16.10.122 172.16.10.133

  
  
   
   
   
      
   
   
   
  
  
  
  
  
  


### 在相应应用程序的web.xml中添加; 也可以全局添加
目标主机:172.16.10.122 172.16.10.133
cp /usr/local/tomcat/webapps/test/WEB-INF/web.xml /usr/local/tomcat/webapps/test/WEB-INF/
# 编辑 /usr/local/tomcat/webapps/test/WEB-INF/web.xml 在  中添加:
;2、配置前端调度器
  这里主要是使用轮询调度,不使用ip_hash调度。只需将配置文件中的ip_hash去掉即可。
结果示例:
  配置完成后,重启tomcat即可。

  从结果中可以知道,实现了session保持。


  思考如下问题? 这种方式的session保持是通过每个节点保存一份session信息,但是:但集群节点很多时,这些seesion信息可能是很大级别的。此时,各个节点之间的session复制反而成了影响系统性能的瓶颈。
  解决办法: 使用session服务器,将seession信息统一保存到缓存服务器中。
二、使用session服务器(memcached)来保持session
  试验拓扑图如下:

  tomcat实现此功能要借助于msm(Memcached-Session-Management)模块可以实现。需要下载jar包, javolution、memcached-session-manager-tc7、spymemcached、memcached-session-manager、msm-javolution-serializer 。将这些jar包拷贝到/usr/local/tomcat/lib/目录下,支持msm功能。这些包可以再Google Code中找到。
  下载时要注意:要与tomcat的版本相对应。
1、配置memcached
操作系统:CentOS 6.5
目标主机:172.16.10.1 172.16.10.9
yum install memcached -y
service memcached start2、配置tomcat
目标主机:172.16.10.122 172.16.10.133
## 在试验一的基础上,继续配置
### 在 /usr/local/tomcat/conf/server.xml 的 内部以下内容添加:

                 
3、配置Ngnix前端调度方法,同试验二一样。
  结果示例:


补充说明:
  对于前端调度器也可使用apache和haproxy反向代理器。
四、Tomcat实例
  tomcat + memcacahed + nginx + mysql + nfs 实现jsp格式的论坛。试验拓扑图如下:

1、配置数据节点 172.16.10.1
#### 配置 NFS 服务器
mkdir /tomcatdata
# 编辑 /etc/exports,添加:
/tomcatdata 172.16.0.0/16(rw)
service nfs start
### 配置 mysql
yum install mysql-server -y
servive mysqld start
mysql> CREATE DATABASE jcenter1;
mysql> GRANT ALL ON jcenter1.* TO jcenter@'172.16.%.%' IDENTIFIED BY 'jcenter';
mysql> FLUSH PRIVILEGES;2、配置tomcat
在试验一的基础上:
目标主机: 172.16.10.122 172.16.10.133
第一步:搭建站点
mkdir /tomcat/webapps/
mount -t nfs 172.16.10.1:/tomcatdata /tomcat/webapps/
# 获取jsp程序 JavaCenter_Home_2.0_GBK.tar.bz2 java程序代码
tar -xf JavaCenter_Home_2.0_GBK.tar.bz2 -C /tomcat/webapps/
cd /tomcat/webapps/
ln -sv JavaCenter_Home_2.0_GBK jct
# 配置 JavaCenter:/tomcatdata/jct/config.properties
# 主要修改以下:
# 数据库服务器地址(一般为本地localhost或127.0.0.1)
dbHost = 172.16.10.1
# 数据库服务器端口号(一般为3306)
dbPort = 3306
# 数据库用户名
dbUser = jcenter
# 数据库密码
dbPw = jcenter
# 数据库名
dbName = jcenter1
第二步:配置tomcat

   
                  
   


# 当然msm所依赖的jar包要拷贝到对应的目录下
重新启动tomcat.结果示例:




  至此,配置基本完成。




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-642181-1-1.html 上篇帖子: 在eclipse中使用Tomcat8.0时出现Could not publish server ...错误 下篇帖子: java获取tomcat临时文件夹路径
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表