引用 單獨Tomcat5.X集羣詳細部署配置和說明

 

引用java

【轟隆隆】單獨Tomcat5.X集羣詳細部署配置和說明

來源:鐵木箱子的博客node

      對於大在線量和高訪問量的WEB應用系統而言,web集羣的部署是必須的,並且也是必要的。針對Tomcat5.X系列的web應用服務器的集羣,一般是分爲兩個部分,一個是訪問負載,一個就是SESSION複製或同步。第二步不是必須的,可是有時候是必要的,關鍵是要看負載是採用什麼樣的策略了。好比採用stick session策略,那麼同一個用戶的全部請求都由一個Tomcat實例來服務,那麼也就不須要session複製了,可是同時也缺乏了failover的能力。咱們今天主要講的就是Tomcat的session複製功能的相關配置,至於訪問負載等相關方面請參看LVS的集羣配置等文檔。web

      我今天這裏就Tomcat5系列來講明下如何進行集羣配置和部署,其實tomcat中配置集羣是很是簡單的,只須要以下幾個步驟便可完成。windows

一、修改tomcat實例的server.xml文件

1)找到Engine標籤,加入屬性:jvmRoute=」node1″,其中node1表示節點的名稱;tomcat

2)找到Cluster標籤,去掉其註釋。同時修改tcpListenAddress爲本機的IP地址(非127.0.0.1的迴路地址)服務器

二、修改應用的web.xml文件

      修改你的web應用WEB-INF目錄下的web.xml文件,加入以下標籤(這個是tomcat進行session複製所必須的,不然session不能進行復制!)session

 
    
  1. />

      完成上述的兩個配置後,能夠把修改後的tomcat複製到多臺機器上,並部署修改了web.xml文件的應用到每一個tomcat中,而後啓動tomcat就能夠實現集羣部署了。注意若是是在同一臺機器上配置多個tomcat實例來進行集羣的測試,那麼請必定要注意tomcat實例運行的端口和集羣所監聽的端口是否衝突!jvm

      tomcat的集羣部署修改動做都比較簡單,但實際在運行過程當中會出現一系列的問題,我這裏列舉我在配置後使用過程當中出現的一些問題和要點,供你們參考:tcp

一、用戶存入SESSION中的數據的問題

      使用tomcat集羣進行SESSION複製,必需要保證你的session中存放的全部對象都是實現了java.io.Serializable接口的,由於session複製就是序列化對象到其餘WEB應用服務器上的,因此若是沒有實現該接口,那麼SESSION同步將會失敗。另一點,就是若是要同步的機器比較多的話,那麼要注意保證SESSION中存放的數據比較小,不要什麼都存放到SESSION中,由於複製SESSION也是須要開銷的,數據越大開銷也越大。測試

二、Tomcat執行SESSION複製的觸發條件

      咱們在tomcat的server.xml文件中集羣部分cluster標籤中能夠看到屬性:useDirtyFlag,若是這個設置爲true(默認的),那麼只有當使用setAttribute往session中設置數據的時候纔會同步其餘WEB服務器的SESSION,若是爲false,那麼每一次請求的sesison都會被同步到其餘服務器上。所以在操做SESSION的時候要特別注意,避免出現SESSION沒法同步的問題。

      舉個簡單的例子,好比咱們在單機應用狀況下修改SESSION中用戶的某一個數據,那麼一般就是:

 
    
  1. User user = (User )request. getSession ( ). getAttribute (「user」 ) ;
  2. User. setName (「my name」 ) ;

      這樣咱們就是直接存取出來,而後進行修改,雖然在單機狀況下沒有問題,可是在集羣條件下,這樣就致使了多臺WEB服務器上的SESSION不一樣步的問題,由於SESSION並無改變,Tomcat沒法監視session中某個數據的值是否發生了變化。所以,咱們還須要執行以下操做以保證SESSION的同步:

 
    
  1. request. getSession ( ). setAttribute (「user」, user ) ;

      因此,咱們在操做SESSION的時候要特別注意!另外的建議就是,咱們應該儘量的不要修改SESSION中的數據。

三、Linux下的組播問題

      由於Tomcat的SESSION複製通訊是經過組播功能來實現不一樣服務器之間的交互的,因此須要在服務器上開通組播功能,而Linux系統下默認是沒有開通的,咱們須要經過以下命令來開通其組播功能:

 
    
  1. route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0

      在windows下默認是開通組播的,因此無須作改變。

 

 

【轟隆隆】推薦:

http://www.honglonglong.com

http://blog.163.com/fulong258    

相關文章
相關標籤/搜索