设为首页 加入收藏

TOP

Apache反向代理结合Tomcat集群来实现负载均衡(四)、Apache反向代理
2015-07-20 18:01:41 来源: 作者: 【 】 浏览:2
Tags:Apache 代理 结合 Tomcat 集群 实现 负载 均衡

上文中主要介绍了tomcat的集群方式,下边再来说下apache的反向代理。反向代理可以这样来理解,我们通常认为的代理(正向代理)是局域网内部机器本身不能上网,网关可以上网,大家在局域网内是通过网关上网的,这个网关就是个代理机器。反向代理意思就反了过来,现在网关并不是给内部局域网做代理的,而是给外部请求内部局域网做代理的,例如,当前一个应用系统在局域网内的A机器上,外部网络不能直接访问A机器,而是通过网关访问到了A,这里网关就是个反向代理了。

总结:正向代理---为在防火墙内的局域网客户端提供Internet的途径,反向代理---将防火墙后面的服务器提供给Internet用户访问。

大家常说的Apache负载均衡就是利用了Apache的反向代理,再加上负载均衡策略实现的。下边说下apache如何做负载均衡。

打开apache的反向代理功能

在Apache2.2x版本后已经加入了mod_proxy(反向代理)模块,只是默认没有启用而已,下边打开自己机器上Apache目录下的httpd.conf文件,去掉mod_proxy模块前的注释:

#加载mod_proxy
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
这样即打开了Apache的mod_proxy模块

增加Apache监听端口

在httpd.conf的最后加上如下配置:


   
     ServerAdmin [email]****.com[/email] ServerName localhost ServerAlias localhost ProxyPass / balancer://cluster/ stickysession=JSESSIONID nofailover=Off ProxyPassReverse / balancer://cluster/ ErrorLog "logs/error.log" CustomLog "logs/access.log" common 
   

其中VirtualHost *:80代表笔者本机的http server端口。一般项目都监听在HTTP服务的默认端口80上。

ProxyPass / balancer://cluster/代表所有的请求都会重定向到balancer://cluster/处理。balancer是内置负载。cluster为下边配置中的负载名称(名字随意但上下要保持一致)

ProxyPassReverse / balancer://cluster/是反向代理,也就是将所有的请求反向代理到负载均衡后的应用url路径中。

stickysession=JSESSIONID nofailover=Off是做Session复制用的。(粘性session)

增加负载均衡处理配置

继续在httpd.conf文件尾处增加如下配置:

ProxyRequests Off

   
     BalancerMember ajp://127.0.0.1:18009 loadfactor=1 route=tomcat7_node1 BalancerMember ajp://127.0.0.1:28009 loadfactor=1 route=tomcat7_node2 # status=+H为配置热备,当所有机器都over时,才会请求该机器 #BalancerMember http://192.168.1.218:8009 status=+H #按照请求次数均衡(默认) #ProxySet lbmethod=byrequests #按照权重 #ProxySet lbmethod=bytraffic #按负载量,也就是往负载少的派发新请求 #ProxySet lbmethod=bybusyness ProxySet lbmethod=bybusyness 
   
其中ProxyRequests Off为关闭正向代理,因为正向代理允许客户端通过它访问任意网站并且隐藏客户端自身,因此你必须采取安全措施以确保仅为经过授权的客户端提供服务。这里用Apache的反向代理,所以先把正向代理给关了。

BalancerMember ajp://127.0.0.1:18009 loadfactor=1 route=tomcat7_node1
为负载的成员都有哪些(将外部请求转发到哪些集群成员上),18009为tomcat的ajp端口,注意在同一机器上两个tomcat的端口不要一致。

route为路由标识,为上文tomcat中的jvmRoute,注意要跟上文中的tomcat中的名字保持一致

ProxySetlbmethod即是负载均衡算法策略。此处使用的是按照负载量,吞吐量少Node的之后可要小心喽,分配到你的任务可就多了。而byrequests策略更偏重的是次数。

Apache的负载均衡配置已结束,下边就开始测试吧,测试前需要注意一点,如果需要将tomat中的web项目作为默认项目启动(即输入http://localhost:8080即可访问到该项目)时,需要也将apache的负载均衡配置中的

BalancerMember ajp://127.0.0.1:18009 loadfactor=1 route=tomcat7_node1

端口号后也不用加项目名称。如果是非作为tomcat的默认项目,则需要改Apache的配置为ajp://127.0.0.1:18009/WebProject(即加上项目名称),总之就是tomcat和apache的项目路径保存一致即可,否则session信息将无法共享。

测试步骤

1、启动Apache、2个tomcat(不分先后启动,只有都启来即可)

2、访问本机的http://localhost(或者http://localhost/WebProject,根据自己的项目路径)

3、可以看到apache将请求转发到不同的用用服务器上

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇hdu 3572 Task Schedule(网络流 d.. 下一篇poj3469 Dual Core CPU --- 最小割

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: