使用nginx載入多個tomcat實現session共享(負載均衡)
需要用到:
memcached 官網:http://memcached.org/ 用memcached實現session共享
- tomcat叢集
以我的為例,我用的tomcat版本是 apache-tomcat-7.0.68
- 現將tomcat資料夾複製成多份(ps:命名為apache-tomcat-7.0.68_1、apache-tomcat-7.0.68_2……)
- 修改埠號,修改conf資料夾下的server.xml配置檔案(以apache-tomcat-7.0.68_1為例)
(1)、第一處埠修改
<!-- 修改port埠:18888 兩個tomcat不能重複,埠隨意,別太小--> <Server port="18888" shutdown="SHUTDOWN">
(2)、第二處埠修改
<!-- port="28888" tomcat監聽埠,隨意設定,別太小 --> <Connector port="28888" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
(3)、第三處埠修改
<Connector port="8888" protocol="AJP/1.3" redirectPort="8443" />
其他tomcat配置一樣, 不同的tomcat的埠別重複,這樣能保證啟動起來。
- nginx的安裝與配置
1、解壓縮包(我的版本是穩定版1.8.1)
2、開啟conf開啟nginx.conf進行配置(nginx作為前端反向代理伺服器的配置),在#gzip on這句程式碼之後加上
<!--根據ip計算將請求分配各那個後端tomcat,許多人誤認為可以解決session問題,其實並不能。 --> <!--同一機器在多網情況下,路由切換,ip可能不同--> upstream localhost { server localhost:8088 weight=1; server localhost:8888 weight=1; }
可以修改埠號:listen 後面的數字保證埠號不能重複
location的配置:
3、啟動nginx
啟動DOS環境,進入nginx的目錄,輸入start nginx 啟動
如果更改了nginx.conf檔案輸入nginx -s reload 重新載入檔案,再輸入nginx -t看檔案程式碼是否有問題,如出現上圖所示則沒有問題。然後再次start nginx啟動nginx;
4、驗證配置與測試負載均衡
首先測試nginx配置是否正確,測試命令:nginx -t (預設驗證:conf\nginx.conf),也可以指定配置檔案路徑。
其次驗證tomcat,啟動兩個tomcat,檢視是否成功啟動。
這裡我在tomcat下面佈置了專案MyWebTest,啟動tomcat後在瀏覽器輸入地址,顯示如下圖:
至此window下nginx+tomcat負載均衡配置結束,關於tomcat Session的問題通常是採用memcached;如果tomcat過多不建議session同步,server間相互同步session很耗資源,高併發環境容易引起Session風暴。請根據自己應用情況合理採納session解決方案。
- memcached的配置
1、Memcached配置需要下載以下jar包並放在tomcat的lib目錄下
2、配置tomcat
在tomcat中conf目錄下的context.xml,在<Context>標籤中加入以下程式碼即可
View Code
3、memcached的下載安裝
(1)如果你的機器是windows系統,需要從網上下載一個windows版本的
(2)解壓memcached安裝包,啟動DOS環境,進入memcached的目錄,輸入memcached.exe -d install命令安裝memcached
(3)、然後輸入memcached.exe -s start啟動memcached
4、驗證是否成功,session是否共享
以下是我的部分測試程式碼: