首頁 後端開發 php教程 Ubuntu1404下,Tomcat8+Nginx+memcache配置伺服器集群session共享

Ubuntu1404下,Tomcat8+Nginx+memcache配置伺服器集群session共享

Jul 29, 2016 am 09:15 AM
memcache quot request session tomcat

先前配置的Tomcat叢集使用的是Tomcat提供的簡單的叢集管理的方式:,這種叢集session貢獻使用的是:org. apache.catalina.ha.session.DeltaManager,它會將某個節點的session複製到集群的所有節點上,根據Tomcat官方文檔,這種session共享方式在集群變大時,效果並不好。因此,我嘗試使用memcached來讓叢集共享session。

設定參考的文件有:點擊開啟連結、在這個連結裡可以找到與你的Tomcat相符的jar包,以及Tomcat配置的方法。下面記錄一下我的設定流程。

1.根據前面部落格的內容設定好Nginx反向代理;

2.在ubuntu下安裝memcache:

可直接使用下面的命令進行安裝

sudo apt-get install memcached
登入後複製
3.編輯/etc/memced.confc/memced.conf :

這個檔案裡有各個參數的配置,在這裡要把-l參數註解掉,因為預設情況下memcache會監聽所有位址,或是把127.0.0.1改為0.0.0.0來讓memcache監聽預設位址。

如果不這麼做的話,就只能在本機上使用memcached,其他機器連接不進來,也就沒有了意義。

設定完後,可以使用以下的指令查看是否能連接memcache,其中ip是memcache主機安裝的ip位址,11211是memcache的監聽埠。

telnet ip 11211
登入後複製

4.在所有的Tomcat節點上編輯CATALINA_HOME/conf/context.xml文件,在標籤下增加如下的配置。

<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
        memcachedNodes="n1:cloud2:11211,n2:cloud3:11211"
        sticky="false"
        sessi
        lockingMode="auto"
        requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
/>
登入後複製
memcachedNodes是配置安裝了memcache的節點,cloud2和cloud3是主機名,必須是本機能識別的,n1和n2是我們取的memcached節點的名稱,11211是memcache監聽的端口,11211是默認的端口。

5.添加一些jar包到CATALINA_HOME/lib下

我這裡使用到的包有:

memcached-session-manager-1.8.3.jar
memcached-session-manager-tc8-1.8.3.jar
spymemcached-2.11.1.jar
登入後複製

6.然後就可以啟動Tomcat和nginx進行測試了

這裡的測試思路是這樣的,使用以下程式碼建立一個Servlet,然後部署到兩個tomcat伺服器上。只啟動其中一個伺服器,然後透過瀏覽器存取負載平衡伺服器,可在瀏覽器上查看並記下此時的SessionID。然後關閉這個伺服器,啟動另一個tomcat伺服器,然後再用相同的位址存取負載平衡伺服器,再在瀏覽器上查看SessionID,若兩次SessionID一致,則表示SessionID被共享了。

package com.cyber_space.Servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.net.Inet4Address;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class TestServlet
 */
@WebServlet("/TestServlet")
public class TestServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	public TestServlet() {
		super();
	}

	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		handle(request, response);

	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		handle(request, response);
	}

	private void handle(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setHeader("Content-type", "text/html;charset=UTF-8");
		String remoteIpString = request.getRemoteAddr() + " " + request.getRemoteHost() + " " + request.getRemoteUser();
		PrintWriter pw = response.getWriter();
		pw.println("请求来自:" + remoteIpString);
		request.getSession().setAttribute("5", 5);
		String sessionID = request.getSession().getId();
		pw.println("赋予它的SESSIONID是:" + sessionID);
		Inet4Address inet4Address = (Inet4Address) Inet4Address.getLocalHost();
		pw.println("服务器的IP地址是:" + inet4Address.getHostAddress());
	}
}
登入後複製

這裡還有許多可以做的工作暫時還沒做,如高效的序列化配置等,以後有時間再來做。

版權聲明:本文為部落客原創文章,未經部落客允許不得轉載。

以上就介紹了Ubuntu1404下,Tomcat8+Nginx+memcache配置伺服器集群session共享,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
威爾R.E.P.O.有交叉遊戲嗎?
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

tomcat如何部署jar項目 tomcat如何部署jar項目 Apr 21, 2024 am 07:27 AM

若要將 JAR 專案部署到 Tomcat,請遵循以下步驟:下載並解壓縮 Tomcat。配置 server.xml 文件,設定連接埠和專案部署路徑。將 JAR 檔案複製到指定的部署路徑中。啟動 Tomcat。使用提供的 URL 存取已部署的項目。

tomcat伺服器怎麼能讓外網訪問 tomcat伺服器怎麼能讓外網訪問 Apr 21, 2024 am 07:22 AM

要讓 Tomcat 伺服器對外網訪問,需要:修改 Tomcat 設定文件,允許外部連接。新增防火牆規則,允許存取 Tomcat 伺服器連接埠。建立 DNS 記錄,將網域名稱指向 Tomcat 伺服器公有 IP。可選:使用反向代理提升安全性和效能。可選:設定 HTTPS 以提高安全性。

tomcat安裝目錄在哪裡 tomcat安裝目錄在哪裡 Apr 21, 2024 am 07:48 AM

Tomcat 安裝目錄:預設路徑:Windows:C:\Program Files\Apache Software Foundation\Tomcat 9.0macOS:/Library/Tomcat/Tomcat 9.0Linux:/opt/tomcat/tomcat9自訂路徑:安裝時可指定。尋找安裝目錄:使用 whereis 或 locate 指令。

tomcat怎麼部署多個項目 tomcat怎麼部署多個項目 Apr 21, 2024 am 09:33 AM

要透過 Tomcat 部署多個項目,需要建立每個專案的 webapp 目錄,然後:自動部署:將 webapp 目錄放置在 Tomcat 的 webapps 目錄中。手動部署:在 Tomcat 的 manager 應用程式中手動部署專案。專案部署後,可以透過其部署名稱訪問,例如:http://localhost:8080/project1。

tomcat並發連線數怎麼查看 tomcat並發連線數怎麼查看 Apr 21, 2024 am 08:12 AM

查看Tomcat並發連線數的方法:造訪Tomcat Manager頁面(http://localhost:8080/manager/html),輸入使用者名稱和密碼。在左側導覽列中點選Status->Sessions,即可在頁面頂部看到並發連線數。

tomcat網站根目錄在哪裡 tomcat網站根目錄在哪裡 Apr 21, 2024 am 09:27 AM

Tomcat 網站根目錄位於 Tomcat 的 webapps 子目錄中,用於儲存 Web 應用程式檔案、靜態資源和 WEB-INF 目錄;它可以透過尋找 Tomcat 設定檔中的 docBase 屬性來找到。

tomcat的連接埠號碼怎麼看 tomcat的連接埠號碼怎麼看 Apr 21, 2024 am 08:00 AM

Tomcat埠號碼可透過以下方法檢視:檢查server.xml檔案中的<Connector>元素的port屬性。造訪Tomcat管理介面(http://localhost:8080/manager/html)並查看"Status"標籤。在命令列中運行"catalina.sh version"並查看"Port:"行。

tomcat怎麼運行html和jsp tomcat怎麼運行html和jsp Apr 21, 2024 am 09:04 AM

Tomcat可以執行HTML和JSP,方法如下:將HTML檔案複製到Tomcat目錄對應的子目錄中,在瀏覽器中存取。將JSP檔案複製到Tomcat目錄對應的子目錄中,並使用<%@ page %>指令指定Java程式碼,在瀏覽器中存取。

See all articles