Linux apache tomcat 集群搭建

来源:互联网 发布:js将字符串转为数组 编辑:程序博客网 时间:2024/05/17 00:13

Apache tomcat 集群搭建

 

准备:

OS:rhel-server-5.4-x86_64-dvd.iso


JDK:  jdk-7u71-linux-x64.tar.gz


Apache:httpd-2.4.10.tar.gz


Tomcat:apache-tomcat-7.0.57.tar.gz


Mod_jk:tomcat-connectors-1.2.37-src.tar.gz


Apache 辅助包:apr-1.5.1.tar.gz,apr-util-1.5.3.tar.gz,pcre-8.32.tar.gz

 

JDK安装:

cp /software/jdk-7u71-linux-x64.tar.gz /usr/local/Java

cd /usr/local/Java

tar -zxvf jdk-7u45-linux-i586.tar.gz

vi /etc/profile 添加如下配置

export JAVA_HOME=/usr/local/Java/jdk1.7.0_71

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

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

source /etc/profile ,使文件立即生效。

java  –version 查看jdk版本

 

安装apr

cp apr-1.5.1.tar.gz  /home/hadoop

cd /home/hadoop

tar -zxvf apr-1.5.0.tar.gz

cd apr-1.5.1

./configure --prefix=/home/hadoop /apr

make

make install

安装apr-util

cp

cd /home/hadoop

tar -zxvf apr-util-1.5.3.tar.gz

cd apr-util-1.5.3

./configure --prefix=/home/hadoop/apr-util --with-apr=/home/hadoop /apr

make

make install

 

安装pcre

cp pcre-8.32.tar.gz  /home/hadoop

cd /home/hadoop

tar -zxvf pcre-8.32.tar.gz

cd pcre-8.32

./configure --prefix=/home/hadoop/pcre

make

make install

 

Aapache安装

rpm -qa|grep httpd  查看是否已经安装apache

rpm -e httpd   删除存在的Apache,不存在不用删

cp httpd-2.4.7.tar.gz /home/hadoop    /home/hadoop是我创建目录,用户可以自定义

cd httpd-2.4.10

./configure  --prefix=/home/hadoop/apache--with-apr=/home/hadoop/apr/  --with-apr-util=/home/hadoop /apr-util/ --with-pcre=/home/hadoop /pcre

 

make

make install

------------至此安装完成,修改相关配置----------

cd /home/hadoop/apache/conf/

vi httpd.conf

修改一下内容:

ServerName 192.168.0.2 你本机的ip

DirectoryIndex index.html index.jsp    DirectoryIndex中添加 index.jsp

 

  Includeconf/extra/httpd-mpm.conf

  Includeconf/extra/httpd-default.conf

 

<Directory"/home/hadoop/apache">

   Require allgranted

   Orderallow,deny

   Allow fromall

</Directory>

保存退出

./home/hadoop/apache/bin/apachectl start

访问http://127.0.0.1 。页面出现“It's Works!”字样即为成功

1)启动apache服务:# /home/hadoop/ pache/bin/apachectl start

2)关闭apache服务:# /home/hadoop/apache/bin/apachectl stop

3)重启apache服务:# /home/hadoop/apache/bin/apachectl restart

 

Tomcat安装

cp apache-tomcat-7.0.47.tar.gz /home/hadoop

cd /home/hadoop

tar -zxvf apache-tomcat-7.0.47.tar.gz

mv apache-tomcat-7.0.57 tomcat

vi /etc/profile

export TOMCAT_HOME=/home/hadoop/tomcat

export CATALINA_HOME=/home/hadoop/tomcat

source /etc/profile

启动tomcat

./home/hadoop/tomcat/bin/startup.sh

访问http://127.0.0.1:8080,可以看到tomcat的启动欢迎页面,证明tomcat配置正确

1)启动tomcat服务:

     # /home/hadoopl/tomcat/bin/startup.sh

     # /home/hadoopl/tomcat/bin/catalina.sh start

2)关闭tomcat服务:

     # /home/hadoopl/tomcat/bin/shutdown.sh

     #/home/hadoopl/tomcat/bin/catalina.sh stop

mod_jk安装

cp tomcat-connectors-1.2.37-src.tar.gz  /home/hadoop

