首 页技术资讯下载中心誉天IT认证新社区注册会员联系我们在线报名咨询 武汉誉天IT教育网
搜索
下载 文章 视频
您当前的位置:誉天IT认证下载站 -> 技术资讯 -> 系统管理 -> LINUX系统 -> 资讯内容 退出登录 用户管理

APACHE2+TOMCAT5.0.28的集群配置

  作者:不详    2008-3-9 16:11:37    

 

一、目标

配置一个可扩展、高可用、有负载均衡和错误恢复的 Tomcat 集群。

 

二、需要的软件包

jakarta-tomcat-5.0.28.tar.gz

jakarta-tomcat-connectors-jk2-src-current.tar.gz

httpd-2.0.52.tar.gz

j2sdk-1_4_2_07-linux-i586-rpm.bin

JGroups-2.2.7.bin.zip

 

注:JGroups-2.2.7.bin.zip 包,可以从http://www.jgroups.org下载得到。

jakarta-tomcat-connectors-jk2-src-current.tar.gz包可以从http://jakarta.apache.org/site/sourceindex.cgi下载得到。

 

三、APACHE2+TOMCAT5整合安装

1、  安装APACHE2

httpd-2.0.52.tar.gz

tar zxvf httpd-2.0.52.tar.gz

cd httpd-2.0.52

在这里想要说的是如果你只要求与TOMCAT做整合的话就如下面的命令来进行编译。

./configure -prefix=/usr/local/apache2 -enable-so

make

make installl

如果你想要把所有的功能都打开用如下命令编译

./configure -prefix=/usr/local/apache2 --enable-mods-shared=all

make

make install

 

然后启动apache2

/usr/local/apache2/bin/apachectl start

 

用links 127.0.0.1 来查看APACHE是否安装正常。

 

2、  安装j2sdk-1_4_2_07-linux-i586-rpm.bin

 

./ j2sdk-1_4_2_07-linux-i586-rpm.bin

rpm –ivh j2sdk-1_4_2_07-linux-i586-rpm

 

修改用户根目录的环境变量

vi ~/.bash_profile

 

######################################

 

JAVA_HOME=/usr/java/j2sdk1.4.2_07

CLASSPATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib

CATALINA_BASE=/usr/local/jakarta-tomcat-5.0.28

CATALINA_HOME=/usr/local/jakarta-tomcat-5.0.28

PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH

 

#####################################

 

export USERNAME BASH_ENV PATH JAVA_HOME CLASSPATH CATALINA_BASE CATALINA_HOME

 

退出当前SHELL,然后再次LOGIN。

进行java

#java

如出现java信息,说明环境变量配置完毕。

 

3、  安装TOMCAT 5.0.28

 

tar zxvf jakarta-tomcat-5.0.28.tar.gz

mv jakarta-tomcat-5.0.28 /usr/local

cd jakarta-tomcat-5.0.28/bin

startup.sh

 

然后用 links 127.0.0.1:8080 来查看能否打开。如果出现: Apache Tomcat/5.0.28 则TOMCAT 5.0.28 安装正常。

 

4、  整合APACHE2与TOMCAT 5.0.28

tar zxvf jakarta-tomcat-connectors-jk2-src-current.tar.gz
cd jakarta-tomcat-connectors-jk2-src-current/jk/native2

./configure --with-apxs2=/usr/local/apache2/bin/apxs

make

cd ../build/jk2/apache2

/usr/local/apache2/bin/apxs -n jk2 -i mod_jk2.so

现在可以看到mod_jk2.so文件已经在你的apache2/modules/ 中了

 

[root@localhost modules]# ls

httpd.exp  mod_jk2.so

[root@localhost modules]#

 

编辑apache2/conf/httpd.conf
LoadModule jk2_module modules/mod_jk2.so 保存

 

 

 

在apache/conf/中新建文件workers2.properties,内容为下

 

[root@localhost conf]# cat workers2.properties

[shm]

file=/usr/local/apache2/logs/shm.file

size=1048576

 

#First Tomcat

[channel.socket:tomcat1]

port=8009

host=127.0.0.1

 

[ajp13:tomcat1]

channel=channel.socket:tomcat1

 

#Second Tomcat

[channel.socket:tomcat2]

port=8010

host=127.0.0.1

 

[ajp13:localhost:8010]

channel=channel.socket:tomcat2

 

[lb:lb1]

worker=ajp13:tomcat1

worker=ajp13:tomcat2

 

# Uri mapping

