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

[经验分享] Tomcat/Memcached实现会话保持(SessionServer)

[复制链接]

尚未签到

发表于 2018-11-30 10:09:10 | 显示全部楼层 |阅读模式
前言
        在实际生产中,我们常常会面临这样一个问题,那就当我们通过负载均衡调度器进行调度处理时,不同的后端主机需要对客户的访问会话进行状态保持。也就是说,当调度器将用户的请求进行代理调度时,用户与后端服务器之间建立的Session会话不能丢失,各主机之间在处理用户请求时,都要能够对用户的会话进行处理。
        那么被调度的不同后端主机是如何共享用户的Session呢?接下来,我们来介绍一种常见的方式,也是实际生产中经常使用到的一种方式,使用memcached配合tomcat搭建Seesion Server。
实验拓扑结构
    首先来看一下,下面的拓扑结构。
http://ot2trm1s2.bkt.clouddn.com/Linux/2017-11-07-linux-pro-command-7/tomcat+memcached.jpg序号担任角色主机名地址功能描述对应软件版本ANginx均衡调度器nginx172.18.2.66利用Nginx的调度功能首先负载均衡Nginx-1.10.2Bweb服务器tomcat1172.18.2.77安装tomcat,用来提供动态web服务tomcat-7.0.69-10.e17Cweb服务器tomcat2172.18.3.77安装tomcat,用来提供动态的web服务tomcat-7.0.69-10.el7DSessionServersession1172.18.253.175安装memcached,提供Session存储服务,同时充当SessionServer的主节点memcached-1.4.15ESessionServersession2172.18.254.5安装memcached,提供session存储服务,同时充当SessionServer备用节点memcached-1.4.15安装相应的软件
    首先同步所有主机的主机时间,在各个主机中安装所需要的应用软件。
[root@nginx ~]$yum install nginx
[root@tomcat1 ~]#yum install tomcat tomcat-lib tomcat-admin-webapps tomcat-webapps tomcat-docs-webapp  -y
[root@tomcat2 ~]#yum install tomcat tomcat-lib tomcat-admin-webapps tomcat-webapps tomcat-docs-webapp  -y   
[root@session1 ~]# yum install -y memcached
[root@session2 ~]# yum install -y memcached
    启动相应的服务。
在tomcat中添加简单的站点测试程序
    在tomcat中,添加简单的示例应用程序。
[root@tomcat1 ~]#mkdir -pv /usr/share/tomcat/webapps/test/WEB-INF/lib
      然后在test目录下添加一个简单的index.jsp文件。并将内容进行适当的修改,以区分两个不同的服务。


  TomcatB
  
    TomcatA.pojun.tech
   
      
        Session ID
   
        
      
      
        Created on
        
     
   
  
配置Nginx的反向代理
        对Nginx进行配置,使其能够将用户的请求均衡调度到后端的WebServer。
#
# The default server
#
upstream tcsrvs{
    server 172.18.2.77:8080;
    server 172.18.3.77:8080;
    }
   
server {
    listen       80 default_server;
    listen       [::]:80 default_server;
    server_name  _;
    root         /usr/share/nginx/html;
    # Load configuration files for the default server block.
    include /etc/nginx/default.d/*.conf;
    location / {
proxy_pass http://tcsrvs;
    }
    error_page 404 /404.html;
        location = /40x.html {
    }
    error_page 500 502 503 504 /50x.html;
        location = /50x.html {
    }
}
        此时,在浏览器地址栏输入http://172.18.2.66/test/就能看到,浏览器的请求已经被调度到TomcatA 和TomcatB 两台主机上了。
配置tomcat支持memcached服务
        接下来,我们就开始给Tomcat配置支持memcached的服务支持,可以参考官方文档的介绍。
https://github.com/magro/memcached-session-manager/wiki/SetupAndConfiguration
        在官方指导文档上下载自己需要的jar包,并存放在指定值得目录下,两个tomcat同样的配置。 可参考下图。
tomcat包的存放位置
http://ot2trm1s2.bkt.clouddn.com/Linux/2017-11-07-linux-pro-command-7/tomcat%E5%8C%85%E5%AD%98%E6%94%BE%E4%BD%8D%E7%BD%AE.pngwebapp包的存放位置
http://ot2trm1s2.bkt.clouddn.com/Linux/2017-11-07-linux-pro-command-7/serializer%E5%8C%85%E5%AD%98%E6%94%BE%E4%BD%8D%E7%BD%AE.png
        在tomcat的server.xml配置文件中的Host节点下,加入如下内容。

   
         
   

    ...
配置成功之后,将tomcat重新启动就好。
测试会话保持与均衡调度
使用浏览器访问http://172.18.2.66/test 查看调度结果,以及会话的保持效果。
http://ot2trm1s2.bkt.clouddn.com/Linux/2017-11-07-linux-pro-command-7/session_server.gif
总结
        memcached是一款很常见的缓存服务,通常会结合Tomcat实现Session缓存以用于进行会话保持。但是,memcached本身只能存储序列化的内容,并且所有的存储都存储在内存中,不具备持久性存储的特性,因此在实际的使用过程中通常都会有两个memcached服务器来以主备模式提供服务。
        相比于memcached服务,redis也能够实现类似的功能,而且redis还具有持久化存储的特性,这样能够提供更加稳定的服务,关于redis的使用,我们以后会继续介绍。
  





运维网声明 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-641468-1-1.html 上篇帖子: Ubuntu安装Sun-java6 和 Tomcat6 下篇帖子: 将Eclipse中的Web项目部署到Tomcat-LaoKa
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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