Linux apache tomcat 集羣搭建

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章