Apache负载Tomcat集群部署方法

来源:互联网 发布:马萨达精神 知乎 编辑:程序博客网 时间:2024/05/22 12:26

Apache负载Tomcat集群部署方法

1.部署约定

使用普通用户tsaip安装,确保安装时,用户有权限操作指定目录。   

2.软件列表

httpd-2.2.24.tar.gz

tomcat-connectors-1.2.37-src.tar.gz

apache-tomcat-7.0.23.tar.gz

3.软件安装

搭建的集群有两个tomact节点外加一个apache组成,三者将安装在同一机器上:

apache: 安装路径:/usr/local/apache2 (可选但需权限)       端口:10080

tomcat1:安装路径:/usr/local/apache-tomcat-7.0.23.-1      端口:18080

tomcat2:安装路径:/usr/local/apache-tomcat-7.0.23.-2      端口:28080

 

3.1 安装apache

 

1.进入下载好的httpd-2.2.24.tar.gz文件所在目录,执行解压操作:

tar -zxvf httpd-2.2.24.tar.gz

 

2.进入解压出的文件夹根目录:

cd httpd-2.2.24

 

3.进行编译参数配置:

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

 

4.编译安装:

make

make install

 

5.启动和关闭apache

完成上述步骤后,apache的安装就结束了,通过下面的命令启动和关闭apache:

启动:

/usr/local/apache2/bin/apachectlstart

关闭:

/usr/local/apache2/bin/apachectlstop

 

3.2 安装Apache Tomcat Connector(mod_jk)

 

1.进入下载好的tomcat-connectors-1.2.37-src.tar.gz文件所在目录,执行解压操作:

tar -zxvf tomcat-connectors-1.2.37-src.tar.gz

 

2.进入解压出的文件夹下的native子目录:

cd tomcat-connectors-1.2.37-src/native

 

3.进行编译参数配置:

./buildconf.sh

 

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

--with-java-home=$JAVA_HOME --with-java-platform=2 \

--enable-jni

 

4.编译安装:

make

make install

 

如果成功结束,可以在/usr/local/apache2/modules/下找到mod_jk.so文件。

3.3 安装tomcat

 

两次解压apache-tomcat-7.0.23.tar.gz,并分别重命名为apache-tomcat-7.0.23-1和apache-tomcat-7.0.23-2

 

4.集群配置

4.1 配置tomcat

1.修改端口

对于tomcat配置主要集中在conf/server.xml文件上。

Tomcat1中shutdown端口改为18005,HTTP端口改为18080,AJP端口改为18009。

Tomcat2中shutdown端口改为28005,HTTP端口改为28080,AJP端口改为28009。

 

2.开启tomcat集群支持

同样是在conf/server.xml文件里,进行两处改动:

 

改动1:为<Engine>设置jvmRoute

修改<Engine name="Catalina"defaultHost="localhost">

Tomcat1设为<Engine name="Catalina"defaultHost="localhost" jvmRoute="tomcat1">

Tomcat2设为<Engine name="Catalina"defaultHost="localhost" jvmRoute="tomcat2">

 

改动2:在<Engine/>中添加关于集群的配置

把以下配置复制到<Engine/>中

<ClusterclassName="org.apache.catalina.ha.tcp.SimpleTcpCluster"

                 channelSendOptions="8">

<ManagerclassName="org.apache.catalina.ha.session.DeltaManager"

                  expireSessionsOnShutdown="false"

                  notifyListenersOnReplication="true"/>

<ChannelclassName="org.apache.catalina.tribes.group.GroupChannel">

<MembershipclassName="org.apache.catalina.tribes.membership.McastService"

address="228.0.0.4" port="45564" frequency="500"dropTime="3000"/>

<ReceiverclassName="org.apache.catalina.tribes.transport.nio.NioReceiver"

address="auto" port="4000" autoBind="100"selectorTimeout="5000"

maxThreads="6"/>

<SenderclassName="org.apache.catalina.tribes.transport.ReplicationTransmitter">

<TransportclassName="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>

</Sender>

<InterceptorclassName="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>

<InterceptorclassName="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>

</Channel>

