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

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

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

    paulwong

    配置負(fù)載均衡 配置集群

    所需軟件

      Apache :apache_2.0.63 1 個(gè) 【apache_2.0.63-win32-x86-no_ssl.msi】

      Tomcat: apache-tomcat-5.5.23 (zip版) 2個(gè)

      mod_jk:: mod_jk-apache-2.0.55.so 1個(gè)

      部署說明

      在同一臺機(jī)器上部署,即充當(dāng)Apache負(fù)載服務(wù)器,又安裝兩個(gè)Tomcat Web服務(wù),由Apache負(fù)責(zé)分發(fā)不同的請求到Tomcat Web服務(wù)器。

      注意:由于同一臺機(jī)器安裝兩個(gè)TomcatWeb服務(wù),所以,系統(tǒng)環(huán)境變量不要配置TOMCAT_HOME 和CATALINA_HOME.

      安裝說明

      http://httpd.apache.org/ 下載Apache 2.0.63

      http://tomcat.apache.org/download-55.cgi 下載tomcat5.5 zip版本(解壓即可,綠色版)

      http://apache.mirror.phpchina.com/tomcat/tomcat-connectors/jk/binaries/win32/jk-1.2.26/ 下載mod_jk,注意和 apache版本匹配

      Apache 的安裝一路Next即可。

      Tomcat 的安裝解壓兩份Tomcat即可。由于在同一臺電腦上,所以第二個(gè)Tomcat服務(wù)注意很多portId不能與第一個(gè)相同!

      安裝好apache和tomcat后,再將mod_jk-apache-2.0.55.so拷貝到Apache的安裝目錄的modules子目錄下。

      一、配置負(fù)載均衡

      負(fù)載均衡,就是apache將客戶請求均衡的分給tomcat1,tomcat2....去處理

      Step1.修改Apache配置文件http.conf

      在apache安裝目錄下conf目錄中找到http.conf,在文件最后加入一句:

      #加入下面一句話指定mod_jk配置文件路徑

    include "C:\Program Files\Apache Group\Apache2\conf\mod_jk.conf"

    Step2. http.conf 同目錄下新建mod_jk.conf文件,內(nèi)容如下

    #加載mod_jk Module

      LoadModule jk_module modules/mod_jk-
    1.2.26-httpd-2.0.59.so

      #指定 workers.properties文件路徑

      JkWorkersFile conf/workers2.properties

      #指定那些請求交給tomcat處理
    ,"controller"為在workers2.propertise里指定的負(fù)載分配控制器

      JkMount /*.jsp controller

      JkMount /*.do controller

      # Where to put jk logs

      JkLogFile logs/mod_jk.log

      # Set the jk log level
    [debug/error/info]

      JkLogLevel info

      # Select the log format

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

      # JkOptions indicate to send SSL KEY SIZE
    ,

      JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories

      # JkRequestLogFormat set the request format

      JkRequestLogFormat
    "%w %V %T"

    Step3.在http.conf同目錄下新建 workers2.properties文件,內(nèi)容如下

    #server 列表

      worker.list
    = tomcat1,tomcat2,controller

      #
    ========tomcat1========

      worker.tomcat1.port
    =9009 #ajp13 端口號,在tomcat下server.xml配置,默認(rèn)8009

      worker.tomcat1.host
    =localhost #tomcat的主機(jī)地址,如不為本機(jī),請?zhí)顚慽p地址

      worker.tomcat1.type
    =ajp13

      worker.tomcat1.lbfactor
    =2 #server的加權(quán)比重,值越高,分得的請求越多

      #
    ========tomcat2========

      worker.tomcat2.port
    =8009 #ajp13 端口號,在tomcat下server.xml配置,默認(rèn)8009

      worker.tomcat2.host
    =99.48.225.100 #tomcat的主機(jī)地址,如不為本機(jī),請?zhí)顚慽p地址

      worker.tomcat2.type
    =ajp13

      worker.tomcat2.lbfactor
    =1 #server的加權(quán)比重,值越高,分得的請求越多

      #
    ========controller,負(fù)載均衡控制器========

      worker.controller.type
    =lb

      worker.controller.balanced_workers
    =tomcat2,tomcat1 #指定分擔(dān)請求的tomcat

      worker.controller.sticky_session
    =1


      Step4.修改tomcat配置文件server.xml

      如果你在不同電腦上安裝tomcat,tomcat的安裝數(shù)量為一個(gè),可以不必修改tomcat配置文件,我這里是在同一臺電腦上安裝兩個(gè)tomcat,所以需要更改其中一個(gè)的設(shè)置:

      打開tomcat2/conf/server.xml文件,修改以下端口號和增加jvmroute:

    <Server port="9005" shutdown="SHUTDOWN">

      
    <Connector port="9999" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"  enableLookups="false" redirectPort="8443" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="gb2312"/>

      
    <Connector port="9009" enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />

      
    <Connector port="9082" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"

      enableLookups
    ="false" acceptCount="100" connectionTimeout="20000" proxyPort="80" disableUploadTimeout="true" />


    再在兩個(gè)tomcat web服務(wù)上增加jvmRoute的值指向tomcat1,tomcat2:

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

    Step5. 測試是否成功
      編寫一個(gè)測試jsp
      建立一個(gè)目錄test.里面新建一個(gè)test.jsp,內(nèi)容為

    <%@ page language="java" pageEncoding="GB2312" import="java.util.*"%>
    <%
      System
    .out.println("===========================");
      
    %>
    <html>
    <head>
    <title>主頁</title>
    <link href="css/css.css" rel="stylesheet" type="text/css" />
    <script type="text/javascript">
      function showCss(){
      document.getElementByIdx_x_xx("css").className = "show";
      }
      
    </script>
    </head>
    <body class="bg1">把test放到tomcat1,tomcat2下
    </body>
    </html>

    打開IE的兩個(gè)窗口http://localhost/ZX/index.jsp ,第一個(gè)窗口將由Tomcat1控制,而第二個(gè)窗口將被jk調(diào)度tomcat2來控制,但相同的session都由同一個(gè)tomcat服務(wù)器控制。

      二、配置集群

      集群在這里完成的即session在不同tomcat服務(wù)器中的同步復(fù)制。并不是說每個(gè)tomcat服務(wù)器中的session值一致,而是當(dāng)tomcat1被關(guān)閉后,在其上跑的session值將被復(fù)制到tomcat2中去,當(dāng)在tomcat1的客戶端繼續(xù)請求時(shí),apache仍然會將請求通過jk調(diào)度到tomcat2服務(wù)器上,讓之前基于tomcat1的session服務(wù)繼續(xù)下去。

      這樣,就可以提高系統(tǒng)的容錯(cuò)能力。

      Step1. 在tomcat2的server.xml文件中,

      將以下Element的注釋除去:

    <Cluster className="org.apache.catalina.cluster.tcp.SimpleTcpCluster"  managerClassName="org.apache.catalina.cluster.session.DeltaManager"  expireSessionsOnShutdown="false"  useDirtyFlag="true"   notifyListenersOnReplication="true">

      
    <Membership   className="org.apache.catalina.cluster.mcast.McastService" mcastAddr="228.0.0.4"  mcastPort="45564" mcastFrequency="500"  mcastDropTime="3000"/>

      
    <Receiver  className="org.apache.catalina.cluster.tcp.ReplicationListener" tcpListenAddress="auto" tcpListenPort="4001" tcpSelectorTimeout="100" tcpThreadCount="6"/>

      
    <Sender   className="org.apache.catalina.cluster.tcp.ReplicationTransmitter"   replicationMode="pooled"   ackTimeout="15000" waitForAck="true"/>

      
    <Valve className="org.apache.catalina.cluster.tcp.ReplicationValve"   filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/>

      
    <Deployer className="org.apache.catalina.cluster.deploy.FarmWarDeployer" tempDir="/tmp/war-temp/"  deployDir="/tmp/war-deploy/"  watchDir="/tmp/war-listen/"   watchEnabled="false"/>

      
    <ClusterListener className="org.apache.catalina.cluster.session.ClusterSessionListener"/>

    </Cluster>

    同時(shí)修改:

      tcpListenPort="4001"

      為:

      tcpListenPort="4002"

      這是因?yàn)閮蓚€(gè)tomcat在同一臺機(jī)器上為了防止端口沖突!

      Step2: 在tomcat1和tomcat2的/WEBINF/web.xml文件中

      在元素中增加這一句:

      Step3: 測試集群:

      增加文件test-session.jsp:

    <%@ page language="java" pageEncoding="GB2312" import="java.util.*"%>

      
    <%@ 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>"); // 如果有新的 Session 屬性設(shè)置

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

      
    if (dataName != null && dataName.length() > 0) {

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

      session.setAttribute(dataName, dataValue);

      }

      out.print(
    "<b>Session 列表</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="test-session.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>

    開兩個(gè)IE窗口輸入:http://localhost/ZX/test-session.jsp 可以看到前一個(gè)IE創(chuàng)建了一個(gè)session1,服務(wù)指向tomcat1,后一個(gè)IE創(chuàng)建了一個(gè)session2,服務(wù)指向tomcat2,往session1的頁面不斷添加值寫入tomcat1,。。。比如:

      session1: ivy1 ivy11

      session2: ivy2 ivy22

      這時(shí),將tomcat1關(guān)閉(關(guān)閉的同時(shí),在服務(wù)的后臺,tomcat1中的所有session將被同步到tomcat2中去),仍然在第一個(gè)IE中請求服務(wù),服務(wù)將被Apache中的jk調(diào)度到tomcat2上,session1沒有被丟失!

      三、創(chuàng)建一個(gè)jkstatus頁面定時(shí)查看該集群的服務(wù)情況

      step1:在workers2.properties文件中:

      修改:

      #server 列表

      worker.list = tomcat1,tomcat2,controller

      為

      #server 列表

      worker.list = tomcat1,tomcat2,controller,status

      新增:

      # 這個(gè)是用來監(jiān)控jk運(yùn)行情況的worker

      worker.status.type=status

      #end

      Step2: 在文件mod_jk.conf中

      新增:

      JkMount /jkstatus status

      Step3: 測試:

      在IE中輸入:http://localhost/jkstatus 可以看到各個(gè)tomcat服務(wù)的使用情況

    posted on 2011-12-09 00:45 paulwong 閱讀(341) 評論(0)  編輯  收藏 所屬分類: 分布式

    主站蜘蛛池模板: 产传媒61国产免费| 亚洲国产成+人+综合| 成人精品国产亚洲欧洲| 国产福利在线观看免费第一福利| 亚洲视频一区在线播放| 蜜臀98精品国产免费观看| 亚洲福利电影在线观看| 国产免费女女脚奴视频网| 亚洲国产精品成人精品软件| 999国内精品永久免费观看| 国产精品高清视亚洲一区二区| 成年女人免费视频播放体验区| 亚洲欧美日韩中文高清www777| 国产传媒在线观看视频免费观看| 精品视频免费在线| 亚洲一区精品伊人久久伊人| 99精品免费视频| 97亚洲熟妇自偷自拍另类图片| 啦啦啦完整版免费视频在线观看| 亚洲一卡2卡3卡4卡国产网站 | 亚洲第一页日韩专区| 拍拍拍无挡免费视频网站| 亚洲综合一区二区国产精品| 在线观看免费人成视频色9| 精品国产亚洲AV麻豆| 亚洲三区在线观看无套内射| 8888四色奇米在线观看免费看| 亚洲日本视频在线观看| 日韩中文字幕在线免费观看| 一级做a毛片免费视频| 亚洲综合在线视频| 日本不卡视频免费| 日韩电影免费在线观看中文字幕| 亚洲人成伊人成综合网久久| 国产公开免费人成视频| 免费无码作爱视频| 亚洲AV无码一区二区乱子仑| 亚洲人成伊人成综合网久久久| 免费做爰猛烈吃奶摸视频在线观看| 日韩毛片在线免费观看| 亚洲网址在线观看|