一個設定檔:
複製程式碼如下:
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
頻道發送選項=“6”>
<管理器類別名稱=“org.apache.catalina.ha.session.BackupManager”
expireSessionOnShutdown =“假”
通知監聽器複製=“真”
地圖發送選項=“6”/>
<!--
<管理器類別名稱=“org.apache.catalina.ha.session.DeltaManager”
expireSessionOnShutdown =“假”
notifyListenersOnReplication="true"/>
-->
<頻道類別名稱=“org.apache.catalina.tribes.group.GroupChannel”>
<Membership className="org.apache.catalina.tribes.membership.McastService"
地址=“228.0.0.4”
連接埠=“45564”
頻率=“500”
下降時間=“3000”/>
<接收器類別名稱=“org.apache.catalina.tribes.transport.nio.NioReceiver”
地址=“自動”
連接埠=“5000”
選擇器逾時=“100”
最大線程數=“6”/>
<Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
<Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
</寄件者>
<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"/>
</頻道>
<Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
過濾器=“.*/.gif|.*/.js|.*/.jpeg|.*/.jpg|.*/.png|.*/.htm|.*/.html|.*/. css |.*/.txt"/>
<部署者類別名稱=“org.apache.catalina.ha.deploy.FarmWarDeployer”
tempDir="/tmp/war-temp/"
部署目錄=“/tmp/war-deploy/”
watchDir="/tmp/war-listen/"
watchEnabled =“假”/>
<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
</集群>
說明如下:
1、集群複製程式碼如下:
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
頻道發送選項=“6”>
1)Tomcat集群主元素,在這個元素裡面可以配置集群的所有詳細信息
2)className主要的群集類,目前只提供了org.apache.catalina.ha.tcp.SimpleTcpCluste作為實作類
3)channelSendOptionssession傳送方式,預設值為8,這個標識確定透過SimpleTcpCluste如何傳送訊息
4)通道.SEND_OPTIONS_SYNCHRONIZED_ACK = 0x0004
通道.SEND_OPTIONS_ASYNCHRONOUS = 0x0008
通道.SEND_OPTIONS_USE_ACK = 0x0002
如果使用(ASYNCHRONOUS)加(USE_ACK)方式來傳送訊息,那麼值應該是10(8+2)或0x000B
如果使用(SYNCHRONIZED_ACK)加(USE_ACK)方式來傳送訊息,那麼值應該是6(4+2)或0x0006
2、經理複製程式碼如下:
<管理器類別名稱=“org.apache.catalina.ha.session.BackupManager”
expireSessionOnShutdown =“假”
通知監聽器複製=“真”
地圖發送選項=“6”/>
<!--
<管理器類別名稱=“org.apache.catalina.ha.session.DeltaManager”
expireSessionOnShutdown =“假”
notifyListenersOnReplication="true"/>
-->
1)管理tomcat之間的session複製
2)className目前有兩個實作類別:org.apache.catalina.ha.session.DeltaManager和org.apache.catalina.ha.session.BackupManager
3)DeltaManager複製並分散式會話資料到叢集下所有的節點,這個實作類別被證明非常可靠、運行得非常好。
4)expireSessionsOnShutdown當一個web程式被結束時,tomcat分發統計指令到每個Session,並通知所有會話監聽器執行。 ,預設為false
5)notifyListenersOnReplication如果設定為true,當session屬性被複製和移動的時候,session監聽器被通知
3、頻道複製程式碼如下:
<頻道類別名稱=“org.apache.catalina.tribes.group.GroupChannel”>
Channel是Apache Tribes的主元件,channel管理一組子元件,並和它們一起組成了tomcat實例間的通訊框架。這些元件來實作訊息傳遞。
4、會員資格
複製程式碼如下:
<Membership className="org.apache.catalina.tribes.membership.McastService"
地址=“228.0.0.4”
連接埠=“45564”
頻率=“500”
下降時間=“3000”/>
MemberShip元件會自動搜尋發現叢集裡的新節點或已經停止運作的節點,並發布對應的通知。
5、接收器複製程式碼如下:
<接收器類別名稱=“org.apache.catalina.tribes.transport.nio.NioReceiver”
地址=“自動”
連接埠=“5000”
選擇器逾時=“100”
最大線程數=“6”/>
負責監聽接收其他節點傳送過來的資料。
6.寄件人複製程式碼如下:
<Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
<Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
</寄件者>
管理從一個節點發送到另外一個節點的出站連接和資料訊息,允許訊息發送。
7.攔截器複製程式碼如下:
<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透過InterceptorStack進行訊息傳遞,這裡可以自訂訊息的傳送和接收方式,甚至MemberShip的處理方式。
8、價值複製程式碼如下:
<Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
過濾器=“.*/.gif|.*/.js|.*/.jpeg|.*/.jpg|.*/.png|.*/.htm|.*/.html|.*/. css |.*/.txt"/>
1)Value在呼叫Http請求鏈中衍生出攔截器的作用,用於決定什麼情況下資料需要被複製。
org.apache.catalina.ha.tcp.ReplicationValve,ReplicationValue在Http請求結尾判斷目前資料是否需要被複製。
2)Filter內容為url或檔案結尾,當存取連結配置filter時,實際上session沒有改變,叢集會認為session沒有任何變化,因此不會複製並傳送改變session屬性。
9、部署者複製程式碼如下:
<部署者類別名稱=“org.apache.catalina.ha.deploy.FarmWarDeployer”
tempDir="/tmp/war-temp/"
部署目錄=“/tmp/war-deploy/”
watchDir="/tmp/war-listen/"
watchEnabled =“假”/>
使資源支援farmed部署
10、集群監聽器複製程式碼如下:
<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
Clusterlistener用於追蹤訊息發送和接收。
ClusterSessionListener用來監聽負載元件接收訊息,當使用DeltaManager的時候,訊息被負載接收,並透過ClusterSessionListener傳遞給Session Manager。