中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
Apache+Tomcat集群配置+session共享

 本文Apache+Tomcat集群配置 基于最新的Apache和Tomcat,具體是2011年4月20日最新的Tomcat和Apache集群和負(fù)載均衡配置。

準(zhǔn)備環(huán)境

Apache

Apache是http服務(wù)器,我們利用其對(duì)Tomcat進(jìn)行負(fù)載均衡。目前最新版本為2.2.17,下載地址為http://httpd.apache.org/download.cgi#apache22。如下圖:

目前已經(jīng)出現(xiàn)Apache2.3.11,但是為beta版本,所以沒(méi)有使用。

下載后直接安裝msi即可,如果沒(méi)有其他的http服務(wù)器(如iis)則應(yīng)該可以成功安裝,端口即為80,能夠訪問(wèn)http://localhost/說(shuō)明安裝成功。

Tomcat

Tocmat7目前已經(jīng)出現(xiàn)穩(wěn)定版本的7.0.12,Tomcat6則為6.0.32。經(jīng)我測(cè)試,這2個(gè)版本的Apache負(fù)載均衡配置過(guò)程都是一樣的,因此下面的配置在Tomcat6或7集群是通用的。但是按照下面的配置,集群中Tomcat不能既有Tomcat6又有Tomcat7,否則雖能夠負(fù)載均衡,但不能進(jìn)行session復(fù)制,不知其他方式配置的集群是否可以。

Tomcat就不用怎么介紹了。既然在本地需要多個(gè)節(jié)點(diǎn),那么需要下載ZIP版本的Tomcat。

JK

JK是Tomcat提供給http服務(wù)器的插件(個(gè)人理解的),下載地址為http://mirror.bjtu.edu.cn/apache/tomcat/tomcat-connectors/jk/binaries/win32/jk-1.2.31/。如下圖:



  

這里選擇的是mod_jk-1.2.31-httpd-2.2.3.so,如果http服務(wù)器是Apache2.0.X版本,則必須選擇mod_jk-1.2.31-httpd-2.0.52.so,頁(yè)面下方有英文的說(shuō)明,大家可以看下。

其實(shí)我也在網(wǎng)上看到Apache2.2已經(jīng)集成Tomcat插件模塊了,可以不用JK插件就可以實(shí)現(xiàn)Tomcat負(fù)載均衡,但也需要一些配置,而JK這個(gè)配置相比也不復(fù)雜,就先記錄下來(lái)。

配置過(guò)程

下面就直接寫(xiě)過(guò)程了,我也是網(wǎng)絡(luò)上學(xué)習(xí)的,只是總結(jié)下過(guò)程并且利用最新的Apache和Tomcat測(cè)試了下,還是與網(wǎng)絡(luò)上有些不同的。

修改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)容如下:

LoadModule jk_module modules/mod_jk-1.2.31-httpd-2.2.3.soJkWorkersFile conf/workers.properties#指定那些請(qǐng)求交給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)容如下:

#server worker.list = controller #========tomcat1======== worker.tomcat1.port=11009 worker.tomcat1.host=localhost worker.tomcat1.type=ajp13 worker.tomcat1.lbfactor = 1 #========tomcat2======== worker.tomcat2.port=12009 worker.tomcat2.host=localhost worker.tomcat2.type=ajp13 worker.tomcat2.lbfactor = 1 #========tomcat3======== worker.tomcat3.port=13009 worker.tomcat3.host=192.168.0.80 //在我的虛擬機(jī)中的,可以算遠(yuǎn)程的吧worker.tomcat3.type=ajp13 worker.tomcat3.lbfactor = 1  #========controller,負(fù)載均衡控制器======== worker.controller.type=lb worker.controller.balanced_workers=tomcat1,tomcat2,tomcat3 worker.controller.sticky_session=falseworker.controller.sticky_session_force=1#worker.controller.sticky_session=1 

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

