热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

使用Apache搭建Sticky模式的Tomcat集群

重新打开多个浏览器,刷新,尝试,看ROUTEID,同一个浏览器的ROUTEID是不会变化的。

集群原理
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一致。

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

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

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

ProxyPass / balancer://mycluster/


验证
打开地址http://192.168.13.242:7080/smsshall/welcome.do进行验证(注意Apache是监听192.168.13.242:7080地址的)。
使用firebug查看COOKIEs信息,多次刷新,COOKIEs中的ROUTEID是一致的。
重新打开多个浏览器,刷新,尝试,看ROUTEID,同一个浏览器的ROUTEID是不会变化的。


推荐阅读
  • CentOS 7配置SSH远程访问及控制
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • LVS-DR直接路由实现负载均衡示例
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • LVS实现负载均衡的原理LVS负载均衡负载均衡集群是LoadBalance集群。是一种将网络上的访问流量分布于各个节点,以降低服务器压力,更好的向客户端 ... [详细]
  • Linux下部署Symfoy2对app/cache和app/logs目录的权限设置,symfoy2logs
    php教程|php手册xml文件php教程-php手册Linux下部署Symfoy2对appcache和applogs目录的权限设置,symfoy2logs黑色记事本源码,vsco ... [详细]
  • Linux一键安装web环境全攻略
    摘自阿里云服务器官网,此处一键安装包下载:点此下载安装须知1、此安装包可在阿里云所有Linux系统上部署安装,此安装包包含的软件及版本为& ... [详细]
  • PartI:取经处: http:www.ramkitech.com201210tomcat-clustering ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 目录浏览漏洞与目录遍历漏洞的危害及修复方法
    本文讨论了目录浏览漏洞与目录遍历漏洞的危害,包括网站结构暴露、隐秘文件访问等。同时介绍了检测方法,如使用漏洞扫描器和搜索关键词。最后提供了针对常见中间件的修复方式,包括关闭目录浏览功能。对于保护网站安全具有一定的参考价值。 ... [详细]
  • Tomcat安装与配置教程及常见问题解决方法
    本文介绍了Tomcat的安装与配置教程,包括jdk版本的选择、域名解析、war文件的部署和访问、常见问题的解决方法等。其中涉及到的问题包括403问题、数据库连接问题、1130错误、2003错误、Java Runtime版本不兼容问题以及502错误等。最后还提到了项目的前后端连接代码的配置。通过本文的指导,读者可以顺利完成Tomcat的安装与配置,并解决常见的问题。 ... [详细]
  • Nginx Buffer 机制引发的下载故障
    Nginx ... [详细]
  • ZooKeeper 学习
    前言相信大家对ZooKeeper应该不算陌生。但是你真的了解ZooKeeper是个什么东西吗?如果别人面试官让你给他讲讲ZooKeeper是个什么东西, ... [详细]
  • 构建LNMP架构平台
    LNMP架构的组成:Linux、Nginx、MySQL、PHP关于NginxNginx与apache的作用一样,都是为了搭建网站服务器,由俄罗斯人lgorsysoev开发,其特点是 ... [详细]
  • centos php部署到nginx 404_NodeJS项目部署到阿里云ECS服务器全程详解
    本文转载自:http:www.kovli.com20170919ecs-deploy作者:Kovli本文详细介绍如何部署NodeJS项目到阿里云ECS上, ... [详细]
  • 开发笔记:Memcached高性能内存对象缓存系统
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Memcached高性能内存对象缓存系统相关的知识,希望对你有一定的参考价值。一、Memcached概述 ... [详细]
author-avatar
SIX2FOUR
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有