<ValveclassName="org.apache.catalina.ha.tcp.ReplicationValve"

                filter=""/>

<ValveclassName="org.apache.catalina.ha.session.JvmRouteBinderValve"/>

<DeployerclassName="org.apache.catalina.ha.deploy.FarmWarDeployer"

                   tempDir="/tmp/war-temp/"

                   deployDir="/tmp/war-deploy/"

                    watchDir="/tmp/war-listen/"

                   watchEnabled="false"/>

<ClusterListenerclassName="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>

<ClusterListenerclassName="org.apache.catalina.ha.session.ClusterSessionListener"/>

</Cluster>

4.2 配置apache
打开apache安装目录下的conf/httpd.conf文件

修改Listen 和ServerName两项,改成

    Listen 10080

    ServerName 135.33.88.228:10080

 

并在文件最后追加以下内容:

 

1          # Load mod_jk module 

2        LoadModulejk_module modules/mod_jk.so 

3        # Specifyjk log file. 

4        JkLogFilelogs/mod_jk.log 

5        # Specifyjk log level [debug/error/info] 

6        JkLogLevelinfo 

7        # Specifyworkers.properties, this file tell jk: 

8        # howmany nodes and where they are. 

9        JkWorkersFileconf/workers.properties 

10      # Specify which requests should handled bywhich node. 

11      JkMount /* controller 

 

在apache安装目录下的conf目录下创建workers.properties文件,文件的内容如下:

 

1        #所有节点列表,其中controller是一个逻辑结点,负责负载均衡控制, 

2        #如果JkMount中的URL指定给了controller就表示这个请求会被自动散列到某个物理节点上。 

3        #注意:真正负责处理请求的tomcat的名称(这里就是tomcat1,tomcat2)必须于它们在conf/server.xml 

4        #文件中配置的jvmRout的属性值是一致的! 

5        worker.list= controller,tomcat1,tomcat2 

6           

7        #========tomcat1======== 

8        worker.tomcat1.port=18009      

9        worker.tomcat1.host=135.33.88.228 (部署机器的ip)

10      worker.tomcat1.type=ajp13 

11      worker.tomcat1.lbfactor = 1   

12      #========tomcat2======== 

13      worker.tomcat2.port=28009

14      worker.tomcat2.host=135.33.88.228 (部署机器的ip)

15      worker.tomcat2.type=ajp13 

16      worker.tomcat2.lbfactor = 1  

17        

18      #========controller,负载均衡控制器======== 

19      worker.controller.type=lb 

20      worker.controller.balance_workers=tomcat1,tomcat2  

21      worker.controller.sticky_session=1

 

5.测试验证

在两个tomcat中分别部署一个组合服务引擎的war包,确保两个tomcat中的服务引擎的包名称相同,分别启动两个tomcat和apache。

1.验证tomcat部署正确:

访问http://IP:18080/组合服务引擎的包名/cxf/Orchservice?wsdl,能正常打开wsdl。访问http://IP:28080/组合服务引擎的包名/cxf/Orchservice?wsdl,能正常打开wsdl。

2.验证apache启动正确:

访问http://IP:10080/组合服务引擎的包名/cxf/Orchservice?wsdl,能正常打开wsdl。

 

6.错误处理

关于在安装apache过程中报Cannot use an external APR withthe bundled APR-util错误的解决办法

有时候,在安装apache,执行./configure操作时会报这个错误,解决方法是安装apache2.2.x自身携带的apr,方法为:

1.自源码安装目录httpd-2.2.24进入apache2.2.x自带apr的安装目录
cdsrclib/apr

2.安装apr(此处将之安装在/usr/local/apr下,如果系统中已经安装apr,可找到安装目录进行覆盖)
./configure--prefix=/usr/local/apr
make
make install


3.安装apr-util
./configure--prefix=/usr/local/apr-util --with-apr=/usr/local/apr
make
make install

4.使用新安装的apr重新进行apache编译配置
放回安装根目录httpd-2.2.24,执行:
./configure--prefix=/usr/local/apache2 \
--enable-mods-shared=all \
--with-apr=/usr/local/apr \
--with-apr-util=/usr/local/apr-util/bin 

原创粉丝点击