首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 服务器 > Apache >

Apache+Tomcat 负载均衡、集群配备

2012-10-26 
Apache+Tomcat 负载均衡、集群配置本文是看了几位前辈关于Apache+Tomcat 负载均衡、集群的相关文章整理出的

Apache+Tomcat 负载均衡、集群配置

本文是看了几位前辈关于Apache+Tomcat 负载均衡、集群的相关文章整理出的一份以便查阅的文章。

?

有关说明是负载均衡,集群以及他们的优点在这里就不加论述了。

?

在Apache2以前的版本中是没有集成和tomcat通信的jk模块,所以要单独下载mod_jk.so文件,再加以配置

?

准备:apache(1个)、tomcat(2个或2个以上)、mod_jk.so文件

?

这种配置方式见 http://www.iteye.com/topic/615307

?

Apache2之后的版本中集成了mod_jk后配置简单了许多,准备的东西和上面一样。

?

安装好apache后,找到\conf下的httpd.conf? 用文本编辑器打开

在110行处将

LoadModule proxy_module modules/mod_proxy.soLoadModule proxy_ajp_module modules/mod_proxy_ajp.soLoadModule proxy_balancer_module modules/mod_proxy_balancer.soLoadModule proxy_connect_module modules/mod_proxy_connect.soLoadModule proxy_ftp_module modules/mod_proxy_ftp.soLoadModule proxy_http_module modules/mod_proxy_http.so

这6行的注释放开(即去掉#)

?

在462行附近把

Include conf/extra/httpd-vhosts.conf 行前的注释放开

?

然后再该文档的最下方加入

ProxyRequests Off <proxy balancer://jqname>         BalancerMember ajp://127.0.0.1:8009 loadfactor=1 route=tomcat1        BalancerMember ajp://127.0.0.1:7009 loadfactor=1 route=tomcat2</proxy>

?配置apache的反向代理

?

balancer://jqname 配置在集群中所有的tomcat节点

?

下面配置2个集群的tomcat apache与tomcat通信是通过ajp协议,由于我是在一台机器上部署的2个tomcat

所以这里都是127.0.0.1,后面是ajp通信端口在tomcat里面配置,下面会提到。

?

loadfactor是类似一个权值的东西1:1就是各处理50%的请求,以此类推

?

route对应在tomcat中配置的通道路径

?

这样httpd.conf就配置完毕了

?

?

然后打开\conf\extra下的httpd-vhosts.conf 在最后加入

<VirtualHost *:80>          ServerAdmin zhanghaifeng212@yahoo.com.cn         ServerName  192.168.12.65         ServerAlias localhost          ProxyPass / balancer://jqname/ stickysession=jsessionid nofailover=On          ProxyPassReverse / balancer://jqname/          ErrorLog "logs/zhanghf-error.log"         CustomLog "logs/zhanghf-access.log" common</VirtualHost>

ServerAdmin 管理员邮箱

ServerName 域名(可以用ip)

ServerAlias 别名

balancer://jqname 需要负载均衡 “jqname” 集群名称,需要和httpd.conf中的集群名称一致

?

httpd-vhosts.conf 配置完毕

?

?

tomcat的配置(这里用的是2个tomcat在同一台机器)

?

分别将tomcat1和tomcat2的conf 中的 server.xml 修改如下

?

在99行附近把

<!-- You should set jvmRoute to support load-balancing via AJP ie :    <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">             --> 
放开注释,把下面的<Engine name="Catalina" defaultHost="localhost"> 加上注释;
或直接在这句上加入 jvmRoute节点

?

jvmRoute和httpd.conf中的route保持一致

?

再将107行附近的

<!--      <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>      -->    放开注释

?放开注释,这个是配置集群的,我们测试用的是tomcat 的默认集群配置

?

?

因为我用的是同一台机器放2个tomcat,需要改一个tomcat 的配置 (如tomcat2的server.xml修改如下)

?

22行附近

<Server port="8005改为7005或其他" shutdown="SHUTDOWN">

?

69行附近

?<Connector port="8080改为7080或其他" protocol="HTTP/1.1"
?????????????? connectionTimeout="20000"
?????????????? redirectPort="8443" />

?

90行附近

<Connector port="8009改为7009或其他" protocol="AJP/1.3" redirectPort="8443" />

?

这里的ajp端口要和httpd.conf中的端口对应。

?

tomcat配置完毕

?

?

最后将项目分别部署到tomat1,和tomcat2中,启动 apache,tomcat1,tomcat2

?

访问http://localhost/yourProjectName/index.jsp 如果加了后台输出语句即可看到,每次请求是轮流使用

tomcat1和tomcat2,在session中保存几个变量输出,也可看见session的同步。把其中一个tomcat关闭,也不

影响另一个。

?

欢迎大家批判!

?

    -->  

<!-- You should set jvmRoute to support load-balancing via AJP ie :
    <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">        
    --> Xml代码
放开注释,把下面的<Engine name="Catalina" defaultHost="localhost"> 加上注释; 

放开注释,把下面的<Engine name="Catalina" defaultHost="localhost"> 加上注释;Xml代码
或直接在这句上加入 jvmRoute节点 

或直接在这句上加入 jvmRoute节点
jvmRoute和httpd.conf中的route保持一致

2、没有看在哪里配置转发哪些类型的请求,原来是这样指定的:JkMount /*.jsp controller,现在在何处配置呢?

    -->  

<!-- You should set jvmRoute to support load-balancing via AJP ie :
    <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">        
    --> Xml代码
放开注释,把下面的<Engine name="Catalina" defaultHost="localhost"> 加上注释; 

放开注释,把下面的<Engine name="Catalina" defaultHost="localhost"> 加上注释;Xml代码
或直接在这句上加入 jvmRoute节点 

或直接在这句上加入 jvmRoute节点
jvmRoute和httpd.conf中的route保持一致

2、没有看在哪里配置转发哪些类型的请求,原来是这样指定的:JkMount /*.jsp controller,现在在何处配置呢?



就是在tomcat的server.xml 99行附近的
<Engine name="Catalina" defaultHost="localhost">这个节点加上一个属性

<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">
jvmRoute的值和httpd.conf中的
BalancerMember ajp://127.0.0.1:8009 loadfactor=1 route=tomcat1  保持一致
3 楼 lgdlgd 2010-03-22   我第2点说的是,如何把*.jsp 、*.action请求给tomcat处理,而静态页面如*.jpg等请求直接让apache处理掉? 4 楼 xian_hf 2010-03-22   2、没有看在哪里配置转发哪些类型的请求,原来是这样指定的:JkMount /*.jsp controller,现在在何处配置呢?


这个问题我查了貌似没有配置的地方,我自己做了个测试,如果是请求htmlapache自己就处理了不会分发给tomcat,如果是jsp则分发。这个问题期待大牛解答。

热点排行