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

[经验分享] Tomcat Cluser 集群服务

[复制链接]
YunVN网友  发表于 2018-11-30 12:46:40 |阅读模式
Tomcat Cluser

  ===============================================================================
  概述:
  

  ===============================================================================
  
Tomcat Cluster
1.会话保持
方法:
session sticky(粘性)

  • source ip    //原地址哈希
  • cookie
  • hash HEADER
注意:

  • 后面两种方式要确保前端调度器为7层负载均衡,如nginx,haproxy

session cluser(集群)
缺陷:

  • 每一个节点都将会持有整个集群中的所有会话信息,因为会话会保存在内存中,所以将会非常占用内存资源;
  • 此种方式不适合集群规模节点较大的场景使用;

session server(粘性)

  • 会话保存在一个第三方的独立外部存储设备上,使得会话在集群中的各节点得到共享;
缺陷:

  • 每一次session信息的获取都要通过第三方服务器来加载,会产生网络IO;
  • 同时还要保证 session server  服务器足够强大,即事务能力要无与伦比,一般不使用关系型数据库,而是采用 kv 存储并基于内存来提供服务。
常用于session server的服务器:

  • memcached,redis(推荐使用)

2.Tomcat Cluser
三种方式
(1) session stickey 会话粘性的方式:
前端调度器可以为

  • nginx
  • haproxy
  • lvs
  • httpd
(2) session cluster 会话集群的方式:


  • tomcat delta manager
  • tomcat session cluster
注意:

  • 此种方式前端仍然需要一个调度器,但是不需要做会话绑定,会话由 tomcat 自己实现;
(3) session server 会话服务器的方式

  • memcached;
  • redis;
注意:
生产环境中,一般采用的架构模型为第三种,通过session server 来维持会话;具体实现如下:

  • 前端调度器可以为nginx,haproxy等实现负载均衡,中间web server为 amt 即通过httpd和tomcat结合的方式实现(多个),后端为 session server;前端调度器实现动静分离,将动态内容(.jsp|do)调度到中间的 httpd,然后再通过httpd 反代至 tomcat 实例,多个httpd+tomcat 通过后端的 session server 实现会话共享;
附图:
https://s5.运维网.com/wyfs02/M02/8F/0B/wKioL1jSNOLTE75NAAME81J7eOU680.jpg
3.apache + tomcatS:
结合方式:
http协议
apache:

  • mod_proxy
  • mod_proxy_http
  • mod_proxy_balancer
tomcat


  • http connector
ajp协议
apache:

  • mod_proxy
  • mod_proxy_ajp
  • mod_proxy_balancer
tomcat


  • ajp connector
mod_jk
apache:

  • mod_jk
tomcat


  • ajp connector
实验:第一种方法 http 的实现:

  
  环境描述:


  •   准备3台虚拟主机(我这里为 centos7),一台作为httpd调度器,两台作为后端的tomcat服务器;实现httpd反代用户请求至后端的两台tomcat服务器;
  •   两台tomcat主机的ip为 node1:192.168.1.112;node2:192.168.1.113;httpd 调度器的ip:192.168.1.114
  实验环境准备:
  1.首先准备两台后端的 tomcat 主机(部署好JDK环境,过程详见前面内容),并提供测试页面,这里以node2(openjdk)为例:
[root@node2 webapps]# pwd
/var/lib/tomcat/webapps
[root@centos7 webapps]# mkdir -pv ./testapp/{classes,lib,WEB-INF,META-INF}
mkdir: created directory ‘./testapp’
mkdir: created directory ‘./testapp/classes’
mkdir: created directory ‘./testapp/lib’
mkdir: created directory ‘./testapp/WEB-INF’
mkdir: created directory ‘./testapp/META-INF’
[root@centos7 webapps]# ls
docs  examples  host-manager  manager  ROOT  sample  testapp
[root@centos7 webapps]# ls testapp/
classes  lib  META-INF  WEB-INF
# 提供测试页面
[root@node2 testapp]# cat index.jsp




Test Page




   为了能够保证能够访问到testapp,在/etc/tomcat/server.xml中的 Host 中定义Context 如下:

   启动tomcat服务,在浏览器中访问如下:

  创建向后端反代的虚拟主机
  1.在http调度器上创建一个向后端反代虚拟主机,如下:
[root@centos7 conf.d]# pwd
/etc/httpd/conf.d
[root@centos7 conf.d]# cat mod_proxy_http.conf

BalancerMember  loadfactor=1  # 设定权重
BalancerMember  loadfactor=2
ProxySet lbmethod=byrequests


ServerName lb.taotao.com
ProxyVia On
ProxyRequests Off
ProxyPreserveHost On

Require all granted

ProxyPass / balancer://tcsrvs/
ProxyPa***everse / balancer://tcsrvs/

Require all granted


# 检查语法,启动httpd服务
[root@centos7 conf.d]# httpd -t
Syntax OK
[root@centos7 conf.d]# systemctl start httpd  测试如下:
[root@centos7 conf.d]# curl http://192.168.1.114/test/



Test Page


Tomcat A


[root@centos7 conf.d]# curl http://192.168.1.114/test/



Test Page


Tomcat B


