Apache+Resin集群实现负载均衡 (转载)

togeth 2013-11-19

Apache+Resin集群实现负载均衡  

 

 
 
resin自生就可以进行负载均衡设置,但是只有professional版本才支持,这个东西的license一个CPU要$500,所以实际使用的apache+resin的组合(免费嘛^_^),apache(前台)+ resin(后台集群)可以很好的实现负载均衡。apache用来服务静态页面,resin用来服务动态页面。
如果并发访问量很大的话,就应该考虑在apache前面加squid做cache、通过dns轮寻,再加上使用LVS将是更好的方案。
本文示例中使用3台linux机器,其中1台装apache作为前端服务器,另外2台装resin作为后端服务器。
 
1. 实验环境
apache机器可以加两块网卡,对外公网IP,接受用户请求,对内使用内网IP,与后端的Resin通信
202.38.2.*:        前端服务器(公网IP)
192.168.11.5:   前端服务器(内网IP)
192.168.11.10: 后端服务器1
192.168.11.11: 后端服务器2

 
2. 前端服务器安装apache和resin模块
前端安装apache,安装resin,要联合apache安装
#./configure --with-apxs=/home/apache/bin/apxs --with-java-home=/home/jdk/ --prefix=/home/resin --with-apache=/home/apache
将resin编译为apache的模块,载入模块mod_caucho.so,本机上的resin就不用配置了,所以就不会发挥作用
此处略去...

 
3. 后台服务器1&2分别安装resin
因为前端已经安装了mod_caucho.so,所以此处的resin只需要正常安装就可以了(通常resin直接解包之后就能启动了,可以不用make,make install),通常两个后端服务器的内容都是完全一样的,除去ip和port
此处略去...

 
4. 配置后端resin
需要修改2台后端resin服务器的配置文件resin.conf,路径/usr/local/resin/conf/resin.conf,如果有多个resin,均按此方式配置
# vi /usr/local/resin/conf/resin.conf
找到配置文件中的<!-- define the servers in the cluster -->,修改负载均衡配置,需要设置服务器的ID、IP和port,例如:
192.168.11.10的设置如下
<server id="a" address="192.168.11.10" port="6800"/>
192.168.11.11的设置如下:
<server id="b" address="192.168.11.11" port="6800"/>

 
5. 配置前端apache
需要对前端服务器(192.168.11.5)的apache配置文件httpd.conf进行修改
# vi /homel/apache/conf/httpd.conf
(1)修改DirectoryIndex
找到配置文件中的DirectoryIndex配置:
DirectoryIndex index.html index.html.var
增加index.jsp(动态页面),修改为:
DirectoryIndex index.jsp index.html index.html.var
(2)修改resin相关配置
在apache的配置文件httpd.conf最后增加以下内容
LoadModule caucho_module /home/apache/modules/mod_caucho.so 
ResinConfigServer 192.168.11.10 6800
ResinConfigServer 192.168.11.11 6800 
CauchoConfigCacheDirectory /tmp 
CauchoStatus yes
 
ResinConfigServer配置的是调用resin负载均衡器的IP地址和端口号,
192.168.11.5的apache前端服务器,分别调用了192.168.11.10和192.168.11.11两个Resin后端服务器

 
6. 访问测试
(1)编写测试页面
为了检查负载均衡是否生效,需要编写测试页面a.jsp,通过在web页面和各Resin的日志中显示的内容进行辨别,下面192.168.11.10的其中一个Resin为例说明
<%System.out.println("server 192.168.11.10");%>          //在Resin日志中显示 
server 192.168.11.10                                                      //在web页面显示
其他Resin的a.jsp参照上例,只需要将其中的内容替换掉,例如192.168.11.11的a.jsp文件可以写成
<%System.out.println("server 192.168.11.11");%>          //在Resin日志中显示 
server 192.168.11.11                                                      //在web页面显示
(2)发布项目
分别将来两个a.jsp文件放到192.168.11.10和192.168.11.11设置的resin的虚拟目录中,如果某resin的虚拟目录是
<web-app id="/" root-directory="webapps/ROOT"/>,则需要将a.jsp放到resin的webapps/ROOT目录下
(3)启动服务
#启动Apache
#/home/apache/bin/apachectl -k start
#分别启动调用的resin
启动192.168.11.11的resin中id为"a"的服务,需要在192.168.11.11服务器执行如下命令
# /usr/local/Resin/bin/httpd.sh -server a start
启动192.168.11.10的resin中id为"b"的服务,需要在192.168.11.10服务器执行如下命令
# /usr/local/resin/bin/httpd.sh -server b start
(4)验证a.jsp
使用IE多次访问web发布页面,通过页面显示的内容和resin日志打印的内容,检查是否随机调用各后端服务器1&2的resin的a.jsp文件。
Web页面的访问地址如下
http://202.38.2.*/a.jsp
查看resin的方法如下,如果要看查看192.168.11.10的resin中id为"a"服务的日志,需要在192.168.11.10服务器执行如下命令
# tail –f / usr/local/resin/log/a.log
多次访问http://202.38.2.*/a.jsp,如果每次会随机显示其中一个resin的a.jsp文件的内容,之后关闭其中个几个resin(不是全部关闭),http://202.38.2.*/a.jsp仍能正常访问,至此就完成了负载均衡的测试,证明配置成功。之后就可以正式发布项目了。

相关推荐

Limitless / 0评论 2010-08-19
tdeclipse / 0评论 2013-08-01