您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關如何進行Tomcat官方的集群配置說明,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
我們都知道,為了應對大量的請求,單臺的Tomcat不能滿足的時候,需要采取一系列的措施,例如分流、集群等。
進行Tomcat集群的時候,最需要關注和實現的,是多個Tomcat實例間的Session數據的共享,這樣在節點crash的時候,才能使用其他節點響應。
關于集群,Tomcat的commiter和主要維護人Mark Thmoas在ApacheCon上做
Cluster的分享時這樣描述:
什么時候需要使用Cluster呢?
理論上,永遠不要。
為什么呢,Thomas是這樣說的
Adds configuration complexity
Requires additional processing
Debugging is lot harder
而你可能真正需要的是
Load-balancing plus sticky sessions
If a node fails, sessions will be lost
集群應該是最后一個選擇。
我們前面的文章寫過通過Redis/Memcached來存儲Session實現多實例間的Session數據共享的原理及步驟。(詳解集群內Session高可用的實現原理 )
其實Tomcat官方提供了內置的Cluster功能,無須第三方的插件支持。
整個集群的配置可以分為以下幾步:
配置每個Tomcat實例的Engine,增加jvmRoute值
配置集群部署的應用,修改其web.xml,增加<distributable/>配置。
使用Apache進行負載均衡,同時配置Session sticky和接受請求轉發的Map path 。關于Apache的配置,可以參考前面的文章
快看Apache那個二道販子(1)
快看Apache那個二道販子(2)
修改各個Tomcat實例的Cluster配置,最簡配置為打開默認注釋的內容:
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
這個最簡易的SimpleTcpCluster會使用內存進行Session數據的存儲,并且集群間各個Tomcat實例會互相進行數據備份。 各個實例間會通過multicast的方式進行心跳檢測。
session數據的數據的傳輸是通過Tcp Connection進行的。
下圖為斷開一個實例連接時,其它實例收到的檢查信息
當然,我們也可能對Cluster進行各項屬性的定義,例如Session的Manager,multicast和數據傳遞的實現等,擔心Session放在內存中的話,可以使用其它的Manager實現。
Tomcat提供了三種方式的Session共享策略:
?Session數據持久化,將數據保存到共享文件系統
Sesion持久化,數據保存到共享的數據庫中,數據通過JDBCStore進行存儲
使用內存進行共享,使用Tribes
?5. 繼續使用examples中的session進行功能檢查,此時,你會發現多個實例間數據可以正常共享,而且不需要其它第三方的插件支持,絕對官方的實現。
以上就是如何進行Tomcat官方的集群配置說明,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。