<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    軟件藝術(shù)思考者  
    混沌,彷徨,立志,蓄勢...
    公告
    日歷
    <2015年7月>
    2829301234
    567891011
    12131415161718
    19202122232425
    2627282930311
    2345678

    導(dǎo)航

    隨筆分類(86)

    隨筆檔案(85)

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

     
    apache2+tomcat5.5集群+session同步
    作者:劉宇 liuyu.blog.51cto.com
    msn:mgroup49073@hotmail.com linuxtone
    說明:借前人之鑒,寫一篇關(guān)于tomcat集群及session同步的問題,首先介紹tomcat集成及做集群的原因和必要性,session同步的作用。然后包括各軟件的安裝配置。
    原理:tomcat 做個WEB服務(wù)器有它的局限性,處理能力低,效率低。承受并發(fā)?。?/span>1000左右)。但目前有不少網(wǎng)站或者頁面是JSP的。并采用了tomcat做為WEB,因此只能在此基礎(chǔ)上調(diào)優(yōu)。
    目前采取的辦法是Apache + Mod_JK + tomcat 來解決一部分請求,用戶訪問的是apache,但有jsp頁面的時候才會去請求tomcat。如果量一大,那么tomcat無法承受,那么只能做tomat集群,Apache + Mod_JK 就是負載均衡器了。
    Mod_JK2負載均衡 可以把不同的jsp請求轉(zhuǎn)發(fā)到不同的tomcat服務(wù)器,還可以偵測服務(wù)器存活。如果有條件可以給Mod_JK2做一個HA因為做完集群后壓力就在JK上了。
    簡單拓仆圖:
    鎷撲粏鍥?
    一、測試環(huán)境及軟件安裝:-----如果已經(jīng)安裝過的可以省略這步
    linux 2.6 內(nèi)核 centos 5.2
    本例二臺tomcat 不在同一機器。
    先安裝了所需的程序庫
    yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel
    下載源碼包:(本文不安裝PHP
    apache2 tomcat5都可以在 apache.org 下載
    tomcat5需要JDK1.5的版本。
    JK本文用的源碼包tomcat-connectors
    Apache 安裝:
    # tar zxvf httpd-2.2.8.tar.gz
    #cd httpd-2.2.8
    # ./configure --prefix=/usr/local/apache2 --enable-modules=so --enable-so
    # make && make install
    /usr/local/apache2/bin/apachectrl start
    看到apache就配置成功了。
    JDK的安裝
    #chmod 755 jdk-1_5_0_16-linux-i586.bin
    #./jdk-1_5_0_16-linux-i586.bin
    # mv jdk-1_5_0_16 /usr/local/
    到此JDK已經(jīng)安裝完成
    /usr/bin目錄下,把原用的java,javac文件刪除:
    #rm -rf java
    #rm –rf javac
    /usr/bin 下建立 軟連接 java
    # ln -s /usr/local/jdk-1_5_0_16/bin/java /usr/bin/java
    # ln -s /usr/local/jdk-1_5_0_16/bin/javac /usr/bin/javac
    # java –version
    # javac -version
    java version "1.4.2_08"
    Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_08-b03)
    Java HotSpot(TM) Client VM (build 1.4.2_08-b03, mixed mode)
    為了方便下在的工作建立兩個軟鏈接:
    ln -s /usr/local/jdk-1_5_0_16 /usr/local/jdk
    ln -s /usr/local/jdk-1_5_0_16/jre /usr/local/jre
    Tomcat的安裝
    #tar -zxvf apache-tomcat-5.5.27.tar.gz
    # mv apache-tomcat-5.5.27 /usr/local/tomcat
    設(shè)置環(huán)境變量:
    #Set Environment by NetSeek
    JAVA_HOME=/usr/local/jdk
    export JAVA_HOME
    JRE_HOME=/usr/local/jre
    export JRE_HOME
    CLASSPATH=/usr=/usr/local/tomcat/common/lib/:/usr/local/jdk/lib:/usr/local/jre/lib
    export CLASSPATH
    PATH=$PATH:/usr/local/tomcat/bin/:/usr/local/apache/bin:/usr/local/jdk/bin:/usr/local/jre/bin
    export PATH
    TOMCAT_HOME=/usr/local/tomcat
    export TOMCAT_HOME
    啟動tomcat以檢查是否存在錯誤:
    #cd /usr/local/tomcat/bin
    #./startup.sh
    [url]http://IP[/url]地址:8080 可以看到貓頭:)成功了。
    在另一臺機器上也安裝tomcat 并配置好。
    JK 安裝 (整合apache tomcat
    # tar zxvf tomcat-connectors-1.2.27-src.tar.gz
    #cd tomcat-connectors-1.2.27-src/native
    # ./configure --with-apxs=/usr/local/apache2/bin/apxs --with-java-home=/usr/local/jdk
    # make && make install
    /usr/local/apache2/modules/ 下會產(chǎn)生mod_jk.so
    修改apache配置文件:
    LoadModule jk_module modules/mod_jk.so
    JkWorkersFile /usr/local/tomcat/conf/jk/workers.properties JK配置文件 負載的配置
    JkShmFile logs/mod_jk.shm
    JkLogFile /usr/local/tomcat/logs/mod_jk.log 相關(guān)日志的設(shè)置
    JkLogLevel info
    JkMount /*.jsp controller jsp的請求轉(zhuǎn)發(fā)給 controller(負載均衡控制器)
    修改DoucmentRoot tomcat的目錄一致。
    本文修改為:/usr/local/tomcat/webapps/
    二、調(diào)度器JK的配置
    建立JK配置文件:
    #vi /usr/local/tomcat/conf/jk/workers.properties
    workers.tomcat_home=/usr/local/tomcat #指定tomcat的目錄――如果2tomcat在同一臺機器該選項去掉
    workers.java_home=/usr/local/jdk #指定jdk的目錄
    ps=/
    worker.list=controller #指定負載名,這個可以隨便起,與下面的 worker.controller.type=lb要對應(yīng)
    #========tomcat1======== 第一臺tomcat的配置
    worker.tomcat1.port=8009
    worker.tomcat1.host=localhost #這里也可以寫IP
    worker.tomcat1.type=ajp13
    worker.tomcat1.lbfactor=1 #權(quán)量 數(shù)值越大,分配的機率就最小
    #========tomcat2===========
    worker.tomcat2.port=8009
    worker.tomcat2.host=192.168.19.81 (tomcat2IP)
    worker.tomcat2.type=ajp13
    worker.tomcat2.lbfactor=1
    #========controller,負載均衡器=======
    worker.controller.type=lb
    worker.controller.balance_workers=tomcat1,tomcat2 # server.xml配置文件里的jvmRoute="tomcat1"指定的名字
    worker.controller.sticky_session=1
    三、tomcat集群配置,session 同步配置:
    1、tomca1 tomcat 2 在同一臺機器
    Tomcat 1 (IP: 192.168.19.199)
    A、修改Engine節(jié)點信息: <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">
    B、去掉<Cluster> <\Cluster> 的注釋符
    C、修改Cluster 節(jié)點信息
    <Membership
    className="org.apache.catalina.cluster.mcast.McastService"

    mcastBindAddress="192.168.19.199"
    mcastAddr="224.0.0.1"
    mcastPort="45564"
    mcastFrequency="500"
    mcastDropTime="3000"/>
    <Receiver
    className="org.apache.catalina.cluster.tcp.ReplicationListener"

    tcpListenAddress="192.168.19.199"
    tcpListenPort="4001"
    tcpSelectorTimeout="100"
    tcpThreadCount="6"/>

    Tomcat 2 (IP: 192.168.19.81)
    A、修改Engine節(jié)點信息: <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat2">
    B、去掉<Cluster> <\Cluster> 的注釋符
    C、修改Cluster 節(jié)點信息
    <Membership
    className="org.apache.catalina.cluster.mcast.McastService"
    mcastBindAddress="192.168.19.199"
    mcastAddr="224.0.0.1"
    mcastPort="45564"
    mcastFrequency="500"
    mcastDropTime="3000"/>
    <Receiver
    className="org.apache.catalina.cluster.tcp.ReplicationListener"
    tcpListenAddress="192.168.19.199"
    tcpListenPort="4002" 一定要改
    tcpSelectorTimeout="100"
    tcpThreadCount="6"/>
    D、將8080 8009 8082三個節(jié)點的端口改為
    9080 9009 9082 避免 與tomcat1端口沖突
    注:這里的IP也可以不改


    2、tomca1 tomcat 2 在不同機器上
    Tomcat 1 (IP: 192.168.19.199)
    A、修改Engine節(jié)點信息: <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">
    B、去掉<Cluster> <\Cluster> 的注釋符
    C、修改Cluster 節(jié)點信息
    <Membership
    className="org.apache.catalina.cluster.mcast.McastService"
    mcastBindAddress="192.168.19.199"
    mcastAddr="224.0.0.1"
    mcastPort="45564"
    mcastFrequency="500"
    mcastDropTime="3000"/>
    <Receiver
    className="org.apache.catalina.cluster.tcp.ReplicationListener"
    tcpListenAddress="192.168.19.199"
    tcpListenPort="4001"
    tcpSelectorTimeout="100"
    tcpThreadCount="6"/>

    Tomcat 2 (IP: 192.168.19.81)
    A、修改Engine節(jié)點信息: <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">
    B、去掉<Cluster> <\Cluster> 的注釋符
    C、修改Cluster 節(jié)點信息
    <Membership
    className="org.apache.catalina.cluster.mcast.McastService"
    mcastBindAddress="192.168.19.81"
    mcastAddr="224.0.0.1"
    mcastPort="45564" mcastFrequency="500"
    mcastDropTime="3000"/>
    <Receiver
    className="org.apache.catalina.cluster.tcp.ReplicationListener"

    tcpListenAddress="192.168.19.81"
    tcpListenPort="4001"
    tcpSelectorTimeout="100"
    tcpThreadCount="6"/>

    修改web應(yīng)用里面WEB-INF目錄下的web.xml文件,加入標(biāo)簽
    <distributable/>
    直接加在</web-app>之前就可以了
    做tomcat集群必須需要這一步,否則用戶的session就無法正常使用。
    注意事項1mcastAddr="224.0.0.1" 這主廣播地址因此需要開啟網(wǎng)卡組播功能
    route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0
    分別在各機器上運行
    2、查看端口情況:
    Netstat –antl |grep 4001 同步監(jiān)聽的端口
    tomcat1

    tomcat2
    <!--[if !vml]-->
    <!--[endif]-->
    3、測試廣播:
    java -cp tomcat-replication.jar MCaster 224.0.0.1 45564 Terminal1
    java -cp tomcat-replication.jar MCaster 224.0.0.1 45564 Terminal2
    如果不報錯則能正常廣播
    tomcat-replication.jar 下載:[url]http://cvs.apache.org/~fhanik/tomcat-replication.jar[/url]
    如果是二臺機器,可以用tcpdump 抓取包
    五、測試 集群及session同步
    webapps 下新建test 目錄
    目錄下建WEB-INF目錄下的web.xml文件
    <web-app xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee [url]http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd[/url]"
    version="2.4">
    <display-name>TomcatDemo</display-name>
    <distributable/>
    </web-app>
    再在webapps 建立print.jsp test.jsp
    Print.jsp :
    <%
    System.out.println("www.linuxtone.org liuyu.blog.51cto.com");
    %>
    test.jsp
    <%@ page contentType="text/html; charset=GBK" %>
    <%@ page import="java.util.*" %>
    <html><head><title>Cluster App Test</title></head>
    <body>
    Server Info:
    <%
    out.println(request.getLocalAddr() + " : " + request.getLocalPort()+"<br>");%>
    <%
    out.println("<br> ID " + session.getId()+"<br>");
    String dataName = request.getParameter("dataName");
    session.setAttribute("myname","session?");
    if (dataName != null && dataName.length() > 0) {
    String dataValue = request.getParameter("dataValue");
    session.setAttribute(dataName, dataValue);
    }
    out.print("<b>Session P±?b>");
    Enumeration e = session.getAttributeNames();
    while (e.hasMoreElements()) {
    String name = (String)e.nextElement();
    String value = session.getAttribute(name).toString();
    out.println( name + " = " + value+"<br>");
    System.out.println( name + " = " + value);
    }
    %>
    <form action="index.jsp" method="POST">
    û³?<input type=text size=20 name="dataName">
    <br>
    ?:<input type=text size=20 name="dataValue">
    <br>
    <input type=submit>
    </form>
    </body>
    </html>
    重啟所有的服務(wù)。
    如圖可以看出tomcat 集群配置完成
    Session 復(fù)制的查看
    在同一窗口,輸入名稱和值,
    在日志可以看到如下結(jié)果. 這種結(jié)果表明成功了
    tomcat1

    tomcat 2

    <!--[if !vml]-->
    <!--[endif]-->
    錯誤總匯:
    skipping state transfer. No members active in cluster group."
    mcastBindAddress 沒有添加或添加得不對
    ?Unknown default host: ajp13
    JK 配置不當(dāng)
    其它的不記得了。。。
    posted on 2015-07-08 18:26 智者無疆 閱讀(390) 評論(0)  編輯  收藏 所屬分類: software project
     
    Copyright © 智者無疆 Powered by: 博客園 模板提供:滬江博客


       觀音菩薩贊

    主站蜘蛛池模板: 亚洲av无码专区在线电影| 亚洲欧洲精品久久| 亚洲成在人线aⅴ免费毛片| 波多野结衣中文字幕免费视频 | 男女猛烈激情xx00免费视频 | 亚洲国产成人久久综合一区77| 亚洲色大情网站www| 看全色黄大色大片免费久久| 亚洲va久久久久| 免费黄色毛片视频| 添bbb免费观看高清视频| 国产精品公开免费视频| 美女被吸屁股免费网站| 久久夜色精品国产亚洲av| 精品97国产免费人成视频| 亚洲AV无码久久精品狠狠爱浪潮| 99爱在线观看免费完整版| 亚洲国产精品综合久久20| 日本高清免费网站| 亚洲免费无码在线| 亚洲欧洲日韩国产综合在线二区| 国产精品免费观看| 精品国产亚洲一区二区三区在线观看| 亚洲国产精品尤物yw在线| 日本免费中文字幕| 国产午夜亚洲精品国产| 免费一级毛片一级毛片aa| 免费人成激情视频在线观看冫| 亚洲精品成人久久| 在线视频免费国产成人| baoyu116.永久免费视频| 亚洲欧洲国产精品久久| 免费国产真实迷j在线观看| 国内少妇偷人精品视频免费| 亚洲一区免费视频| 亚洲视频人成在线播放| 999任你躁在线精品免费不卡| 亚洲成在人线aⅴ免费毛片| 久久亚洲高清观看| 免费毛片在线播放| 成人精品一区二区三区不卡免费看|