JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » Application Server » Tomcat  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友   
reply to postflat modego to previous topicgo to next topic
本主題所含的標籤
無標籤
作者 [总结]配置Apache2.2负载平衡+Tomcat6集群
maxabc





發文: 3
積分: 0
於 2007-08-23 09:01 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
配置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=$PATHEmbaressedJAVA_HOME/binEmbaressedJAVA_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>

配置完成,先启动所有tomcat服务器,最后启动apache2.2服务器


maxabc edited on 2007-11-09 13:27
reply to postreply to post
話題樹型展開
人氣 標題 作者 字數 發文時間
4996 [总结]配置Apache2.2负载平衡+Tomcat6集群 maxabc 7322 2007-08-23 09:01
2799 Re:[总结]配置Apache2.2负载平衡+Tomcat6集群 helloworld 119 2008-03-22 20:48
» JWorld@TW »  Application Server » Tomcat

reply to postflat modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8