cd /home/hadoop

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

编译安装mod_jk

cd /tomcat-connectors-1. 2.37-src/native

chmod  755  buildconf.sh

./buildconf.sh

./configure --with-apxs=/home/hadoop/apache/bin/apxs

make

make install

/tomcat-connectors-1.2.37/apache-2.0下的mod_jk.so文件拷贝到apache安装目录下的modules文件夹下面。

cp ./apache-2.0/mod_jk.so/usr/local/apache/modules/

 

配置负载均衡

1.    修改tomcat server.xml

修改< Connector>节点值,是关于使用ajp连接apachetomcat时的配置。修改成如下形式:<Connectorport="8009" protocolhandlerclassname="org.apache.jk.server.jkcoyotehandler"protocol="AJP/1.3"  redirectPort="8443"/>

注意:如果一台机器上同时运行多个tomcat,一定要将每个tomcat对应的Connector标签的port端口设为不同的值

添加tomcat实例名

<Engine name=”Catalina” defaultHost=”localhost” jvmRoute=”tomcat1”>

<Engine>元素下添加以下内容

<Clusterclass Name="org.apache.catalina.ha.tcp.SimpleTcpCluster">       <Manager className="org.apache.catalina.ha.session.BackupManager"

      expireSessionsOnShutdown="false"

      notifyListenersOnReplication="true"

        mapSendOptions="6"/>

    <Channel className="org.apache.catalina.tribes.group.GroupChannel">

        <Membership className="org.apache.catalina.tribes.membership.McastService"

            address="224.0.0.1 " #广播地址,同一组tomcat集群一样

            port="45564" #同一组tomcat集群一样

            frequency="500"

            dropTime="3000"/>

        <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"

            address="192.162.0.2 " #本机ip

            port="4001"  #tomcat默认可以检测到40004100之间的端口

            autoBind="100"

            selectorTimeout="5000"

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

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

    </Channel>   <Valve className="org.apache.catalina.ha.tcp.ReplicationValve"filter=""/>    <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>    <Deployer className="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"/>    <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>

</Cluster>

2.    修改待发布项目的web.xml

在每个待发布项目的web.xml末尾的</web-app>标签里添加<distributable/>,确保session能够复制。

3.    修改 httpd.conf

apacheconf下的httpd.conf文件尾部追加以下内容:

#加载mod_jk Module

LoadModulejk_module modules/mod_jk.so

<Ifmodulemod_jk.c>

#指定workers.properties文件路径

JkWorkersFile /home/hadoop/apache/conf/workers.properties

#指定jk logs文件存放位置

JkLogFile /home/hadoop/apache/logs/mod_jk.log

#Setthe jk log level [debug/error/info]

JkLogLevelinfo

#Selectthe log format

JkLogStampFormat"[%a %b %d%H:%M:%S %Y]"

#JkOptionsindicate to send SSL KEYSIZE,

JkOptions+ForwardKeySize +ForwardURICompat-ForwardDirectories

#JkRequestLogFormatset the requestformat

JkRequestLogFormat"%w %V %T %q %U%R"

#JkShmFileto put logs

JkShmFilehome /hadoop/apache/logs/mod_jk.shm

</IfModule>

#指定哪些请求交给tomcat处理,哪些请求交给apache处理

#注意:" loadbalancer "为在workers.propertise里指定的负载分配控制器

