Apache 2.2.10+Apusic 5.1负载均衡应用实践

近日,系统应用突然慢的受不了,有时还不能正常登录,于是下决心将系统负载均衡方案实践下。

环境准备。

负载均衡采用的方式无非是两类,硬件的负载均衡服务器,软件的类Apache的proxy_balancer,其他的方式暂时没有了解,我选择了后者,其一是不要花钱,其二,达到的效果并不逊于硬件设备。好了,方案选定后,开始实施吧,根据apache官方文档,负载均衡配置确实很简单。

实践步骤:

1.加载对应的组件。

proxy_module ,proxy_ajp_module ,proxy_balancer_module ,proxy_connect_module ,proxy_http_module ,

2.配置负载均衡,hosts添加:10.9.23.30 k.test.com.cn;ws为需要访问的项目名称

<VirtualHost *:80>
ServerName k.test.com.cn
ProxyRequests off
ProxyPreserveHost off
SetEnv force-proxy-request-1.0.1
SetEnv proxy-nokeepalive 1

<Proxy balancer://test>
BalancerMember http://10.9.23.30:9888/ loadfactor=1 
BalancerMember http://10.9.23.30:8888/ loadfactor=1 

</Proxy>
ProxyPass /ws balancer://test/ws  nofailover=off 
ProxyPassReverse / balancer://test/


</VirtualHost>

3.经过上面的配置,正常情况下,负载均衡配置应该是可以使用的,只有正常启动apache即可,采用的分配策略是默认的byrequests,分配权重是轮询访问,nofailover=off允许失效转移。

4.配置balancer-manager监控负载状态及配置修改

加载状态组件status_module ,配置状态监听,如果是生产环境,要慎重开发权限。

<Location /balancer-manager>
SetHandler balancer-manager
Order Deny,Allow
Allow from All
</Location>

访问http://k.test.com.cn/balancer-manager即可查看负载均衡运行状态。

5.设定sticky session,根据官方的文档,sticky session有两种方式,一种设置是通过header进行设定,一种是在请求连接中添加JSESSIONID属性,

如:ProxyPass / balancer://mycluster/ stickysession=JSESSIONID|jsessionid

查询网上负载均衡的配置大多采用stickysession=JSESSIONID|jsessionid方式进行设定,不过,在配置Apusic的sticky session时,采用stickysession=JSESSIONID的方式(Apusic官方文档也是这样配置的),却发现,同一个session请求被不断的转发给其他的负载服务器,导致应该正常显示的数据变得不正常,经过多次实践,最终采用了通过header进行sticky session设定的方式,问题解决。

操作步骤:加载headers_module,重新修改步骤2中设定的负载,并修改了分配方式为bybusyness。

<VirtualHost *:80>
ServerName k.test.com.cn
ProxyRequests off
ProxyPreserveHost off
SetEnv force-proxy-request-1.0.1
SetEnv proxy-nokeepalive 1
Header add Set-Cookie "ROUTERID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED

<Proxy balancer://test>
BalancerMember http://10.9.23.30:9888/ loadfactor=1 
BalancerMember http://10.9.23.30:8888/ loadfactor=1 
ProxySet lbmethod=bybusyness
ProxySet stickysession=ROUTERID
</Proxy>
ProxyPass /ws balancer://test/ws  nofailover=off 
ProxyPassReverse / balancer://test/


</VirtualHost>


6.应用服务器采用的Apusic,后端服务器为了能够支持Apache的sticky session,需要在Apusic对应apusic.conf中的

<SERVICE CLASS="com.apusic.web.session.SessionService" >节点中添加

<ATTRIBUTE NAME="Distributable" VALUE="True"/>
    <ATTRIBUTE NAME="Replicable" VALUE="True"/>
    <ATTRIBUTE NAME="SessionStick" VALUE="True"/>


也可以直接引用config下的cluster.conf文件,只需要在startapusic.cmd中修改

%JAVA_RUN% -Dcom.apusic.domain.home="%DOMAIN_HOME%" com.apusic.server.Main -root "%APUSIC_HOME%" -config /config/cluster.conf


7.好吧,最后重启各Apusic服务,并启动Apache,貌似负载已经实施成功,系统能正常访问,访问速度恢复正常。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kete2015

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值