亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

tomcat的集群配置

系統(tǒng) 2448 0

配置環(huán)境需要:1.Apache服務(wù)器,下載地址: http://httpd.apache.org/download.cgi#apache22

?2.tomcat6.0或者tomcat7.0,( 集群中 tomcat 不能既有 tomcat6 又有 tomcat7 ,否則雖能夠負(fù)載均衡,但不能進(jìn)行 session 復(fù)制, 下載地址: http://tomcat.apache.org/

?3.jk是tomcat提供給http服務(wù)器的插件mod_jk-1.2.31-httpd-2.2.3.so? ? ? 下載地址: http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/win32/jk-1.2.31/

?

修改Apache配置

1、修改httpd.conf

我的Apache安裝在D:\Program Files\Apache Software Foundation\Apache2.2,找到conf目錄下的httpd.conf,在文件的最后一行添加

include "D:\Program Files\Apache Software Foundation\Apache2.2\conf\mod_jk.conf"

2、新建mod_jk.conf文件,內(nèi)容如下:

#加載mod_jk Module
LoadModule jk_module modules/mod_jk-1.2.31-httpd-2.2.3.so
#指定workers.properties文件路徑
JkWorkersFile conf/workers.properties
#指定那些請求交給tomcat處理,"controller"為在workers.propertise里指定的負(fù)載分配控制器名
JkMount /*.jsp controller

3、將下載的JK插件mod_jk-1.2.31-httpd-2.2.3.so復(fù)制到Apache安裝目錄的modules目錄下。

4、新建并編輯workers.properties文件,內(nèi)容如下:

worker.list = controller,tomcat1,tomcat2 ?#server 列表?
#========tomcat1======== ?
worker.tomcat1.port=11009 ? ?#ajp13 端口號,在tomcat下server.xml配置,默認(rèn)8009
worker.tomcat1.host=localhost ? #tomcat的主機(jī)地址,如不為本機(jī),請?zhí)顚慽p地址?
worker.tomcat1.type=ajp13 ?
worker.tomcat1.lbfactor = 1 ? #server的加權(quán)比重,值越高,分得的請求越多
#========tomcat2======== ?
worker.tomcat2.port=12009 ? ?#ajp13 端口號,在tomcat下server.xml配置,默認(rèn)8009?
worker.tomcat2.host=localhost ? #tomcat的主機(jī)地址,如不為本機(jī),請?zhí)顚慽p地址?
worker.tomcat2.type=ajp13?
worker.tomcat2.lbfactor = 1 ?#server的加權(quán)比重,值越高,分得的請求越多?
#========tomcat3======== ?
worker.tomcat3.port=8009 ? ?#ajp13 端口號,在tomcat下server.xml配置,默認(rèn)8009?
worker.tomcat3.host=localhost ? #tomcat的主機(jī)地址,如不為本機(jī),請?zhí)顚慽p地址?
worker.tomcat3.type=ajp13?
worker.tomcat3.lbfactor = 1 ?#server的加權(quán)比重,值越高,分得的請求越多
#========controller,負(fù)載均衡控制器========?
worker.controller.type=lb
worker.controller.balanced_workers=tomcat1,tomcat2,tomcat3
worker.controller.sticky_session=false(false指的是實(shí)現(xiàn)session復(fù)制)

這里可以配置任意多個(gè)Tomcat,此處配置了3個(gè)Tomat服務(wù)器,2個(gè)本地,1個(gè)遠(yuǎn)程,所以為了它們都能夠順利啟動(dòng)起來,本地的服務(wù)器端口都是不同的,如果Tomcat不再同一機(jī)器上,沒必要改端口的。下面是tomcat1的server.xml的配置

<?xml version='1.0' encoding='utf-8'?>
<!--
? Licensed to the Apache Software Foundation (ASF) under one or more
? contributor license agreements. ?See the NOTICE file distributed with
? this work for additional information regarding copyright ownership.
? The ASF licenses this file to You under the Apache License, Version 2.0
? (the "License"); you may not use this file except in compliance with
? the License. ?You may obtain a copy of the License at
? ? ? http://www.apache.org/licenses/LICENSE-2.0
? Unless required by applicable law or agreed to in writing, software
? distributed under the License is distributed on an "AS IS" BASIS,
? WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
? See the License for the specific language governing permissions and
? limitations under the License.
-->
<!-- Note: ?A "Server" is not itself a "Container", so you may not
? ? ?define subcomponents such as "Valves" at this level.
? ? ?Documentation at /docs/config/server.html
?-->
<Server port=" 8001 " shutdown="SHUTDOWN">
? <!--APR library loader. Documentation at /docs/apr.html -->
? <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
? <!--Initialize Jasper prior to webapps are loaded. Documentation at /docs/jasper-howto.html -->
? <Listener className="org.apache.catalina.core.JasperListener" />
? <!-- Prevent memory leaks due to use of particular java/javax APIs-->
? <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
? <!-- JMX Support for the Tomcat server. Documentation at /docs/non-existent.html -->
? <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" />
? <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
? <!-- Global JNDI resources
? ? ? ?Documentation at /docs/jndi-resources-howto.html
? -->
? <GlobalNamingResources>
? ? <!-- Editable user database that can also be used by
? ? ? ? ?UserDatabaseRealm to authenticate users
? ? -->
? ? <Resource name="UserDatabase" auth="Container"
? ? ? ? ? ? ? type="org.apache.catalina.UserDatabase"
? ? ? ? ? ? ? description="User database that can be updated and saved"
? ? ? ? ? ? ? factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
? ? ? ? ? ? ? pathname="conf/tomcat-users.xml" />
? </GlobalNamingResources>
? <!-- A "Service" is a collection of one or more "Connectors" that share
? ? ? ?a single "Container" Note: ?A "Service" is not itself a "Container",?
? ? ? ?so you may not define subcomponents such as "Valves" at this level.
? ? ? ?Documentation at /docs/config/service.html
? ?-->
? <Service name="Catalina">??
? ? <!--The connectors can use a shared executor, you can define one or more named thread pools-->
? ? <!--
? ? <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"?
? ? ? ? maxThreads="150" minSpareThreads="4"/>
? ? -->?
? ??
? ? <!-- A "Connector" represents an endpoint by which requests are received
? ? ? ? ?and responses are returned. Documentation at :
? ? ? ? ?Java HTTP Connector: /docs/config/http.html (blocking & non-blocking)
? ? ? ? ?Java AJP ?Connector: /docs/config/ajp.html
? ? ? ? ?APR (HTTP/AJP) Connector: /docs/apr.html
? ? ? ? ?Define a non-SSL HTTP/1.1 Connector on port 8080
? ? -->
? ? <Connector port=" 8081 " protocol="HTTP/1.1"?
? ? ? ? ? ? ? ?connectionTimeout="20000"?
? ? ? ? ? ? ? ?redirectPort="8443" />
? ? <!-- A "Connector" using the shared thread pool-->
? ? <!--
? ? <Connector executor="tomcatThreadPool"
? ? ? ? ? ? ? ?port="8080" protocol="HTTP/1.1"?
? ? ? ? ? ? ? ?connectionTimeout="20000"?
? ? ? ? ? ? ? ?redirectPort="8443" />
? ? --> ? ? ? ? ??
? ? <!-- Define a SSL HTTP/1.1 Connector on port 8443
? ? ? ? ?This connector uses the JSSE configuration, when using APR, the?
? ? ? ? ?connector should be using the OpenSSL style configuration
? ? ? ? ?described in the APR documentation -->
? ? <!--
? ? <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
? ? ? ? ? ? ? ?maxThreads="150" scheme="https" secure="true"
? ? ? ? ? ? ? ?clientAuth="false" sslProtocol="TLS" />
? ? -->
? ? <!-- Define an AJP 1.3 Connector on port 8009 -->
? ? <Connector port=" 11009 " protocol="AJP/1.3" redirectPort="8443" />
? ? <!-- An Engine represents the entry point (within Catalina) that processes
? ? ? ? ?every request. ?The Engine implementation for Tomcat stand alone
? ? ? ? ?analyzes the HTTP headers included with the request, and passes them
? ? ? ? ?on to the appropriate Host (virtual host).
? ? ? ? ?Documentation at /docs/config/engine.html -->
? ? <!-- You should set jvmRoute to support load-balancing via AJP ie :
? ? <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1"> ? ? ? ??
? ? -->?
? ? <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">
? ? ? <!--For clustering, please take a look at documentation at:
? ? ? ? ? /docs/cluster-howto.html ?(simple how to)
? ? ? ? ? /docs/config/cluster.html (reference documentation) -->
? ? ?<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>??
<!-- <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" ?
? ? ? ? ? ? ? ? ?channelSendOptions="8"> ?-->
? ? ? ? ? <!-- ? ?? ? ? ? ? ??
? ? ? ? ? <Manager className="org.apache.catalina.ha.session.BackupManager" ?
? ? ? ? ? ? ? ? ? ? expireSessionsOnShutdown="false" ?
? ? ? ? ? ? ? ? ? ? notifyListenersOnReplication="true" ?
? ? ? ? ? ? ? ? ? ? mapSendOptions="8"/> --> ?
? ? ? ? ? ??
? ? ? ? ?<!-- <Manager className="org.apache.catalina.ha.session.DeltaManager" ?
? ? ? ? ? ? ? ? ? ?expireSessionsOnShutdown="false" ?
? ? ? ? ? ? ? ? ? ?notifyListenersOnReplication="true"/> ?
??
? ? ? ? ? <Channel className="org.apache.catalina.tribes.group.GroupChannel"> ?
? ? ? ? ? ? <Membership className="org.apache.catalina.tribes.membership.McastService" ?
? ? ? ? ? ? ? ? ? ? ? ? address="228.0.0.4" ?
? ? ? ? ? ? ? ? ? ? ? ? port="45564" ?
? ? ? ? ? ? ? ? ? ? ? ? frequency="500" ?
? ? ? ? ? ? ? ? ? ? ? ? dropTime="3000"/> ?
? ? ? ? ? ? <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver" ?
? ? ? ? ? ? ? ? ? ? ? address="auto" ?
? ? ? ? ? ? ? ? ? ? ? port="4000" ?
? ? ? ? ? ? ? ? ? ? ? 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"/> ?
? ? ? ? ? ? <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/> ?
? ? ? ? ?<Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/> ?
? ? ? ? ? </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"/> ?
??
? ? ? ? ? <ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/> ?
? ? ? ? ? <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/> ?
? ? ? ? </Cluster> ? -->

? ? ? <!-- The request dumper valve dumps useful debugging information about
? ? ? ? ? ?the request and response data received and sent by Tomcat.
? ? ? ? ? ?Documentation at: /docs/config/valve.html -->
? ? ? <!--
? ? ? <Valve className="org.apache.catalina.valves.RequestDumperValve"/>
? ? ? -->
? ? ? <!-- This Realm uses the UserDatabase configured in the global JNDI
? ? ? ? ? ?resources under the key "UserDatabase". ?Any edits
? ? ? ? ? ?that are performed against this UserDatabase are immediately
? ? ? ? ? ?available for use by the Realm. ?-->
? ? ? <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
? ? ? ? ? ? ?resourceName="UserDatabase"/>
? ? ? <!-- Define the default virtual host
? ? ? ? ? ?Note: XML Schema validation will not work with Xerces 2.2.
? ? ? ?-->
? ? ? <Host name="localhost" ?appBase="webapps"
? ? ? ? ? ? unpackWARs="true" autoDeploy="true"
? ? ? ? ? ? xmlValidation="false" xmlNamespaceAware="false">
? ? ? ? <!-- SingleSignOn valve, share authentication between web applications
? ? ? ? ? ? ?Documentation at: /docs/config/valve.html -->
? ? ? ? <!--
? ? ? ? <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
? ? ? ? -->
? ? ? ? <!-- Access log processes all example.
? ? ? ? ? ? ?Documentation at: /docs/config/valve.html -->
? ? ? ? <!--
? ? ? ? <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" ?
? ? ? ? ? ? ? ?prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/>
? ? ? ? -->
? ? ? </Host>
? ? </Engine>
? </Service>
</Server>

另外兩個(gè)tomcat的server.xml的配置和上面類似,只需把紅色的端口改一下即可。

?

注意: AJP13 connector port jvmRoute 名稱和 workers.properties 中配置對應(yīng)。

?


測試

?

建立測試項(xiàng)目

建立test項(xiàng)目,把這個(gè)項(xiàng)目分別部署到三個(gè)tomcat服務(wù)器下面,同時(shí)需要在項(xiàng)目的WEB-INF文件夾下的web.xml中添加<distributable/>這個(gè)標(biāo)簽

建立test2.jsp,內(nèi)容如下:

?

    <%@ 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>");

  // 如果有新的 Session 屬性設(shè)置

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

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

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

     session.setAttribute(dataName, dataValue);

  }

  out.println("<b>Session 列表</b><br>");

  System.out.println("============================");

  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="test2.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>
  

?

Session測試

將項(xiàng)目部署到3個(gè)服務(wù)器之后,然后分別啟動(dòng)Apache和3個(gè)Tocmat服務(wù)器,這些Tomcat啟動(dòng)順序隨意,然后打開 http://localhost/test/test2.jsp

按F5每刷新一次頁面,session的ID都是一樣的說明實(shí)現(xiàn)了session的復(fù)制,這樣就大功告成了!


?

tomcat的集群配置


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 狠狠干b| 伊人一区二区三区 | avtt亚洲一区中文字幕 | 天天搞夜夜 | 亚洲精品美女久久久久99 | 久草在线视频看看 | 亚洲黄色免费在线观看 | 免费视频福利 | 深夜精品影院18以下勿进 | 外国成人网在线观看免费视频 | jizz美女18 | 米奇影视7777| 亚洲国产一区在线 | 青草视频国产 | 午夜免费福利影院 | 中国一级特黄特级毛片 | 性xxxxxx| 成人一级黄色片 | 欧美色视频日本片高清在线观看 | 日日狠狠久久8888av | 久青草国产在线视频亚瑟影视 | 亚洲最新在线 | 99久久一香蕉国产线看观看 | 久久91视频 | 波多野结衣中文字幕久久 | 欧美日韩视频一区二区 | 色综合久久久久久久久久久 | 亚洲在线小视频 | 91久久亚洲精品国产一区二区 | 四虎新网站 | 成人黄色一级毛片 | 久久久久免费精品国产小说 | 一级毛片成人免费看免费不卡 | h视频在线观看免费网站 | 日韩aaa| 在线视频欧美日韩 | 国产69精品久久久久999小说 | 黑人巨大vs日本妞 | 国产99视频精品免费视频7 | 狠狠色婷婷丁香六月 | 欧美一级在线免费观看 |