JkMount/*.jsp loadbalancer #所有的jsp都交给tomcat处理

4.    创建workers.properties

httpd.conf的最后添加的配置中workers.properties文件是不存在的,需要我们自己在apache/conf路径下创建。workers.properties文件用于对负载均衡的负载器worker

(即tomcat)进行具体的登记,此处的2tomcat就作为2worker被登记在这个文件中。

workers.properties具体配置如下:

#workers.properties

#in unix, weuse forward slashes:

ps=/

#workers 列表

worker.list=tomcat1,tomcat2,loadbalancer, status

#--------------------------------------------------------------------

#第一个tomcat

#--------------------------------------------------------------------

worker.tomcat1.port=8009#对应tomcatserver.xml中配置的ajp13端口号

worker.tomcat1.host=127.0.0.1#tomcat1的主机地址,如不为本机,请填写IP地址

worker.tomcat1.type=ajp13#定向包协议

worker.tomcat1.lbfactor=1#server的负载分配权重,值越高,分得的请求越多

#以下为非必要配置,这部分配置tomcat2的配置同tomcat1

#worker.tomcat1.cachesize=1000#配置tomcatjk连接缓存大小 (非必要)

#worker.tomcat1.cachesize_timeout=600# (非必要)

#worker.tomcat1.reclycle_timeout=300# (非必要)

#worker.tomcat1.socket_keepalive=1#防止防火墙切断未激活的网络连接(非必要)

#worker.tomcat1.socket_timeout=300#(非必要)

#worker.tomcat1.local_worker=1# (非必要)

#worker.tomcat1.retries=3# (非必要)

#----------------------------------------------------------------------

#第二个tomcat

#----------------------------------------------------------------------

worker.tomcat2.port=8009

worker.tomcat2.host=172.**.***.202#tomcat2的主机IP地址

worker.tomcat2.type=ajp13

worker.tomcat2.lbfactor=1

#----------------------------------------------------------------------

#load balancerworker -负载均衡控制器

#---------------------------------------------------------------------

worker.loadbalancer.type=lb

worker.loadbalancer.balanced_workers=tomcat1,tomcat2#指定分担请求的tomcat

worker.loadbalancer.sticky_session=1#设置为粘性session

worker.loadbalancer.sticky_session_force=0#设置当多次请求未响应,请求将转发

worker.status.type=status

#end workers.properties

5.    设置apache对项目的访问路径

修改/apache/conf/目录下的httpd.conf文件中的DocumentRootDirectory值,将文件访问路径定位到tomcatwebapps文件夹,即待发布项目的存放位置,修改结果如下:

DocumentRoot"/home/hadoop/tomcat/webapps"

<Directory"/home/hadoop/tomcat/webapps">

Requireall granted

Orderallow,deny

Allowfrom all

</Directory>

如此对apache的修改完成,加之tomcat设置了默认访问项目,此时就可以实现直接通过apache所在主机的IP地址来访问项目。(实际配置中,是否实现IP地址直接访问以实际需求为准)

负载均衡集群Session测试

1.    新建一个Java Web工程Test,在工程下新建index.jsp,文件内容如下:

 

<%@ pageimport="java.util.*" %>

<html>

<head>

   <title>Test</title>

</head>

<body bgcolor="red">

<%

   out.print("session Id:"+session.getId());

%>

<formaction="index.jsp"method="post">

    key<inputtype="text" name="key"/>

    <br />

   value<input type="text"name="value" />

    <br />

    <inputtype="submit"value="Submit" />

    <br />

</form>

<%

    String key=request.getParameter("key");

    if(key!=null&&key.isEmpty()==false)

    {

        Stringvalue =request.getParameter("value");

        session.setAttribute(key,value);

       Enumeration e =session.getAttributeNames();

        while(e.hasMoreElements())

        {

           String sKey = (String)e.nextElement();

           String sValue = (String)session.getAttribute(sKey);

           out.print(sKey+ " ="+sValue+"<br>");

        }

    }

%>

</body>

</html>

 

2.    session粘性测试

   启动同组tomcat以及apache。浏览器访问apache所在的主机IP地址:http://192.168.0.2/。从页面显示的session Id可以看出请求访问的是tomcat1。发现多次刷新或submit后,请求访问的一直是tomcat1,并且session Id一直保持不变,session中的数据也能够保持,说明session粘性良好。

3.    session复制测试

4.     启动同组tomcat以及apache。浏览器访问apache所在的主机IP地址:http://172.18.145.201/,从页面显示的session Id可以看出请求访问的是tomcat1。此时停掉tomcat1,再次提交session数据,或刷新页面,结果如图二所示,发现请求被转发给tomcat2,页面访问正常。页面颜色改变,但Session Id保持不变,session数据也全部传递给tomcat2,表明session复制良好。

设置Apachetomcat开机启动

vi /etc/rc.d/rc.local

/home/tomcat/bin/catalina.shstart

   /home/hadoop /apache/bin/apachectlstart

0 0
原创粉丝点击