[root@centos7 conf.d]# curl http://192.168.1.114/test/



Test Page


Tomcat B


[root@centos7 conf.d]# curl http://192.168.1.114/test/



Test Page


Tomcat A

  2.会话粘性的实现方法:(不常用)
[root@centos7 conf.d]# cat mod_proxy_http.conf
Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED

BalancerMember http://192.168.1.112:8080 route=TomcatA loadfactor=1
BalancerMember http://192.168.1.113:8080 route=TomcatB loadfactor=2
ProxySet lbmethod=byrequests
ProxySet stickysession=ROUTEID


ServerName lb.taotao.com
ProxyVia On
ProxyRequests Off
ProxyPreserveHost On

Require all granted

ProxyPass / balancer://tcsrvs/
ProxyPa***everse / balancer://tcsrvs/

Require all granted

  3.启用管理接口
[root@centos7 conf.d]# cat mod_proxy_http.conf
Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED

BalancerMember http://192.168.1.112:8080 route=TomcatA loadfactor=1
BalancerMember http://192.168.1.113:8080 route=TomcatB loadfactor=2
ProxySet lbmethod=byrequests
ProxySet stickysession=ROUTEID


ServerName lb.taotao.com
ProxyVia On
ProxyRequests Off
ProxyPreserveHost On

Require all granted

ProxyPass / balancer://tcsrvs/
ProxyPa***everse / balancer://tcsrvs/

Require all granted

    # 启用管理接口
SetHandler balancer-manager
ProxyPass !
Require all granted

  在浏览器中访问如下:



实验:第二种方法 ajp 协议的实现:

  
  ajp协议的实现和http协议在实现方式上基本相同,不同的就是所用的协议不同,监听的端口不同,配置方式如下:

[root@centos7 conf.d]# cat mod_proxy_http.conf

BalancerMember ajp://192.168.1.112:8009 loadfactor=1
BalancerMember ajp://192.168.1.113:8009 loadfactor=2
ProxySet lbmethod=byrequests


ServerName lb.taotao.com
ProxyVia On
ProxyRequests Off
ProxyPreserveHost On

Require all granted

ProxyPass / balancer://tcsrvs/
ProxyPa***everse / balancer://tcsrvs/

Require all granted


SetHandler balancer-manager
ProxyPass !
Require all granted

  管理接口如下:

  步骤如下:


Tomcat Session Replication Cluster:
session会话保持之session服务器
  1.环境:


  •   两个tomcat节点:172.16.100.7(tomcatA.magedu.com) 172.16.100.8(tomcatB.magedu.com)
  •   两个memcached节点:172.16.100.9, 172.16.100.10
  •   一个负载均衡节点:172.16.100.6

  2.memcached-session-manager项目地址:

  •   http://code.google.com/p/memcached-session-manager/
     下载如下jar文件至各tomcat节点的tomcat安装目录下的lib目录中,其中的${version}要换成你所需要的版本号,tc${6,7,8}要换成与tomcat版本相同的版本号。

  •   memcached-session-manager-${version}.jar
  •   memcached-session-manager-tc${6,7,8}-${version}.jar
  •   spymemcached-${version}.jar
  •   msm-javolution-serializer-${version}.jar
  •   javolution-${version}.jar

  3.步骤如下:
  1)分别在两个tomcat上的某host上定义一个用于测试的context容器,并在其中创建一个会话管理器,如下所示:

   
  2)分别为两个context提供测试页面:
    tomcatA
# mkdir -pv /usr/local/tomcat/webapps/test/WEB-INF/{classes,lib}
# vim /usr/local/tomcat/webapps/test/index.jsp
添加如下内容:


  TomcatA
  
    TomcatA.magedu.com
   
      
        Session ID
   
        
      
      
        Created on
        
     
   
  
    tomcat B
# mkdir -pv /usr/local/tomcat/webapps/test/WEB-INF/{classes,lib}
# vim /usr/local/tomcat/webapps/test/index.jsp
添加如下内容:


  TomcatB
  
    TomcatB.magedu.com
   
      
        Session ID
   
        
      
      
        Created on
        
     
   
  
  3)在172.16.100.6上配置反向代理的负载均衡内容,类似如下所示:

    BalancerMember  http://172.16.100.7:8080 loadfactor=1
    BalancerMember  http://172.16.100.8:8080 loadfactor=1
    ProxySet  lbmethod=byrequests

ProxyVia Off
ProxyRequests Off
ProxyPass / balancer://tomcat/
ProxyPa***everse / balancer://tomcat/

    Order Allow,Deny
    Allow From all


    Order Allow,Deny
    Allow From all
  4)测试结果,在浏览器中访问http://172.16.100.6/test,结果如下所示,其session ID在负载均衡环境中保持不变。
TomcatA.magedu.com
Session ID4DD0340CE6294FF2BBE802CD4CD039EC-n2
Created on1399890838103

TomcatB.magedu.com
Session ID4DD0340CE6294FF2BBE802CD4CD039EC-n2
Created on1399890838103  

  

  

  

  





运维网声明 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-641606-1-1.html 上篇帖子: linux tomcat service 下篇帖子: tomcat 项目目录修改
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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