天天看點

通過Memcached來實作對Tomcat叢集中Session的共享政策

大家必須要確定兩件事情已經完成:

第一:首先确認memcached是否已經啟動,可以通過

netstat -lp | grep memcached

來檢視是否有11211的程序存在。

注意:11211為memcached的預設端口。

第二:需要在tomcat所在的節點上分别執行telnet指令來确認是否已經可以連接配接,操作指令為:

telnet 192.168.1.150 11211

上面的操作必須要在每一個子節點上去做,否則在啟動的時候會提示Connect refuse。(本人在該地方卡住很長時間)

在這裡首先要確定telnet服務是否已經安裝并啟動。

上述操作都完成後,就可以對Tomcat的相關檔案進行配置了。

2. Tomcat相關配置

這一步很簡單,網上也有很多說法,五花八門,我來給大家統一整理下,各位可以互相借鑒。

1)首先需要在tomcat安裝路徑所在的lib裡面加上memcached相關的jar包,由于互相之間的版本問題,建議最好使用統一的版本。

另外網上似乎有兩種辦法,一種是kryo的序列化方式,另一種是javolution的方式,部落客本人使用的是後者。

需要引入的jar包見下圖所示:(這裡大家導入一定要和下面完全一樣,否則可能會出現錯誤,并不是因為每一個jar包都會用到,最好還是謹慎些)

通過Memcached來實作對Tomcat叢集中Session的共享政策

2)配置Tomcat的conf相關配置檔案。

在Context.xml檔案中引入下列代碼:

 <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"  

                        memcachedNodes="n1:192.168.1.150:11211"  

                        requestUriIgnorePattern=".*\.(png|gif|jpg|css|js)$"  

                        sessionBackupAsync="false"  

                        sessionBackupTimeout="100"  

                        transcoderFactoryClass="de.javakaffee.web.msm.serializer

.javolution.JavolutionTranscoderFactory"  

                        copyCollectionsForSerialization="false" />

這裡的memcachedNodes節點中的n1為節點的别名,可以随意起。後面的IP必須是memcached所在的主機的IP位址,端口必須是之前配置的11211端口。

該代碼段在網上發現其他人說也可以放到Server.xml下面,這裡本人沒有嘗試。

此時,所有的tomcat子節點中都要加上上面的這段代碼,每個tomcat裡面的内容都是相同的上述内容,無需做任何修改。

至此為止,有關memcache的Session共享已經完全配置完成,具體的啟動順序,首先要把memcached的服務啟動,然後是apache服務,最後啟動tomcat所在的每個子節點的服務。

然後觀察tomcat的控制台列印如下:

通過Memcached來實作對Tomcat叢集中Session的共享政策

該上述資訊為部落客從tomcat子節點1的控制台上截圖下來的,大家可以自行觀察,此時memcachedConnection已經連接配接成功,由于沒有涉及到單點故障問題,是以failover nodes為null。

轉載于:https://www.cnblogs.com/telwanggs/p/6473551.html