配置apache tomcat 集群 VMware
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://future.blog.51cto.com/26959/80438 |
Apache,Tomcat集群和负载均衡
参考文章
2008-06-05 12:30
准备工作
1 操作系统 RedHat Linux as4update4 (使用一台虚拟机) 2 所需软件 httpd-2.0.61.tar
jakarta-tomcat-
jakarta-tomcat-connectors-
jdk-1_5_0_11-linux-i586
以上所需软件都可以在baidu上找到
下载mod_jk地址
http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/
3 安装步骤 3.1 安装JDK # cd /usr/local/ # chmod 777 jdk-1_5_0_11-linux-i586 # ./ jdk-1_5_0_11-linux-i586 # cd /usr/java/ # ln -s /usr/java/jdk-1_5_0_04 /usr/local/java # vi /etc/profile #添加如下内容 #setup JDK environment variable JAVA_HOME=/home/jdk/jdk
CLASSPATH=$JAVA_HOME/lib/tools.jar:JAVA_HOME/lib:JAVA_HOME/bin(添加)
HOSTNAME=`/bin/hostname`
HISTSIZE=1000
if [ -z "$INPUTRC" -a ! -f "$HOME/.inputrc" ]; then
INPUTRC=/etc/inputrc
fi
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC JAVA_HOME C LASSPATH(红色为添加)
3.2 安装Apache # cd /usr/local/ # tar zxvf httpd-2.0.61.tar # cd httpd-2.0.61 #./configure --prefix=/usr/local/apache --enable-module=so # make # make install 建议:安装apache 时用
# cd /usr/local/apache/conf # vi ./httpd.conf 将Listen 80修改为Listen IP:80 将ServerName修改为ServerName domain:80 在DirectoryIndex中添加index.jsp # cd /usr/local/apache/bin/ # ./apachectl configtest 若显示Syntax ok则表明安装成功 #./apachectl start 启动apache服务,访问本机80端口,查看端口是否正常 # ./apachectl stop 关闭服务 备注:prefix定义apache的安装路径 3.3 安装Tomcat # cd /usr/local/ # tar zxvf jakarta-tomcat- # ln –s /usr/local/jakarta-tomcat-5.0.28 /usr/local/tomcat # vi /usr/local/tomcat/bin/catalina.sh JAVA_HOME=/usr/local/java 启动服务后,访问本机8080端口,查看端口是否正常 # /usr/local/tomcat/bin/startup.sh 关闭服务 # /usr/local/tomcat/bin/shutdown.sh 第二个Tomcat
#cp –r jakarta-tomcat-
更改端口
vi server.xml
将原来的<Server port="8005" shutdown="SHUTDOWN" debug="0">更改为
<Server port="18005" shutdown="SHUTDOWN" debug="0">
将原来的 <Connector port="8080"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000"
disableUploadTimeout="true" />更改为
<Connector port="18080"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000"
disableUploadTimeout="true" />
将原来的<Connector port="8009"
enableLookups="false" redirectPort="8443" debug="0"
protocol="AJP/1.3" />更改为
<Connector port="18009"
enableLookups="false" redirectPort="8443" debug="0"
protocol="AJP/1.3" />
3.4 安装JK #cd /usr/local/ # tar xzvf jakarta-tomcat-connectors- #cd jakarta-tomcat-connectors-1.2.13-src/jk/native #./buildconf.sh #./configure—with-apxs=/usr/local/apache/bin/apxs #make #make install #cd /usr/local/ jakarta-tomcat-connectors- jk1.2.13-src/jk/native/apache-2.0/ #cp mod_jk.so /usr/local/apache/modules/ 4 系统整合 4.1 在文件最末尾加上如下语句 #vi /usr/local/apache/conf/httpd.conf # Load mod_jk LoadModule jk_module modules/mod_jk.so # Configure mod_jk JkWorkersFile conf/workers.properties JkLogFile logs/mod_jk.log JkLogLevel info JkMount /*.jsp loadbalancer JkMount /servlet/* loadbalancer JkMount /application/* loadbalancer JkMount /*.gif loadbalancer(这句话不添加tomcat 的测试页面图片不能正常显示) JkMount /*.do loadbalancer (这名话可以不添加)
4.2 添加workers.properties #vi /usr/local/apache/conf/workers.properties 内容如下: worker.list=loadbalancer #Define a ‘local_worker’ worker using ajp13 worker.worker1.port=8009 worker.worker1.host=192.168.1.138(如果测试的时候有问题,可更改为localhost 或者是你的域名 进行调试) worker.worker1.type=ajp13 worker.worker1.lbfactor=1 worker.worker1.local_worker=0 worker.worker1.cachesize=1000 worker.worker1.cache_timeout=600 worker.worker1.socket_keepalive=1 worker.worker1.socket_timeout=0 worker.worker1.reclycle_timeout=300 worker.worker1.retries=3 #Define another ‘local_worker’ worker using ajp13 worker.worker2.port=18009(因为在一台机子上怕冲突所以更改。不知用8009会不会有问题,还没有测试) worker.worker2.host=192.168.1.138(如果测试的时候有问题,可更改为localhost 进行测试) worker.worker2.type=ajp13 worker.worker2.lbfactor=1 worker.worker2.local_worker=1 worker.worker2.cachesize=1000 worker.worker2.cache_timeout=600 worker.worker2.socket_keepalive=1 worker.worker2.socket_timeout=0 worker.worker1.reclycle_timeout=300 worker.worker1.retries=3 #Define the LB worker worker.loadbalancer.type=lb worker.loadbalancer.balanced_workers=worker1,worker2 worker.loadbalancer.local_worker_only=1 worker.loadbalancer.sticky_session=true worker.loadbalancer.sticky_session_force=true 注:以上定义了两个worker,一个为worker1,另一个为worker2,定义了一个负载平衡服务器loadbalancer,其中标红色的为重点配置项,相关的详细说明可以看官方的网站文档:http://tomcat.apache.org/connectors-doc/ worker.list=loadbalancer 设定工作的负载平衡器,各Tomcat节点不能加入此列表。 worker.worker1.lbfactor 负载平衡的权重比,如果此权重比越大,则分配到此节点的请求越多,如以上两个节点的权重比为1:1,则为平均分配。 worker.loadbalancer.balance_workers=worker1,worker2 指定此负载平衡器负责的Tomcat应用节点。 worker.loadbalancer.sticky_session=true 此处指定集群是否需要会话复制,如果设为true,则表明为会话粘性,不进行会话复制,当某用户的请求第一次分发到哪台Tomcat后,后继的请求会一直分发到此Tomcat服务器上处理;如果设为false,则表明需求会话复制。 worker.loadbalancer.sticky_session_force=true 如果上面的sticky_session设为true时,建议此处也设为true,此参数表明如果集群中某台Tomcat服务器在多次请求没有响 应后,是否将当前的请求,转发到其它Tomcat服务器上处理;此参数在sticky_session=true时,影响比较大,会导致转发到其它 Tomcat服务器上的请求,找不到原来的session,所以如果此时请求中有读取session中某些信息的话,就会导致应用的null异常。 4.3 修改server.xml #vi /usr/local/tomcat/conf/server.xml 在139行左右加入如下语句 <Engine name="Standalone" defaultHost="localhost" debug="0" jvmRoute="worker1"> 1)、如果不添加</Engine>, 就必须将原来的
<Engine name="Catalina" defaultHost="localhost" debug="0"> 更改为
<!-- <Engine name="Catalina" defaultHost="localhost" debug="0"> -->
2)、如果添加</Engine> ,建议添加到文件最下方的</Engine> 的下两行,就不用更改<Engine name="Catalina" defaultHost="localhost" debug="0"> 3)、个人是采用了 “1)”,由于对文件各各参数的作用了解不清楚,所以还请高手给予指点。
若第二台worker1,将jvmRoute的修改为worker2
并且把下面群集配置释放出来,也就是去掉注释。 <Cluster className=”org.apache.catalina.cluster.tcp.SimpleTcpCluster” managerClassName=”org.apache.catalina.cluster.session.DeltaManager” expireSessionsOnShutdown=”false” useDirtyFlag=”true”> <Membership className=”org.apache.catalina.cluster.mcast.McastService” mcastAddr=”228.0. mcastPort=” mcastFrequency=” mcastDropTime=” <Receiver className=”org.apache.catalina.cluster.tcp.ReplicationListener” tcpListenAddress=” tcpListenPort=” tcpSelectorTimeout=” tcpThreadCount=” <Sender className=”org.apache.catalina.cluster.tcp.ReplicationTransmitter” replicationMode=”pooled”/> <Valve className=”org.apache.catalina.cluster.tcp.ReplicationValve” filter=”.*\.gif;.*\.js;.*\.jpg;.*\.htm;.*\.html;.*\.txt;”/> <Deployer className=”org.apache.catalina.cluster.deploy.FarmWarDeployer” tempDir=”/tmp/war-temp/” deployDir=”/tmp/war-deploy/” watchDir=”/tmp/war-listen/” watchEnabled=”false”/> </Cluster> 至此,系统已经整个完毕 启动apache和tomcat服务 # /usr/local/apache/bin/apachectl start #/usr/local/tomcat/bin/catalina.sh start 将如下内容添加至/etc/rc.d/rc.local文件末尾,以便系统启动后开启apache,tomcat服务 /usr/local/tomcat/bin/catalina.sh start /usr/local/apache/bin/apachectl start 5 测试群集 5.1 编写一个简单web应用,包含如下内容:
写一个如下的jsp页面。 test.jsp内容如下: <%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Test Page</title>
</head>
<body>
<h1> 1 JSP Test Page</h1>
<%= new java.util.Date() %>
</body>
</html>
在2tomcat 下也同样创建一个test.jsp 将1 JSP Test Page 更改为2 JSP Test Page ![]() 现在可以把tomcat 1 关闭,在访问http://192.168.1.138/test.jsp
可以看到
![]() 以上在切换的时候很慢,具体的原因不是很清楚,可能还需要调试一些参数进行优化。这里再次请教各位高手。 本文出自 “bo” 博客,请务必保留此出处http://future.blog.51cto.com/26959/80438 本文出自 51CTO.COM技术博客 |




options-future
博客统计信息
热门文章
最新评论
友情链接