日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

nginx+memcache+tomcat配置(新手笔记)

發布時間:2023/12/31 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 nginx+memcache+tomcat配置(新手笔记) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

nginx+memcache+tomcat 應該是企業級開發中用到的比較多的一套集群web環境,因為本人是從事Java的學習和開發,因此服務器選擇了tomcat;配置這樣一個環境在我看來首要目的當然是將服務器的壓力分散開,用多臺服務器來處理大用戶的并發,并通過緩存來減少對服務器的請求量,同時一個應用分布在不同服務器上就需要做session共享。大概的結構我想應該是這樣:

這樣一來請求會被分派到這圖中5個tomcat下的項目去處理,當然有時候服務器需要處理更大的并發量則需要更多的nginx來作為代理轉發并需要更多的tomcat節點(當然也有牛人能把tomcat配到數千并發量,這樣也不一定需要太多tomcat)

我將從windows上給大家講我的配置過程,至于在linux上其實差不太多,只是在安裝memcache和nginx上有差異,對于配置來說都一樣。下面簡單來介紹下我的操作步驟(JDK和tomcat部分的安裝省略)

一、所需環境和軟件

Tomcat7,下載鏈接:http://tomcat.apache.org/??

Nginx是nginx-1.2.8,

下載鏈接:http://nginx.org/en/download.html

Memcached是memcached-1.2.6-win32-bin,下載鏈接:http://code.jellycan.com/files/memcached-1.2.6-win32-bin.zip,

其他所需jar包,如下列表:

memcached-session-manager-1.6.1,memcached-session-manager-tc6-1.6.1(因為Tomcat版本為6.0)

javolution-5.4.3.1,msm-javolution-serializer-1.6.1(準備使用javolution序列化方式)

spymemcached-2.7.3(依賴包),以上jar包在http://code.google.com/p/memcached-session-manager/downloads/list中都可以找到,文檔http://code.google.com/p/memcached-session-manager/wiki/SetupAndConfiguration中詳細介紹了不同的服務器版本,不同的jar包需求。

二、Tomcat配置

這里我們就配置倆tomcat來意思意思。。。。

進入tomcat配置文件context.xml,我設置么配的(具體為什么這么配我還真有點說不出123,大致有感覺罷了)

也就是紅框是我們需要加的了,這里就是配置session共享,通過memcache來保存session信息。

memcacheNode是你有幾個memcache就可以配幾個節點,我這里寫了兩個告訴大家如果你有多個需要配置的節點 用空格斷開,前面寫節點名。

當然網上有的是把這部分配到server.xml的Engine節點下,我試了如果不在context下配置我的會報錯,不知道他們還有哪里和我不一樣。再就是這里的memcacheNode的IP,我寫localhost也有問題,必須寫127.0.0.1才能連接到memcache的服務。? 如果有人發現我配置上的問題可以幫我一并指出。

然后大家可以去server.xml下找<Engine>節點,在其中添加屬性 jvmRoute="tomcat n" n就是第n個tomcat你自己寫 后面測試的時候打印sessionId會顯示出來現在用的是那個?tomcat。當然server.xml最重要的配置還不是在這,是你需要配置三個端口保證和其他的tomat不會沖突,分別在這里

?

注意tomcat端口默認都是8080 ,大家做開發習慣了這個端口,都把端口配到808*,但是這樣會有問題,比如你要配4個tomcat集群,一個tomcat 要配置3個端口,都在808*上就勢必有重復,因此不是很好的決策,所以我是這么定的:分別放在 900*? 808*? 810*上,然后建議大家在tomcat根目錄建一個文件名叫8081-8100-9006 類似這樣文本文件提示自己當前這個tomcat的端口配置,現在只有倆服務器,否則服務器多了你一個個開配置文件看太麻煩。

配置完了,還有memcache支持的jar,復制到lib下即可,當然版本盡量對上或者貼近。

?

三、nginx的安裝

載下來的nginx,我的是1.8,解壓完就這樣

雙擊nginx.exe是可以啟動nginx的,但是你并不能看見什么反應,因為他在你后臺進程里跑,打開任務管理器看服務里面會有nginx的服務開著,就行了。當然我還是推薦大家用命令模式操作nginx

開啟nginx: nginx

關閉nginx: nginx -s stop

重啟nginx: nginx -s reload

這里注意nginx的核心配置文件在 conf目錄下,有個nginx.conf文件,這里是我們需要配置的地方。

nginx配置文件結構我不全了解,我就說我知道的幾個點。

Nginx配置文件主要分為4部分:main(全局設置)、server(主機設置)、upstream(負載均衡服務器設置)和location

