码迷,mamicode.com
首页 > 其他好文 > 详细

Apache反向代理结合Tomcat集群来实现负载均衡(四)、Apache反向代理

时间:2014-07-31 13:33:16      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:集群   apache   负载均衡   反向代理   tomcat   

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

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

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

打开apache的反向代理功能

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

<span style="font-size:18px;">#加载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
</span>
这样即打开了Apache的mod_proxy模块

增加Apache监听端口

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

<span style="font-size:18px;"><VirtualHost *:8011>
         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>
</span>

其中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文件尾处增加如下配置:

<span style="font-size:18px;">ProxyRequests Off
<proxy balancer://cluster>
	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
</proxy>
</span>
其中ProxyRequests Off为关闭正向代理,因为正向代理允许客户端通过它访问任意网站并且隐藏客户端自身,因此你必须采取安全措施以确保仅为经过授权的客户端提供服务。这里用Apache的反向代理,所以先把正向代理给关了。

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

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

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

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

<span style="font-size:18px;">BalancerMember ajp://127.0.0.1:18009 loadfactor=1 route=tomcat7_node1</span>

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

测试步骤

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

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

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

Apache反向代理结合Tomcat集群来实现负载均衡(四)、Apache反向代理,布布扣,bubuko.com

Apache反向代理结合Tomcat集群来实现负载均衡(四)、Apache反向代理

标签:集群   apache   负载均衡   反向代理   tomcat   

原文地址:http://blog.csdn.net/liu251890347/article/details/38312649

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!