配置Tomcat

配置3個(gè)Tomcat服務(wù)器,將Tomcat解壓后復(fù)制3份,我將每個(gè)文件夾分別命名為T(mén)omcat1,Tomcat2和Tomcat3,修改每一份的server.xml配置,將Tomcat1中修改部分如下圖:

Tomcat2中以上部分的server.xml為:

Tomcat3中以上部分的server.xml為: 

因?yàn)門(mén)omat3在遠(yuǎn)程服務(wù)器,所以沒(méi)必要改端口的,而我先進(jìn)行的本地集群測(cè)試后將Tomcat3復(fù)制到遠(yuǎn)程服務(wù)器,所以這3個(gè)Tomcat端口都不同。

AJP13的connector的poat和jvmRoute名稱和workers.properties中配置對(duì)應(yīng)。

由于截圖面積有限,還需要保證本地2個(gè)本地Tomcat配置server的port,connector為http1.1的port都不相同。

測(cè)試

建立測(cè)試項(xiàng)目

建立test項(xiàng)目,需要在項(xiàng)目的web.xml中添加<distributable/>

建立test2.jsp,內(nèi)容如下(網(wǎng)上都用這個(gè)測(cè)試,我就省的麻煩了):

<%@ 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測(cè)試

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

結(jié)果如下圖:
 

F5刷新頁(yè)面,分別出現(xiàn):

多次刷新頁(yè)面的sessionID看是同一個(gè)ID,說(shuō)明session是復(fù)制成功了。那么session中的存儲(chǔ)的東西呢,在輸入框中分別輸入1、1,2、2,3、3后,顯示結(jié)果如下圖: 

以上的測(cè)試說(shuō)明,集群中的session已經(jīng)共享,每個(gè)集群對(duì)于同一訪問(wèn)均有相同的session,而且session中存儲(chǔ)的變量也復(fù)制了。

節(jié)點(diǎn)插拔測(cè)試

插拔意思是應(yīng)該保證當(dāng)運(yùn)行的集群中某節(jié)點(diǎn)中關(guān)閉或者啟動(dòng)時(shí),集群正常工作并且節(jié)點(diǎn)能夠正常工作。

下面描述測(cè)試過(guò)程了,貼圖太占地方了。

關(guān)閉Tomcat2,刷新頁(yè)面,則不斷訪問(wèn)Tocmat1和Tomcat3,再關(guān)閉Tomcat1后,則只訪問(wèn)一個(gè)Tomcat3,說(shuō)明節(jié)點(diǎn)關(guān)閉時(shí)運(yùn)行正常。

如果重啟Tomcat2,無(wú)論怎么刷新,始終訪問(wèn)Tomcat3,難道Apache不能將請(qǐng)求轉(zhuǎn)發(fā)給中途啟動(dòng)的Tomcat2?。。。這時(shí)利用另外臺(tái)機(jī)器訪問(wèn)頁(yè)面,發(fā)現(xiàn)Tomcat2正常,然后在刷本地頁(yè)面,又可以訪問(wèn)Tomcat2了。

從上面可以看出Apache的負(fù)載均衡時(shí)的算法了,對(duì)于每個(gè)新來(lái)的session,Apache按照節(jié)點(diǎn)配置中的lbfactor比重選擇訪問(wèn)節(jié)點(diǎn),如果某節(jié)點(diǎn)node1不能訪問(wèn),則尋找下一可訪問(wèn)節(jié)點(diǎn),并且將此node1就在該訪問(wèn)session的訪問(wèn)黑名單中,以后該session的訪問(wèn)直接不考慮node1,即使node1又可以訪問(wèn)了。而新來(lái)的session是無(wú)黑名單的,如果新的session能夠訪問(wèn)到node1了,則會(huì)將node1在其他所有session訪問(wèn)的黑名單刪除,這樣其他session就又能訪問(wèn)node1節(jié)點(diǎn)了。以上只是個(gè)人經(jīng)過(guò)測(cè)試后的猜想。

