您的位置:首页 > 运维架构 > Tomcat

[总结]配置Apache2.2负载平衡+Tomcat6集群 [转]

2009-07-31 17:49 573 查看
配置Apache2.2负载平衡+Tomcat6集群.txt 
参考资料: 
http://man.chinaunix.net/newsoft/ApacheMenual_CN_2.2new/mod/mod_proxy.html 
http://man.chinaunix.net/newsoft/ApacheMenual_CN_2.2new/mod/mod_proxy_balancer.html 

所谓负载均衡(loadbalance)所指的是,在服务器端短时间内获得大量的请求,单一服务器无法在一个较短的时间内响应这些请求, 
此时服务器需要一个机制,请求按照多个服务器不同的负载能力,把这些请求合理的分配。 
集群(cluster)的作用则是在多个服务器之间共享用户信息,资源等。 

说明:一台apache2.2服务器,两台tomcat服务器 
一台负载均衡apache2.2服务器负责请求的均衡,群集服务器A和群集服务器B组成一个群集,当某个群集服务器崩溃后,另外一台继续负责应用程序的运行。 
介绍:apache对tomcat的支持历史:apache第2.1版本后,内置了proxy_ajp,而jk2已经没人开发了,jk则支持到apache的2.0.58版本。proxy_ajp配置较简单,但可配置性还不如jk2,主要表现在proxy_ajp目前只支持配置到目录,还不支持对文件名称的pattern模式匹配(即还不能定义到只对jsp文件起作用)。 

安装JDK1.5以上版本,安装Apache2.2,安装Tomcat6,配置Apache负载平衡,配置Tomcat集群 

一,安装JDK(所有运行Tomcat主机,即web服务器) 
1.下载JDK的bin包 
2.设置环境变量 #vi /etc/profile 在其最后加入 
JAVA_HOME=/usr/java 
export JAVA_HOME 
CLASSPATH=/usr/java/lib:/usr/java/jre/lib 
export CLASSPATH 
PATH=$PATH

JAVA_HOME/bin

JAVA_HOME/jre/bin 
export PATH 
JRE=/usr/java/jre 
export JRE 
保存退出 

二,配置负载均衡服务器Apache2.2 
1.下载apache2.2.4,安装相关组件 
http://www.sunfreeware.com/indexintel10.html中下载apache-2.2.4-sol10-x86-local.gz,expat-1.95.5-sol10-intel-local.gz,libiconv-1.11-sol10-x86-local.gz,openssl-0.9.8e-sol10-x86-local.gz,libgcc-3.4.6-sol10-x86-local.gz 
安装方法: 
解压缩: gzip -d apache-2.2.4-sol10-x86-local.gz 
安装:pkgadd -d apache-2.2.4-sol10-x86-local 

2.查看编译进apache的模块: 
#cd /usr/local/apache2/bin 
#httpd -l 
Compiled in modules: 
core.c 
prefork.c 
http_core.c 
mod_so.c 

3.修改/usr/local/apache2/conf/httpd.conf文件 

将以下Module的注释去掉(其实已经去掉了) 
LoadModule proxy_module modules/mod_proxy.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 
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so 
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so 

并在最后面,增加 
<Location /server-status> 
SetHandler server-status 
Order Deny,Allow 
Deny from all 
Allow from all 
</Location> 
<Location /balancer-manager> 
SetHandler balancer-manager 
Order Deny,Allow 
Deny from all 
Allow from all 
</Location> 
ProxyRequests Off 
ProxyPass / balancer://tomcatcluster/ stickysession=jsessionid nofailover=On 
ProxyPass /temp http://192.168.1.8:8080/temp/ 
#ProxyPassReverse / balancer://tomcatcluster/ 
ProxyPassReverse /ccas balancer://tomcatcluster/ccas/ 
ProxyPassReverse /clpay balancer://tomcatcluster/clpay/ 

