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

[经验分享] 使用Apache搭建Sticky模式的Tomcat集群

[复制链接]

尚未签到

发表于 2017-1-10 08:37:17 | 显示全部楼层 |阅读模式
  集群原理
Web集群分成两个方面:
负载分发
一方面是水平扩展,通过接入代理进行负载分发,分发到后台多个实际的业务处理逻辑单元上。这种接入代理可以是nginx,Apache等软件负载,也可以是类似F5等硬件负载。具体方式参见nginx负载或Apache负载等。
Session处理
另一方面就是多个业务逻辑单元之间的Session处理,处理方式有两种,一种是Session sticky模式,另外一种是Session共享模式。


Session处理方式
Session Sticky
Session共享
处理逻辑
把同一个用户的Session一直发送到同一个逻辑单元处理
所有的后端处理逻辑单元共享Session或者Session更新时通知其它逻辑单元
主要实现方式
指定负载的分发组件(如Apache),把请求中包含特定属性的请求发到同一个连接,如指定jsessionid一致的请求到同一个请求,或者在负载组件中给每个响应增加一个头部属性,指定下次的分发目的地
1.       各自维护Session,当请求处理结束后,通知其它组件单元更新Session,包括异步和同步模式
2.       统一维护Session,如把Session放在memcached或者共享文件系统中,可以在容器级别或者应用级别做这个事情
3.       利用cache server
优势
本地维护Session,不需要访问网络存取或者通知其它处理单元变更
完全的随机分发,可以根据服务忙闲调整分发策略,高可用性
劣势
一台服务器宕机后,当前Session断掉
网络存取操作等耗时,影响处理效率(根据选用的策略不同造成影响不同)
  
搭建步骤
本文档所阐述场景:使用Apache modproxy模式进行负载分发,Session使用Session Sticky模式。
安装部署Tomcat
略。
注意:多台Tomcat之间毫无关联,不需要做任何配置。
安装Apache HttpServer
略。
注意:Apache需要使用2.2以上的版本,支持mod proxy模式。
配置负载分发
以下配置修改都是在Apache的conf/httpd.conf配置文件中完成
1.    修改加载mod proxy需要的模块
找到配置中被注释掉的几行,删除注释,使Apache在启动的时候加载如下模块
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule headers_module modules/mod_headers.so
LoadModule status_module modules/mod_status.so
2.    给HTTP请求头部添加路由标识
直接在loadModule模块下面增加即可
Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED
3.    配置负载均衡后端的业务逻辑单元处理地址
注意本步骤标红的需要与上面步骤中的ROUTEID一致。
<Proxy balancer://mycluster>
BalancerMember http://192.168.77.213:9005 route=1
BalancerMember http://192.168.77.213:9004 route=2
BalancerMember http://192.168.77.213:9002 route=3
BalancerMember http://192.168.77.213:9003 route=4
ProxySet stickysession=ROUTEID
</Proxy>
4.    配置mod proxy路由规则
ProxyPass / balancer://mycluster/
注意“/”不要少加,mycluster与上面的后端处理集群的名字一致。这里的意思是把所有的请求都转发给上面的集群进行处理
5.    2,3,4步骤的最终配置如下:
Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED
<Proxy balancer://mycluster>
BalancerMember http://192.168.77.213:9005 route=1
BalancerMember http://192.168.77.213:9004 route=2
BalancerMember http://192.168.77.213:9002 route=3
BalancerMember http://192.168.77.213:9003 route=4
ProxySet stickysession=ROUTEID
</Proxy>
ProxyPass / balancer://mycluster/
  
验证
打开地址http://192.168.13.242:7080/smsshall/welcome.do进行验证(注意Apache是监听192.168.13.242:7080地址的)。
使用firebug查看cookies信息,多次刷新,cookies中的ROUTEID是一致的。
重新打开多个浏览器,刷新,尝试,看ROUTEID,同一个浏览器的ROUTEID是不会变化的。

运维网声明 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-326273-1-1.html 上篇帖子: Tomcat应用绑定域名以及Apache端口转发 下篇帖子: apache mina第二发-自定义协议通信(上)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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