經(jīng)過(guò)以上測(cè)試,說(shuō)明Tomcat集群和負(fù)載均衡已經(jīng)實(shí)現(xiàn)了。

關(guān)于集群我還有些疑問(wèn),所以又測(cè)試了下,直接把結(jié)論寫(xiě)出來(lái):

1.集群下的相同的應(yīng)用可以名稱不同(好像沒(méi)必要啊),只要配置server.xml中host下的context具有相同的path即可。

2. 如果應(yīng)用名稱可以不同,那么應(yīng)用下內(nèi)容是否可以不同呢(這里考慮將不同應(yīng)用通過(guò)集群看起來(lái)是一個(gè)應(yīng)用,并且共享session),然后集群下不同應(yīng)用映射為相同的訪問(wèn)path,具有相同的路徑則負(fù)載,如果某路徑只某個(gè)應(yīng)用具有,則一直訪問(wèn)該應(yīng)用??涩F(xiàn)實(shí)很骨干啊,答案是否定的,至少我以上的配置不能實(shí)現(xiàn)。如果訪問(wèn)只有某應(yīng)用具有的特別路徑,那么只有負(fù)載到該應(yīng)用才可以訪問(wèn),否則直接路徑未找到的錯(cuò)誤頁(yè)面了。

 如果您看過(guò)網(wǎng)上其他Apache+Tomcat的集群配置,您可能有的疑問(wèn)?

1.網(wǎng)上大部分的文章配置2個(gè)tocmat的集群,有的將workers.properties下的worker.controller.sticky_session=1,
然后tomcat1中的server.xml中的jvmRoute設(shè)置為tomcat2,將tomcat2中的jvmRoute設(shè)置為tocmat1,當(dāng)然我這樣設(shè)置
也成功了,但是如果3個(gè)或者更多tocmat呢,怎么設(shè)置每個(gè)tomcat的jvmRoute,我不會(huì)所以才考慮現(xiàn)在的配置

2.server.xml中的Cluster配置問(wèn)題,網(wǎng)上大部分都是使用BackupManager方式,即Cluster下又粘貼了一堆配置。其實(shí)
只要將其中注釋掉的<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>去掉注釋就完成session的集群
復(fù)制了。只是這倆種復(fù)制采用的方式不同而已。http://tomcat.apache.org/tomcat-6.0-doc/cluster-howto.html,
這頁(yè)面已經(jīng)說(shuō)的挺清楚了,集群的session復(fù)制默認(rèn)是DeltaManager,是all to all的復(fù)制,意思是將集群下1個(gè)tomcat應(yīng)用下的session
對(duì)所有的集群中的節(jié)點(diǎn)進(jìn)行復(fù)制,即使那個(gè)節(jié)點(diǎn)沒(méi)有發(fā)布應(yīng)用。顯然是不好的方式,但這在小規(guī)模的集群下并沒(méi)神馬問(wèn)題。
而采用BackupManager,就是眾多網(wǎng)上配置那樣,對(duì)于需要復(fù)制的節(jié)點(diǎn)設(shè)置BackupManager自然也沒(méi)問(wèn)題,
但是它的性能并沒(méi)有DeltaManager 好使“ Downside of the BackupManager: not quite as battle tested as the delta manager”。
因此,具體怎么設(shè)置就看大家了,通常說(shuō)如果不是大規(guī)模集群,就默認(rèn)就好了。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
apache jk tomcat集群 session同步
輕松實(shí)現(xiàn)Apache Tomcat集群和負(fù)載均衡
基于Apache的Tomcat負(fù)載均衡和集群
Tomcat集群,搞定了!
Apache配置反向代理、負(fù)載均衡和集群(mod
apache+Tomcat負(fù)載平衡設(shè)置詳解
更多類(lèi)似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服