`
7wolfs
  • 浏览: 177792 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

Apache 负载均衡的环境搭建 (使用Tomcat作为web server)

    博客分类:
  • Java
 
阅读更多
前言
使用tomcat作为web server,搭建Apache 负载均衡的测试环境时,参阅了网上的一些资料。发现资料发布者的本地环境与自己的开发环境差别很大,不能根据网上资料成功搭建起集群测试环境。搭建过程中,遇到了各种问题,比如:多了IPV6协议、Apache服务在win 7 64位机器下的设置等。不过在此,还是要感谢网上资料的提供者,给了我一些参考。下面,我整理了我使用Apache配置Tomcat的过程,供大家参考。在文章的最后,列出了我遇到的问题及解决方案。本次环境搭建是为了测试Apache负载均衡的基本功能,不涉及到tomcat自身集群特性和apache各种负载均衡策略的验证,这次环境搭建只是作为对负载均衡概念的感性认识,更详细的细节,会在以后的研究中逐步深入。

配置过程:
一、本机环境
操作系统:win 7 64位 (带有IPV4、IPV6协议)
JDK:j2sdk1.4.2_19
apache: apache_2.2.2-win32-x86-no_ssl.msi
tomcat:apache-tomcat-5.5.33.zip

apache和tomcat可以在他们的官网上下载到。

二、安装
1. apache安装:双击apache的安装文件,选择推荐的“端口80...”的安装选项,按照提示输入域名、管理员邮箱(这些值不需要是真实的)。
2. tomcat安装:将压缩包分别解压到两个不同目录里,作为两个测试用的tomcat服务器。

三、参数设置
1. apache参数设置:修改httpd.conf
1)将httpd.conf文件里提到的下面三个so文件引用说明中的最前端的注释符号‘#’去掉,使apache引导这三个插件,他们在集群环境里分别起到代理、负载均衡、支持http网络协议等职责。
#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

2) 在httpd.conf文件末尾,加入如下内容
ProxyRequests Off  
<Proxy balancer://mycluster>  
    BalancerMember http://localhost:12080  
    BalancerMember http://localhost:11080  
</Proxy>  
ProxyPass / balancer://mycluster/ 

BalancerMember 条目中可以设置具体的负载均衡策略。

2.Tomcat参数设置
由于使用一台机器做集群环境的搭建测试,所以为了避免两个tomcat服务器端口冲突,需要修改他们的端口。
第一个tomcat服务器的server.xml文件修改内容如下:
<Server port="8005" shutdown="SHUTDOWN">

<Connector address="127.0.0.1"  port="11080" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" />

<Connector  port="11009" protocol="AJP/1.3" redirectPort="8443"/>


第二个tomcat服务器的server.xml文件修改内容如下:
<Server port="8005" shutdown="SHUTDOWN">

<Connector address="127.0.0.1"  port="12080" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" />

<Connector  port="12009" protocol="AJP/1.3" redirectPort="8443"/>


四、启动服务器
1. 启动apache,可以通过windows的‘服务’来启动apache,或者使用apache自带命令‘ httpd -k restart -n 服务名’来启动apache
2. 分别启动两个tomcat,执行startup.bat

五、测试
使用附件中测试程序test.rar,将它解压到tomcat的webapps目录里。测试程序test2.jsp里的负载均衡下的请求分发的体现:
.......
//request.getLocalAddr和request.getLocalPort体现了实际处理请求的web server地址和端口
<%
out.println(request.getLocalAddr() + " : " + request.getLocalPort()+"<br>");%>
......


在浏览器中输入http://127.0.0.1/test/test2.jsp,不断刷新该地址,会在两个tomcat的控制台中看到从apache转发过来的请求。这个结果验证了apache的负载均衡已经起作用了。


下面是我配置过程中遇到的一些问题及解决方案。
问题列表:
1. Apache服务在win 7 64位机器下的设置
现象:“控制面板\所有控制面板项\用户帐户\更改用户账户控制设置”里的级别设定,如果不设成‘从不通知’,会造成apache httpd安装完后,无法生成window服务,无法控制httpd的启动和关闭。
解决方案:安装apache httd之前,先把“控制面板\所有控制面板项\用户帐户\更改用户账户控制设置”里的级别设定改成‘从不通知’。安装完后,在控制httpd启动和关闭时,也需要保证该级别为‘从不通知’。

2. IPV6协议的影响
现象:如果本机装了IPV6协议,则tomcat启动后,tomcat使用的IP是IPV6协议下的IP(如localhost解析为::1),访问tomcat下的localhost应用,如果想通过IP形式,需使用http://[::1]:8080/格式。这会与apache httpd的转发机制想抵制。apache httpd转发localhost请求,使用的是IPV4协议(localhost为127.0.0.1)。
解决方案:为了使tomcat与apache httpd使用相同版本IP协议。在tomcat的server.xml中,修改http1.1下的connector设置,增加address="127.0.0.1"属性。
设置如下:
<Connector address="127.0.0.1" port="11080" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" />


3. 错误的分析
当遇到异常情况时,查看apache下的日志文件内容。
0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics