首頁  >  文章  >  後端開發  >  Nginx + Tomcat + Memcached 集群

Nginx + Tomcat + Memcached 集群

WBOY
WBOY原創
2016-07-30 13:30:56989瀏覽


Nginx + Tomcat + Memcached 的叢集至少要考慮到2個方面的問題:

1. 如何實現負載平衡?

2. 如何實現session複製與同步?

本文蒐集了網上相關的資料,將Nginx + Tomcat + Memcached 的集群在window下的搭建過程總結如下。

一、開發環境

1. nginx版本:1.8.0

2. tomcated版本:7.0.55

3. meached版本:1.4.1330013 月使用同步使用同步使用. manager最新版本:1.6.3

5. 作業系統:Win7

二、Nginx + Tomcat 實作負載平衡

1. nginx 和tomcat的下載安裝

這裡就不多說了,具體可以見 inx 和tomcat 的下載安裝

2. nginx設定

開啟nginx的主設定檔:D:nginx-1.8.0confnginx.conf,主要要修改代理轉送伺服器ip和連接埠,weight 為伺服器權重,數字越高代表被存取的幾率越大:

	upstream local_tomcat {
	   server localhost:18080 weight=1; 
           server localhost:18081 weight=1; 
	} 
	
    server {
        listen       80;

        location / {
            root   html;
            index  index.html index.htm;
            proxy_pass http://local_tomcat; 
        }
    }


三、tomcat + memcached 實現session複製與同步

tomcat session複製與同步的問題通常是採用memcached,或者採用nginx_upstream_jvm session複製與同步的問題通常是採用memcached,或者採用nginx_upstream基於Cookie 的Session Sticky 的功能。如果tomcat過多不建議session同步,server間互相同步session很耗資源,高並發環境容易造成Session風暴。請依照自己應用情況合理採納session解決方案。

下文介紹了採用memcached (memcache-session-manager)來管理session


1. memcached 下載安裝(略)

2.下載相關的jar包

這裡有很多各個jar包的版本還不能弄錯,我這裡提供了一整套需要下載的jar包(已經測試可用),需要下載的請點擊 連結 下載。

3. 配置session 共享

好了,把上述jar包放到tomcat/lib 目錄下,修改每個tomcat的配置文件tomcatconfcontext.xml,在...標籤之間加入如下程式碼:

    a. 設定tomcat

修改tomcatconfserver.xml ,由於我是本機win7系統下裝的2個tomcat,所以要避免連接埠衝突,以tomcat-node1為例,主要修改下方幾處:(node2以此類推)

<Server port="8005" shutdown="SHUTDOWN">

    <Connector port="18080" protocol="HTTP/1.1"
               c
               redirectPort="8443" />
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

    <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">
修改tomcatconfcontext.xml, 在...標籤之間加入如下程式碼:
	<Manager  
		className="de.javakaffee.web.msm.MemcachedBackupSessionManager"  
		memcachedNodes="<span style="color:#FF0000;"><strong>n1:127.0.0.1:11211</strong></span>"  
		sticky="false"  
		sessi  
		lockingMode="uriPattern:/path1|/path2"  
		requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"  
		transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"/>
(注意2個tomcat的配置裡面memecachedNodes 的都是 n1:* )
    b. 修改應用jsp

我使用的是tomcat自帶的examples project,將下面的jsp直接替換D:nginx-1.8.0Tomcattomcat-node1webappsexamplesindex.htmlrrr 啟動測試2個tomcat,使用瀏覽器存取http://localhost/examples/ ,比較nginx伺服器回傳的2次頁面,發現2次的連接埠不一樣但是session一樣代表Nginx + Tomcat + Memcached 的叢集搭建成功。


參考文章:

1. http://www.tuicool.com/articles/I7ryYf

2. http://blog.csdn.net/liuzhigang1237/article/details/8880752

3. http://www.cnblogs.com/phirothing/archive/2013/12/05/3459814.html

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

以上就介紹了Nginx + Tomcat + Memcached 集群,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。

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