<Proxy balancer://tomcatcluster> 
BalancerMember ajp://192.168.1.8:8009 loadfactor=1 
BalancerMember ajp://192.168.1.29:8009 smax=1 loadfactor=1 
# Less powerful server,don't send as many requests there 
BalancerMember ajp://192.168.1.29:80 smax=1 loadfactor=2 
</Proxy> 

ProxyPass为代理转发的Url,即将所有访问/的请求转发到群集balancer://tomcatcluster 
BalancerMember为群集的成员,即群集服务器A或B,负载均衡服务器会根据均衡规则来将请求转发给BalancerMember。 

配置好后,启动Apahce服务器,访问localhost就会看到群集服务器中应用返回的结果。恭喜你,负载均衡和群集已经配置成功了。 
访问localhost/balancer-manager,显示负载均衡有关信息 

4.进入/usr/local/apache2/bin目录,运行 
# ./apachectl configtest命令检查一下配置是否有误 
显示Syntax OK,说明配置正确 
5.启动/关闭/重新启动apache 
启动apache 
# ./apachectl start 

关闭apache 
# ./apachectl stop 

三,安装配置tomcat6集群 
1.下载apache-tomcat-6.0.13.tar.gz(http://archive.apache.org/dist/tomcat/tomcat-6/v6.0.13/bin/apache-tomcat-6.0.13.tar.gz) 
2.安装apache-tomcat-6.0.13.tar.gz 
安装在目录/usr/apache/tomcat 
# gzip -d apache-tomcat-6.0.13.tar.gz 
3.解决在solaris下显示验证码出错 
在/usr/apache/tomcat/bin/catalina.sh中的第266/278行加上-Djava.awt.headless=true / 
4.启动tomcat服务器 测试是否正常 
# cd /usr/apache/tomcat/bin/ 
# ./startup.sh 

5.修改tomcat 的 conf/server.xml 的<Engine>(使用arp协议时配置) 
去掉注释<Engine name="Standalone" defaultHost="localhost" jvmRoute="tomcat1"> 
jvmRoute是tomcat路由标示,由此区分两台tomcat主机,那么第二台就改为 
<Engine name="Standalone" defaultHost="localhost" jvmRoute="tomcat2"> 
加上注释<Engine name="Catalina" defaultHost="localhost"> 
6.修改tomcat 的 conf/server.xml 的<Connector>(使用arp协议时配置) 
去掉注释<Connector port="8009" enableLookups="false" redirectPort="8443" debug="0" protocol="AJP/1.3" /> 
7.修改tomcat 的 conf/server.xml 的<Cluster> 
<!-- 
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/> 
--> 
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" 
channelSendOptions="6"> 

<Manager className="org.apache.catalina.ha.session.BackupManager" 
expireSessionsOnShutdown="false" 
notifyListenersOnReplication="true" 
mapSendOptions="6"/> 
<!-- 
<Manager className="org.apache.catalina.ha.session.DeltaManager" 
expireSessionsOnShutdown="false" 
notifyListenersOnReplication="true"/> 
--> 
<Channel className="org.apache.catalina.tribes.group.GroupChannel"> 
<Membership className="org.apache.catalina.tribes.membership.McastService" 
address="228.0.0.4" 
port="45564" 
frequency="500" 
dropTime="3000"/> 
<Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver" 
address="auto" 
port="5000" 
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> 

8.在每个webapps应用中,修改配置文件web.xml文件 添加元素<distributable/> 
在web.xml文件中<web-app>元素下增加以下内容: 
<!--此应用将与群集服务器复制Session--> 
<distributable/> 
具体修改如下: 
修改前: 
<?xml version="1.0" encoding="ISO-8859-1"?> 
<web-app xmlns="http://java.sun.com/xml/ns/javaee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
version="2.5"> 
</web-app> 
修改后: 
<?xml version="1.0" encoding="ISO-8859-1"?> 
<web-app xmlns="http://java.sun.com/xml/ns/javaee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
version="2.5"> 
<!--此应用将与群集服务器复制Session--> 
<distributable/> 
</web-app> 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息