Apache配置tomcat负载和session粘连(stickysession)

6 篇文章 0 订阅
本文介绍了如何在Apache服务器上配置Tomcat负载均衡,包括最简单的负载均衡配置和实现Session粘连(stickysession)的方法,以确保用户在登录后始终连接到同一台Tomcat服务器。配置涉及Apache的proxy、proxy_balancer和proxy_http模块,以及使用mod_headers模块自动生成cookie以保持Session一致性。
摘要由CSDN通过智能技术生成
前面看到篇文章 介绍apache和tomcat关联负载的,说道:apache服务器和tomcat的连接方法其实有三种:JK、http_proxy和ajp_proxy。 并且介绍了使用JK的配置方式,链接见
http://jackandroid.iteye.com/blog/627147

ajp是另外一个协议了,也就是tomcat里面那个默认8009端口监听的,平时很少用到。

http_proxy的方式,自己配置了一下,留档保存

[list]
  • 1.Apache版本:Apache http server 2.2.22(真2...,理论上2.1以后都支持session sticky)
  • 2.Tomcat: tomcat 6.0.32*2,分别监听80和8089端口,并在webapps目录中放置hello目录和hello/index.html文件,文件内容设置成不一样的,用于待会儿测试区分访问的结果。
  • 3.安装(略)
  • 4.最简单的负载均衡:配置apache的conf/httpd.conf文件
  • a.启用以下三个模块:
    LoadModule proxy_module modules/mod_proxy.so
    LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
    LoadModule proxy_http_module modules/mod_proxy_http.so


    b.在最下方加入如下配置,并重启apache,注意各种斜杠和空格:
    ProxyRequests Off
    <Proxy balancer://mycluster>
    	BalancerMember http://localhost:81/
    	BalancerMember http://localhost:8089/
    </Proxy>
    ProxyPass / balancer://mycluster/


    c.直接访问localhost/hello,并刷新。会发现页面会在81和8089之间跳转。

    d.简单解释:启用proxy,负载,http_proxy模块,定义了个新的"mycluster"负载,这个名字可以换掉,并且发送的地址为81和8089
  • 5.stickysession负载配置
  • a.解释:客户A第一次访问被分配到81端口的tomcat并且登陆了,第二次访问时候访问到了8089,结果就坑了,因为8089的tomcat并没有session。 解决方式有两种,第一种是session共享,第二种就是stickysession session粘连,就是说用户一旦访问了某个tomcat,就给他个cookie,让他在后面的请求都访问那个tomcat。

    b.session Sticky 可以考虑使用tomcat自己的jsessionid那个cookie,我们这里使用apache的http-header这个模块,由apache来自动生成cookie,配置如下:

    补充启用header模块:
    LoadModule headers_module modules/mod_headers.so


    proxy配置修改为:
    Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED

    ProxyRequests Off
    <Proxy balancer://mycluster>
    	BalancerMember http://localhost:81/ route=server1
    	BalancerMember http://localhost:8089/ route=server2
    </Proxy>
    ProxyPass / balancer://mycluster/ stickysession=ROUTEID
    


    header那行用于自动生成cookie
    ProxyPass那行 最后的stickysession=ROUTEID,表示从cookie中读取ROUTEID,并自动分配到相应的服务上去。

    c. 访问localhost/hello 会发现浏览器自动生成了ROUTEID这个Cookie,并且刷新后还是保留在那个tomcat, 删除cookie并刷新,则可能会到其他tomcat。


    [/list]

    这里补充个很恶心的东西:
    Apache的Restart不能完全重新加载修改后的conf文件,重启Apache最好先Stop再Start。

    后续要写个反向代理的blog。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值