[uri:/*.jsp]

group=lb:lb1

[uri:/*.do]

group=lb:lb1

[root@localhost conf]#

 

启动apache2

cd apache2/bin
./apachectl start

 

测试整合效果:


links 127.0.0.1

正常应打开的是apache 的页面。

Links 127.0.0.1/index.jsp

打开的应是 TOMCAT 的页面。

四、TOMCAT5.0.28的集群配置

如果以上的工作都做完了,现在可以开始TOMCAT5.0.28的集群配置

 

这样Jgroups-2.2.7 就安装完毕了。

 

1、  配置apache2

在这之前APACHE2的conf目录下应有 workers2.properties 内容如下。

 

[root@localhost conf]# cat /usr/local/apache2/conf/workers2.properties

[shm]

file=/usr/local/apache2/logs/shm.file

size=1048576

 

#First Tomcat

[channel.socket:tomcat1]

port=8009

host=127.0.0.1

 

[ajp13:tomcat1]

channel=channel.socket:tomcat1

 

#Second Tomcat

[channel.socket:tomcat2]

port=8010

host=127.0.0.1

 

[ajp13:localhost:8010]

channel=channel.socket:tomcat2

#在这里要注意的是,如果你的TOMCAT在同一台机器上,那么jk2的端口应是不一样的,如上我写的是8009和8010。

 

[lb:lb1]

worker=ajp13:tomcat1

worker=ajp13:tomcat2

 

# Uri mapping

[uri:/*]

group=lb:lb1

[root@localhost conf]#

对于jk2模块的负载均衡配置可参见相关站点,值得提及的是jk2的负载均衡还支持权重分配等优秀功能。

 

2、  配置TOMCAT 5

 

[root@localhost conf]# cat server.xml

<Server port="8006" shutdown="SHUTDOWN" debug="0">

因为要配置两个TOMCAT,所以所有有关于端口的设置都要不一样。

  <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener"

            debug="0"/>

  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"

            debug="0"/>

  <GlobalNamingResources>

    <Environment name="simpleValue" type="java.lang.Integer" value="30"/>

    <Resource name="UserDatabase" auth="Container"

              type="org.apache.catalina.UserDatabase"

       description="User database that can be updated and saved">

    </Resource>

    <ResourceParams name="UserDatabase">

      <parameter>

        <name>factory</name>

        <value>org.apache.catalina.users.MemoryUserDatabaseFactory</value>

      </parameter>

      <parameter>

        <name>pathname</name>

        <value>conf/tomcat-users.xml</value>

      </parameter>

    </ResourceParams>

  </GlobalNamingResources>

  <Service name="Catalina">

 

    <Connector port="8080"

               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" />

 

 

    <Engine name="Catalina" defaultHost="localhost" debug="0">

 

      <Logger className="org.apache.catalina.logger.FileLogger"

              prefix="catalina_log." suffix=".txt"

              timestamp="true"/>

 

      <Realm className="org.apache.catalina.realm.UserDatabaseRealm"

                 debug="0" resourceName="UserDatabase"/>

 

 

 

      <Host name="localhost" debug="0" appBase="webapps"

       unpackWARs="true" autoDeploy="true"

       xmlValidation="false" xmlNamespaceAware="false">

 

 

 

        <Valve className="org.apache.catalina.valves.AccessLogValve"

                 directory="logs"  prefix="localhost_access_log." suffix=".txt"

                 pattern="common" resolveHosts="false"/>

       

 

        <Logger className="org.apache.catalina.logger.FileLogger"

                 directory="logs"  prefix="localhost_log." suffix=".txt"

            timestamp="true"/>

 

      </Host>

 

    </Engine>

 

  </Service>

 

</Server>

[root@localhost conf]#

 

到这里TOMCAT的设置就这样了。要把TOMCAT复制一份,然后再改相应的端口

# cp -rf /usr/local/jakarta-tomcat-5.0.28 /usr/local/jakarta-tomcat-5.0.28.2

 

一切配置完必以后在两个TOMCAT的/下创建 test.jsp 文件,文件内容分别如下:

[root@localhost ROOT]# cat test.jsp

<html>

<body bgcolor="red">

<center>

<%= request.getSession().getId() %>

<h1>Tomcat 1</h1>

</body>

</html>

[root@localhost ROOT]#

 

[root@localhost ROOT]# cat /usr/local/jakarta-tomcat-5.0.28.2/webapps/ROOT/test.jsp

<html>

<body bgcolor="blue">

<center>

<%= request.getSession().getId() %>

<h1>Tomcat 2</h1>

</body>

</html>

[root@localhost ROOT]#

启动TOMCAT5和APACHE2

/usr/local/jakarta-tomcat-5.0.28/bin/startup.sh

/usr/local/jakarta-tomcat-5.0.28.2/bin/startup.sh

/usr/local/apache2/bin/apachectl start

 

然后用  links 127.0.0.1/test.jsp 来刷新,不停的刷,你会看到同一个页面会显示不一样的内容。这就说明你的TOMCAT集群的均衡负载功能已经完成。

 

 

 

5、  TOMCAT集群共享SESSION。

做为TOMCAT集群首要解决的问题就是SESSION同步,因为你不能让用户几乎每打开一个页面就要注册一次。在不同的TOMCAT上同步SESSION是我们下面要做的。

 

1、  安装JGroups-2.2.7.bin.zip

unzip JGroups-2.2.7.bin.zip

cd JGroups-2.2.7.bin

cp JGroups-2.2.7.bin/jgroups-all.jar $CATALINA_BASE/server/

 

2、  打开TOMCAT中的SESSION同步模块

vi conf/server.xml

在 host 中加入如下内容

        <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.1.2.3"  <!—这个不是你本机的IP,是SESSION的分发IP不用更改就可以了>

                mcastPort="45564"

                mcastFrequency="500"

                mcastDropTime="3000"/>

 

            <Receiver

                className="org.apache.catalina.cluster.tcp.ReplicationListener"

                tcpListenAddress="10.218.17.59"

                tcpListenPort="4001"

                tcpSelectorTimeout="100"

                tcpThreadCount="6"/>

 

            <Sender

                className="org.apache.catalina.cluster.tcp.ReplicationTransmitter"

                replicationMode="synchronous"/>

 

            <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"/>

<!—这里的三个目录都要有,否则不能正常起动。第二个TOMCAT的这三个目录最好有所分别>

        </Cluster>

 

注意:

tcpListenAddress="10.218.17.59"

tcpListenPort="4001"

这两个设置,如果IP相同端口就不能相同,如果端口相同,IP就不能相同。

最后在conf/web.xml 中加入<distributable/>

好了。SESSION的同步做完了!

 

做为SESSION同步的测试,可以用TOMCAT的

http://10.218.17.59/servlets-examples/servlet/SessionExample

来做。方法是:

同时打开两个TOMCAT ,tail –f 两个TOMCAT的日志。然后用IE写个SESSION。从日志中来判断这个SESSION写到了哪个TOMCAT中去。然后把写了SESSION的TOMCAT停掉,在IE中再次写一个SESSION,如果前一个SESSION还在,则TOMCAT的集群配置就完成了!

到了这里APACHE2+TOMCAT5.0.28的集群配置就结束了!

 

college.51uc.com网站必要的设置

1、由于开发需求要安装:

ImageMagick-5.4.7-10.i386.rpm

libungif-4.1.0-15.i386.rpm

 

2、由于程序的网友上传文件和程序生成文件要求在多个TOMCAT上同步,所以启动NFS服务器来放置这些文件。注:在APACHE和TOMCAT的服务器上都要进行NFS的目录加载。

              具体实现方法:

       在/etc/fstab中加入:

10.10.10.90:/data/nfs_data on /data/nfs_data type nfs (rw,tcp,addr=10.10.10.90)

 

10.10.10.90:/data/nfs_data/uccollege.51uc.com/collegePhoto on /data/web_root/uccollege.51uc.com/collegePhoto type nfs (rw,tcp,addr=10.10.10.90)

 

10.10.10.90:/data/nfs_data/uccollege.51uc.com/download on /data/web_root/uccollege.51uc.com/download type nfs (rw,tcp,addr=10.10.10.90)

 

10.10.10.90:/data/nfs_data/uccollege.51uc.com/files on /data/web_root/uccollege.51uc.com/files type nfs (rw,tcp,addr=10.10.10.90)

 

10.10.10.90:/data/nfs_data/uccollege.51uc.com/js on /data/web_root/uccollege.51uc.com/js type nfs (rw,tcp,addr=10.10.10.90)

 

10.10.10.90:/data/nfs_data/uccollege.51uc.com/pim/images on /data/web_root/uccollege.51uc.com/pim/images type nfs (rw,tcp,addr=10.10.10.90)

 

10.10.10.90:/data/nfs_data/uccollege.51uc.com/collegeNewsPhoto on /data/web_root/uccollege.51uc.com/collegeNewsPhoto type nfs (rw,tcp,addr=10.10.10.90)

 

       采用这种方式的原因是TOMCAT不支持软连接目录。

 

       3、解决中文字符问题:

       在tomcat的server.xml中更改

    <Connector port="8009"

               enableLookups="false" redirectPort="8443" debug="0" URIEncoding="GBK"

protocol="AJP/1.3" />

       在用户的.bash_profile中加入:

       LANG=zh_CN.GB18030

LANGVAR=zh_CN.GB18030

[] [返回上一页] [打 印] [收 藏] 减小字体 增大字体
· 最新IT资讯·
· 思科认证资讯 ·
· 誉天最新快讯 ·
· 网络安全教程 ·
· CISCO认证教程 ·
· 装机系统工具 ·
关于我们 | 论坛社区 | 下载声明 | 友情连接 | 网站导航 | 在线咨询 | 联系我们 | 酷站目录 | 帮助中心
誉天IT下载站..誉天教育集团(武汉思科专业培训.CCIE征战部落)
地址:武汉市雄楚大街268号湖北出版文化城C座8楼 网站执行:吴金龙
客服QQ(报名咨询):147468 710991 360461900 电话:027-87678220、027-50248899
Copyright 2005-2007 © 51chongdian.net Inc. All Rights Reserved.