Apache 负载均衡+Tomcat集群
2014-01-14 15:50
302 查看
花了一下午的时间,研究了一下Apache 负载均衡+Tomcat集群的问题,至于原理高手解释下,我是照葫芦画瓢!现在与大家分享一下
一、本机环境
1.Windows 7 64位操作系统
2.java版本 "1.6.0_20"
3.Apache安装包httpd-2.2.21-win32-x86-no_ssl.msi,默认安装
4.tomcat压缩包(apache-tomcat-6.0.24.zip)
5.在一台机器上进行的
二、配置
1.前提是Apache安装正确,启动正常
2.解压缩多个tomcat,例如d:\tomcat_01,d:\tomcat_02
3.配置httpd.conf文件
找到如下信息,并进行修改
Html代码
#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
Html代码
#Include conf/extra/httpd-vhosts.conf
去掉注释
在httpd.conf最后加上如下代码
Html代码
ProxyRequests Off
<proxy balancer://cluster>
BalancerMember ajp://127.0.0.1:8009 loadfactor=1 route=jvm1
BalancerMember ajp://127.0.0.1:9009 loadfactor=1 route=jvm2
</proxy>
上面的BalancerMember成员是配置tomcat集群的
4.配置httpd-vhosts.conf文件
找到如下代码
Html代码
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.sm.com
DocumentRoot "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/docs/dummy-host.sm.com"
ServerName dummy-host.sm.com
ServerAlias www.dummy-host.sm.com
ErrorLog "logs/dummy-host.sm.com-error.log"
CustomLog "logs/dummy-host.sm.com-access.log" common
</VirtualHost>
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host2.sm.com
DocumentRoot "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/docs/dummy-host2.sm.com"
ServerName dummy-host2.sm.com
ErrorLog "logs/dummy-host2.sm.com-error.log"
CustomLog "logs/dummy-host2.sm.com-access.log" common
</VirtualHost>
找到这些代码删除或者注释掉
在httpd-vhosts.conf文件最后加入如下代码
Html代码
<VirtualHost *:80>
ServerAdmin test@qq.com
ServerName localhost
ServerAlias localhost
ProxyPass / balancer://cluster/
ProxyPassReverse / balancer://cluster/
ErrorLog "logs/dummy-host2.sm.com-error.log"
CustomLog "logs/dummy-host2.sm.com-access.log" common
</VirtualHost>
域名与路径根据自己需要配置
5.配置tomcat,修改conf/server.xml文件
说明,我只用了两个tomcat集群
修改第二个tomcat(两个tomcat任意设置一个)
Html代码
<Server port="8005" shutdown="SHUTDOWN">
将8005改为9005,防止与第一个冲突
Html代码
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
将8080改为9080,将8443改为9443
Html代码
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
将8009改为9009,将8443,改为9443
两个tomcat均需要做如下改动
Java代码
找到
<Engine name="Catalina" defaultHost="localhost" >
改成
<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm2">
并在<Engine name="."..></Engine>标签中加上如下代码
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="6">
<Manager className="org.apache.catalina.ha.session.BackupManager" expireSessionsOnShutdown="false"
notifyListenersOnReplication="true" mapSendOptions="6"/>
<Channel className="org.apache.catalina.tribes.group.GroupChannel">
<Membership className="org.apache.catalina.tribes.membership.McastService"
address="228.0.0.4" port="45565" frequency="500" dropTime="3000"/>
<Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
address="auto" port="5002" selectorTimeout="100" maxThreads="6"/>
<Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
<Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
</Sender>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/>
</Channel>
<Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/>
<Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
tempDir="/tmp/war-temp/" deployDir="/tmp/war-deploy/" watchDir="/tmp/war-listen/" watchEnabled="false"/>
<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
</Cluster>
第一个tomcat配置为<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">
Java代码
改动Membership port 的值与另一个设置为不同
Java代码
改动Receiver port的值与另一个设置为不同
为了防止冲突
6.所有配置已经完毕,我们现在可以进行测试
7.为了让效果更加明显,我们改动\tomcat_01\webapps\ROOT\index.html,在<body></dody>中加上<h1>tomcat1</h1>
改动\tomcat_02\webapps\ROOT\index.html,在<body></dody>中加上<h1>tomcat2</h1>
8.在浏览器中输入http://localhost,看看效果吧!刷新一下会有意外惊喜
一、本机环境
1.Windows 7 64位操作系统
2.java版本 "1.6.0_20"
3.Apache安装包httpd-2.2.21-win32-x86-no_ssl.msi,默认安装
4.tomcat压缩包(apache-tomcat-6.0.24.zip)
5.在一台机器上进行的
二、配置
1.前提是Apache安装正确,启动正常
2.解压缩多个tomcat,例如d:\tomcat_01,d:\tomcat_02
3.配置httpd.conf文件
找到如下信息,并进行修改
Html代码
#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
Html代码
#Include conf/extra/httpd-vhosts.conf
去掉注释
在httpd.conf最后加上如下代码
Html代码
ProxyRequests Off
<proxy balancer://cluster>
BalancerMember ajp://127.0.0.1:8009 loadfactor=1 route=jvm1
BalancerMember ajp://127.0.0.1:9009 loadfactor=1 route=jvm2
</proxy>
上面的BalancerMember成员是配置tomcat集群的
4.配置httpd-vhosts.conf文件
找到如下代码
Html代码
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.sm.com
DocumentRoot "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/docs/dummy-host.sm.com"
ServerName dummy-host.sm.com
ServerAlias www.dummy-host.sm.com
ErrorLog "logs/dummy-host.sm.com-error.log"
CustomLog "logs/dummy-host.sm.com-access.log" common
</VirtualHost>
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host2.sm.com
DocumentRoot "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/docs/dummy-host2.sm.com"
ServerName dummy-host2.sm.com
ErrorLog "logs/dummy-host2.sm.com-error.log"
CustomLog "logs/dummy-host2.sm.com-access.log" common
</VirtualHost>
找到这些代码删除或者注释掉
在httpd-vhosts.conf文件最后加入如下代码
Html代码
<VirtualHost *:80>
ServerAdmin test@qq.com
ServerName localhost
ServerAlias localhost
ProxyPass / balancer://cluster/
ProxyPassReverse / balancer://cluster/
ErrorLog "logs/dummy-host2.sm.com-error.log"
CustomLog "logs/dummy-host2.sm.com-access.log" common
</VirtualHost>
域名与路径根据自己需要配置
5.配置tomcat,修改conf/server.xml文件
说明,我只用了两个tomcat集群
修改第二个tomcat(两个tomcat任意设置一个)
Html代码
<Server port="8005" shutdown="SHUTDOWN">
将8005改为9005,防止与第一个冲突
Html代码
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
将8080改为9080,将8443改为9443
Html代码
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
将8009改为9009,将8443,改为9443
两个tomcat均需要做如下改动
Java代码
找到
<Engine name="Catalina" defaultHost="localhost" >
改成
<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm2">
并在<Engine name="."..></Engine>标签中加上如下代码
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="6">
<Manager className="org.apache.catalina.ha.session.BackupManager" expireSessionsOnShutdown="false"
notifyListenersOnReplication="true" mapSendOptions="6"/>
<Channel className="org.apache.catalina.tribes.group.GroupChannel">
<Membership className="org.apache.catalina.tribes.membership.McastService"
address="228.0.0.4" port="45565" frequency="500" dropTime="3000"/>
<Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
address="auto" port="5002" selectorTimeout="100" maxThreads="6"/>
<Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
<Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
</Sender>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/>
</Channel>
<Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/>
<Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
tempDir="/tmp/war-temp/" deployDir="/tmp/war-deploy/" watchDir="/tmp/war-listen/" watchEnabled="false"/>
<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
</Cluster>
第一个tomcat配置为<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">
Java代码
改动Membership port 的值与另一个设置为不同
Java代码
改动Receiver port的值与另一个设置为不同
为了防止冲突
6.所有配置已经完毕,我们现在可以进行测试
7.为了让效果更加明显,我们改动\tomcat_01\webapps\ROOT\index.html,在<body></dody>中加上<h1>tomcat1</h1>
改动\tomcat_02\webapps\ROOT\index.html,在<body></dody>中加上<h1>tomcat2</h1>
8.在浏览器中输入http://localhost,看看效果吧!刷新一下会有意外惊喜
相关文章推荐
- Apache+Tomcat构建Tomcat负载均衡集群
- Centos5.4下利用apache做tomcat集群并负载均衡
- Apache、Tomcat负载均衡与集群
- 轻松实现Apache,Tomcat集群和负载均衡
- linux下一个apache+tomcat负载均衡和集群
- Apache与Tomcat集群和负载均衡配置
- 实现Apache,Tomcat负载均衡和集群
- 基于Apache的Tomcat负载均衡和集群(2)
- 结合Apache和Tomcat实现集群和负载均衡
- Linux平台上搭建apache+tomcat负载均衡集群
- 基于Apache的Tomcat负载均衡和集群
- Apache+Tomcat集群和负载均衡安装配置笔记
- 轻松实现Apache,Tomcat集群和负载均衡
- Apache+Tomcat构建Tomcat负载均衡集群
- Apache2.2 + tomcat5.5 集群以及负载均衡配置测试
- 实现Apache与Tomcat集群和负载均衡
- linux下apache+tomcat负载均衡和集群
- Apache+Tomcat实现负载均衡及集群(session同步)--四、负载均衡(1)使用mod_jk
- 负载均衡与集群之apache+tomcat