Apache 2.x+jboss6.1反向代理session共享问题设置
2016年8月4日,第一次开笔写博客园,今天在公司解决了一个问题。
apache+jboss做负载均衡的问题一直困扰了很久。问题描述如下,使用apche做反向代理转发给3台jboss 的app,app有session会话。为了跳转不丢失session会话,需要配置。经过几天的寻找,大概有两种方法:
1、jboss上配置session共享
2、apache上将请求转发至已访问过的链路
Session处理
另一方面就是多个业务逻辑单元之间的Session处理,处理方式有两种,一种是Session sticky模式,另外一种是Session共享模式。
|
Session处理方式 |
Session Sticky |
Session共享 |
|
处理逻辑 |
把同一个用户的Session一直发送到同一个逻辑单元处理 |
所有的后端处理逻辑单元共享Session或者Session更新时通知其它逻辑单元 |
|
主要实现方式 |
指定负载的分发组件(如Apache),把请求中包含特定属性的请求发到同一个连接,如指定jsessionid一致的请求到同一个请求,或者在负载组件中给每个响应增加一个头部属性,指定下次的分发目的地 |
|
|
优势 |
本地维护Session,不需要访问网络存取或者通知其它处理单元变更 |
完全的随机分发,可以根据服务忙闲调整分发策略,高可用性 |
|
劣势 |
一台服务器宕机后,当前Session断掉 |
网络存取操作等耗时,影响处理效率(根据选用的策略不同造成影响不同) |
官方文档描述:
Examples of a balancer configuration
Before we dive into the technical details, here's an example of how you might use mod_proxy_balancer to provide load balancing between two back-end servers:
<Proxy balancer://mycluster>
BalancerMember http://192.168.1.50:80
BalancerMember http://192.168.1.51:80
</Proxy>
ProxyPass /test balancer://mycluster
Another example of how to provide load balancing with stickyness using mod_headers, even if the back-end server does not set a suitable session cookie:
Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED
<Proxy balancer://mycluster>
BalancerMember http://192.168.1.50:80 route=1
BalancerMember http://192.168.1.51:80 route=2
ProxySet stickysession=ROUTEID
</Proxy>
ProxyPass /test balancer://mycluster

摘抄网上信息:
配置负载分发
以下配置修改都是在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/
Apache 2.x+jboss6.1反向代理session共享问题设置的更多相关文章
- Apache 配置ArcGIS server/portal 反向代理
背景 处于安全,负载均衡,访问加速等原因会对服务器启用反向代理.arcgis for server的默认的访问地址为http://server:6080/arcgis.这个时候端口和实例名都暴露了.可 ...
- Windows下Apache服务多个端口反向代理配置
修改\Apache24\conf\httpd.conf: 1.修改安装包地址: Define SRVROOT "/Apache24" 修改为: Define SRVROOT &qu ...
- (Nginx反向代理+NFS共享网页根目录)自动部署及可用性检测
1.nginx反向代理安装配置 #!/usr/bin/bash if [ -e /etc/nginx/nginx.conf ] then echo 'Already installed' exit e ...
- app与jvm 反向代理时config的设置(用于在web页面显示npm(就如tomcat)产生的页面)
dev: { // Various Dev Server settings contentBase: ROOT, host: ip, port: 8084, //此端口为任意设置,不重复即可,为 ...
- nginx反向代理-后端服务器组设置
nginx服务器的反向代理时其最常用的重要功能之一,在实际工作中应用广泛,涉及的配置指令也比较多.下面会尽量详细地介绍对应的指令,及其使用状态. 反向代理一般是互联网需要向内网拉取资源,比如访问一个w ...
- 动态PHP电商网站伪静态的 Nginx反向代理Cache缓存终极设置
转自: http://www.ttlsa.com/nginx/dynamic-php-nginx-cache/
- apache反向代理 负载均衡
开启模块: LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so LoadModule slotmem_sh ...
- [转]用apache反向代理解决单外网ip对应内网多个web主机的问题
用apache反向代理解决单外网ip对应内网多个web主机的问题 转载一个有独立外网IP,需内网服务器对外发布的例子,是应用apache虚拟主机的. 来源地址:http://www.itshantou ...
- apache做反向代理
实验目的 通过apache实现反向代理的功能,类似nginx反向代理和haproxy反向代理 环境准备 逻辑架构如下 前端是apche服务器,监听80端口,后端有两台web服务器,分别是node1和n ...
随机推荐
- 用Javascript的for循环输出质数
<body> <script type="text/javascript"> for(i=2;i<=300;i++){ var prime = tru ...
- 初谈使用Spring的感受
我记得刚开始学Spring的时候,只是很自然的把它当做一个类似其他J2EE的框架来学习.那时候学Spring很大一部分是为了以后面试需要,因为毕竟搞Java的,你说不会Spring这都有点说不过去.当 ...
- C语言指针类型 强制转换
关于C语言指针类型 强制转换 引用一篇文章: C语言中,任何一个变量都必须占有一个地址,而这个地址空间内的0-1代码就是这个变量的值.不同的数据类型占有的空间大小不一,但是他们都必须有个地址,而这个 ...
- Stockbroker Grapevine
http://poj.org/problem?id=1125 #include<cstdio> #include<cstring> #include<cmath> ...
- PBOC规范研究
一.ISO14443协议和PBOC关于CID的约定 看过协议的人其实都明白,RATS命令中参数字节的低半字节是CID,期中,CID不能为15. ISO14443协议中要求当RATS命令的CID等于0时 ...
- BitmapFactory.decodeResource(res, id); 第一个参数跟第二个参数有什么关系?
BitmapFactory.decodeResource(res, id); res= getResources();activity的方法 id = R.drawable.x
- Android 4.4 上实现透明导航栏和状态栏 Translucent system bar
Translucent system UI styling To get the most impact out of your content, you can now use new window ...
- iPhone之为UIView设置阴影(CALayer的shadowColor,shadowOffset,shadowOpacity,shadowRadius,shadowPath属性)
效果图: 以下代码实现: 第一个图片的代码 //加阴影--任海丽编辑 _imageView.layer.shadowColor = [UIColor blackColor].CGColor;//sha ...
- 开源src镜像
开源src镜像: http://download.savannah.gnu.org/releases/
- G - Strongly connected - hdu 4635(求连通分量)
题意:给你一个图,问最多能添加多少条边使图仍为不是强连通图,如果原图是强连通输出 ‘-1’ 分析:先把求出连通分量进行缩点,因为是求最多的添加边,所以可以看成两部分 x,y,只能一部分向另外一部分连边 ...