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一致的请求到同一个请求,或者在负载组件中给每个响应增加一个头部属性,指定下次的分发目的地

  1. 各自维护Session,当请求处理结束后,通知其它组件单元更新Session,包括异步和同步模式
  2. 统一维护Session,如把Session放在memcached或者共享文件系统中,可以在容器级别或者应用级别做这个事情
  3. 利用cache server

优势


本地维护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

ProxyRequests Off 这条可以看出,实际上负载均衡器就是一个反向代理,只不过它的代理转发地址不是某台具体的服务器,而是一个 balancer:// 协议: ProxyPass / balancer://mycluster协议地址可以随便定义。然后,在<Proxy>段中设置该balancer协议的内容即可。 BalancerMember指令可以添加负载均衡组中的真实服务器地址。

摘抄网上信息:

配置负载分发
以下配置修改都是在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/

时间: 2024-08-03 09:22:30

Apache 2.x+jboss6.1反向代理session共享问题设置的相关文章

Day06_nginx及反向代理、共享存储nfs

一.nginx服务 nginx服务 装nginx前线装epel-release:yum install epel-release -y(基于这个源安装nginx) 安装nginx:yum install nginx -y 修改配置文件:vim /etc/nginx/nginx.conf 其中access_log 为运行日志 server 下的root 为网站下的根目录 例如:/usr/share/nginx/html cd到root下 vim打开 index.html文件,用户访问时会下载此文件

app与jvm 反向代理时config的设置(用于在web页面显示npm(就如tomcat)产生的页面)

dev: { // Various Dev Server settings contentBase: ROOT, host: ip, port: 8084,    //此端口为任意设置,不重复即可,为页面打开显示 的地址 historyApiFallback: true, open: true, watchContentBase: true, openPage: '', watchOptions: { ignored: /node_modules/, aggregateTimeout: 300,

nginx反向代理-后端服务器组设置

nginx服务器的反向代理时其最常用的重要功能之一,在实际工作中应用广泛,涉及的配置指令也比较多.下面会尽量详细地介绍对应的指令,及其使用状态. 反向代理一般是互联网需要向内网拉取资源,比如访问一个web网站时,互联网应用通过一个代理服务器到后面真实的web服务器拉取应用所需的数据. nginx服务器反向代理用到的指令如果没有特别的说明,原则上可以出现在nginx配置文件的http块,server块和location块中,但是同正向代理一样,一般是搭建在nginx服务器中单独配置一个server

nginx做为反向代理对X-Forwarded-For的设置

X-Forwarded-For:简称XFF头,它代表客户端,也就是HTTP的请求端真实的IP,只有在通过了HTTP 代理或者负载均衡服务器时才会添加该项.它不是RFC中定义的标准请求头信息,在squid缓存代理服务器开发文档中可以找到该项的详细介绍. 标准格式如下: X-Forwarded-For: client1, proxy1, proxy2 从标准格式可以看出,X-Forwarded-For头信息可以有多个,中间用逗号分隔,第一项为真实的客户端ip,剩下的就是曾经经过的代理或负载均衡的ip

在设置 nginx 多 location 子路径反向代理时,必须设置 proxy_pass 也为子路径,名字不必相同

location /admin/api { proxy_pass http://172.26.190.212:7001/api; proxy_set_header X_Real_IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; proxy_c

tomcat+http反向代理+memcached session会话保持

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选.对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用.)页面的访问请求.实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的. 诀窍是,当配置正确时,A

apache https反向代理设置方案

通过设置一台apache服务器完成对  https://10.6.177.66内容的访问,后来经过学习才了解,我们其实就是需要在自己的apache服务器中,创建一个https://10.6.177.66的反向代理.首先介绍一下何为反向代理: 一.反向代理的概念 反向代理也就是通常所说的WEB服务器加速,它是一种通过在繁忙的WEB服务器和Internet之间增加一个高速的WEB缓冲服务器(即:WEB反向代理服务器)来降低实际的WEB服务器的负载. Web服务器加速(反向代理)是针对Web服务器提供

A10应用交付(1030S)反向代理设定

A10性能极其优越,因此我们完全可以将本来使用服务器安装Apache或nginx实现的反向代理迁移到本设备中. 反向代理的意义:物理网络只有一个公网地址,把多个域名都指向这个地址(80端口),而这些域名对应一个服务器的多个应用服务器或多个服务器的多个应用服务器.这样,反向代理就实现了"分发"以及将正确的应用返回给终端. 本次将"反向代理"迁移到A10上实现,配置过程如下: 配置模式下,SLB-模板-应用-HTTP 添加一个新模板 点开"应用转换"

Squid做反向代理缓存

环境介绍: 主机名 角色 IP地址 squid.contoso.com squid代理服务器 192.168.49.135 image01.contoso.com 图片服务器(web) 192.168.49.139 一.准备工作 以其中一台为例: [[email protected] etc]# iptables -L Chain INPUT (policy ACCEPT) target     prot opt source               destination Chain FO