首先server代表了一個虛擬主機,在這個塊中可以配置主機名和location,這兩個塊也就是我們要用到的nginx反向代理,將虛擬地址映射到實際的服務器地址。實際的服務器地址我們配置到一個upstream塊中,那么既然我們做了集群,將大量的請求分派到5個甚至多個tomcat下,那么請求怎么訪問它們呢?這里就有請求分配的策略了。upstream模塊的負載均衡分配方式 我在網上查了有5種:輪詢,權重,ip_hash,url_hash和平均。輪詢比較好理解就是從第一個輪流來訪問;權重就是在配置這個節點的時候就分配給他一個優先級(有點像線程優先級),ip_hash 每個請求按照其請求IP的hash結果分配,url_hash? 按照url的hash結果分配 平均分配就是按照服務器響應時間來分配,響應時間小的先分配。

講到這里nginx配置的理論就差不多了,那么來看下配置的細節,下面是我的部分配置:

這里我將兩臺tomcat加入負載均衡配置中,location指的是server_name后項目名,也就是說我們訪問http://localhost/tonghang 將會定向到 http://127.0.0.1:8081/tonghang 和http://127.0.0.1:8082/tonghang?上。proxy_pass? 指定了代理的目標主機IP,這里寫的是upstrean塊的地址(我不是很懂暫時這么說),由upstream中指定有哪些要映射的IP,當然我們也可以寫到外面,用很多個proxy_pass來映射。

四、memcache安裝

?windows下安裝memcache就是安裝一個exe文件,linux下安裝可能還需要安裝部分依賴庫,因為我所在的服務器下就帶有memcache,我先在win下配置好后再去linux下直接用的,用起來沒有什么問題,所以安裝細節就不提了大家可以去看別的技術文章,win下安裝就是 來到你解壓的memcached.exe所在目錄用命令 memcached.exe -d install 即可。啟動的話就是執行memcached.exe -d start? linux下是memcached -d -uroot? 重復開memcache貌似不會出現端口占用的問題應該是它內部做處理了

?

好了,到這里基本的配置完畢,我們可以去兩個tomcat下部署兩個一樣web項目(我這里叫tonghag),項目下都有一個index.jsp,內容如下:

?<%@?page?language="java"?contentType="text/html;?charset=UTF-8"%> <html> <body> <h2>Hello?World!</h2> <%??String?tmp?=?(String)session.getAttribute("tmp");??if(tmp?==?null?||?tmp?==?""){??session.setAttribute("tmp","i?am?created?in?tomcat?2?.?my?id?is?:?"+session.getId());??tmp?=?(String)session.getAttribute("tmp");??out.println("?null?now?to?created?value?!");??out.println("<br/>");??out.println(tmp);??System.out.println(tmp);??}else{??out.println(tmp);??System.out.println(tmp);??}?? %>? </body> </html>

邏輯就是每當發現請求中沒有sessionid就創建session,按道理如果沒有配置memcache的session共享,分別訪問 http://localhost:8081/tonghang? http://lcoalhost:8082/tonghang?會得到不同的sessionID,如果你通過上述的配置sessionID在一個瀏覽器上的訪問都是一樣的。

在測試一下 http://localhost/tonghang 試試看。你會發現也能看當剛才的界面,這就是我們做了反向代理的結果,而且你還會發現你的兩臺tomcat的控制臺在挨個輸出日志,這也就達到了我們負載均衡的效果,因為我配置了兩臺tomcat而且權重一樣,也就是說訪問的幾率差不多,而兩臺tomcat本來就是一臺復制一臺的,所以幾乎是121212的訪問(和輪詢差不多)。所以大家可以嘗試給其中一臺配置權限高一點,日志輸出分布也就明顯了。或者可以試試其他的策略。

?

ngxin+tomcat+memcache的負載均衡,反向代理和session共享的相關配置介紹完了,單純這樣用是看不出什么實際用途的,需要我們將其和實際項目聯系起來。在項目訪問量級相對較大的時候就能看出來了。畢竟那么多企業的項目再用這套架構,也不是徒有虛名嘛。

?

小弟第一次做集群的配置,其中如果有配置的不對讓我誤打誤撞試出來的,也請指點一下。并且我一直不清楚一個地方就是 我在配置tomcat的context.xml 那個memcacheNode里面我如果只配一個節點就會錯,log意思好像是無法連接memcache服務,配倆一樣的就行了。這里我一直沒明白,有知道怎么回事兒的身邊給我留個言吧!

轉載于:https://my.oschina.net/rpgmakervx/blog/505434

總結

以上是生活随笔為你收集整理的nginx+memcache+tomcat配置(新手笔记)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。