`
jetway
  • 浏览: 473543 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

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代码 复制代码 收藏代码
  1. #LoadModule proxy_module modules/mod_proxy.so   
  2. #LoadModule proxy_ajp_module modules/mod_proxy_ajp.so   
  3. #LoadModule proxy_balancer_module modules/mod_proxy_balancer.so   
  4. #LoadModule proxy_connect_module modules/mod_proxy_connect.so   
  5. #LoadModule proxy_ftp_module modules/mod_proxy_ftp.so   
  6. #LoadModule proxy_http_module modules/mod_proxy_http.so  
#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代码 复制代码 收藏代码
  1. #Include conf/extra/httpd-vhosts.conf  
#Include conf/extra/httpd-vhosts.conf

 

 去掉注释

 

在httpd.conf最后加上如下代码

 

Html代码 复制代码 收藏代码
  1. ProxyRequests Off   
  2. <proxy balancer://cluster>  
  3.     BalancerMember ajp://127.0.0.1:8009 loadfactor=1 route=jvm1  
  4.     BalancerMember ajp://127.0.0.1:9009 loadfactor=1 route=jvm2  
  5. </proxy>  
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代码 复制代码 收藏代码
  1. <VirtualHost *:80>  
  2.     ServerAdmin webmaster@dummy-host.sm.com   
  3.     DocumentRoot "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/docs/dummy-host.sm.com"   
  4.    ServerName dummy-host.sm.com   
  5.     ServerAlias www.dummy-host.sm.com   
  6.     ErrorLog "logs/dummy-host.sm.com-error.log"   
  7.     CustomLog "logs/dummy-host.sm.com-access.log" common   
  8. </VirtualHost>  
  9.   
  10. <VirtualHost *:80>  
  11.     ServerAdmin webmaster@dummy-host2.sm.com   
  12.     DocumentRoot "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/docs/dummy-host2.sm.com"   
  13.     ServerName dummy-host2.sm.com   
  14.     ErrorLog "logs/dummy-host2.sm.com-error.log"   
  15.     CustomLog "logs/dummy-host2.sm.com-access.log" common   
  16. </VirtualHost>  
<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代码 复制代码 收藏代码
  1. <VirtualHost *:80>  
  2.     ServerAdmin test@qq.com   
  3.     ServerName localhost   
  4.     ServerAlias localhost   
  5.     ProxyPass / balancer://cluster/   
  6.     ProxyPassReverse / balancer://cluster/   
  7.     ErrorLog "logs/dummy-host2.sm.com-error.log"   
  8.     CustomLog "logs/dummy-host2.sm.com-access.log" common   
  9. </VirtualHost>  
<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代码 复制代码 收藏代码
  1. <Server port="8005" shutdown="SHUTDOWN">  
  2.   
  3. 将8005改为9005,防止与第一个冲突  
<Server port="8005" shutdown="SHUTDOWN">

将8005改为9005,防止与第一个冲突
Html代码 复制代码 收藏代码
  1.   
  2. <Connector port="8080" protocol="HTTP/1.1"    
  3.                connectionTimeout="20000"    
  4.                redirectPort="8443" />  
  5.   
  6. 将8080改为9080,将8443改为9443  
<Connector port="8080" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" />

将8080改为9080,将8443改为9443
Html代码 复制代码 收藏代码
  1. <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />  
  2. 将8009改为9009,将8443,改为9443  
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
将8009改为9009,将8443,改为9443

 

两个tomcat均需要做如下改动

 

Java代码 复制代码 收藏代码
  1. 找到   
  2. <Engine name="Catalina" defaultHost="localhost"  >   
  3. 改成   
  4. <Engine name="Catalina" defaultHost="localhost"  jvmRoute="jvm2">   
  5.   
  6. 并在<Engine name="."..></Engine>标签中加上如下代码   
  7.   
  8.     <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="6">   
  9.         <Manager className="org.apache.catalina.ha.session.BackupManager" expireSessionsOnShutdown="false"    
  10.         notifyListenersOnReplication="true" mapSendOptions="6"/>   
  11.         <Channel className="org.apache.catalina.tribes.group.GroupChannel">   
  12.             <Membership className="org.apache.catalina.tribes.membership.McastService"  
  13.                 address="228.0.0.4" port="45565" frequency="500" dropTime="3000"/>   
  14.             <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"  
  15.                 address="auto" port="5002" selectorTimeout="100" maxThreads="6"/>   
  16.             <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">   
  17.                 <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>   
  18.             </Sender>   
  19.             <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>   
  20.             <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>   
  21.             <Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/>   
  22.         </Channel>   
  23.         <Valve className="org.apache.catalina.ha.tcp.ReplicationValve"  
  24.             filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/>   
  25.         <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"  
  26.             tempDir="/tmp/war-temp/" deployDir="/tmp/war-deploy/" watchDir="/tmp/war-listen/" watchEnabled="false"/>   
  27.         <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>   
  28.     </Cluster>  
找到
<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代码 复制代码 收藏代码
  1. 改动Membership port 的值与另一个设置为不同  
改动Membership port 的值与另一个设置为不同
Java代码 复制代码 收藏代码
  1. 改动Receiver port的值与另一个设置为不同  
改动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,看看效果吧!刷新一下会有意外惊喜

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics