一直對於負載均衡比較陌生,今天嘗試着去了解了一下,並作了一個小的實驗,對於這個概念有一些認識,在此作一個簡單的總結html
什麼是負載均衡nginx
負載均衡,英文 名稱爲Load Balance,指由多臺服務器以對稱的方式組成一個服務器集合,每臺服務器都具備等價的地位,均可以單獨對外提供服務而無須其餘服務器的輔助。經過某種 負載分擔技術,將外部發送來的請求均勻分配到對稱結構中的某一臺服務器上,而接收到請求的服務器獨立地迴應客戶的請求。負載均衡可以平均分配客戶請求到服 務器陣列,藉此提供快速獲取重要數據,解決大量併發訪問服務問題,這種集羣技術能夠用最少的投資得到接近於大型主機的性能。web
1.在本機準備2個tomcat 並修改端口號,避免啓動出現衝突redis
2.新建一個簡單的web項目,放到tomcat的webapps下瀏覽器
分別啓動兩個tomcats 能夠訪問到對應得Web服務,頁面內容有所區別 爲了區分不一樣的服務器tomcat
3.下載一個nginx服務器 http://www.pcre.org/服務器
直接解壓後 不須要安裝。接下去咱們打開cmd,進入nginx的目錄下,輸入start nginx。session
咱們能夠看到一個窗口一閃而過,這樣nginx就已經被開啓了,咱們在任務管理器中能夠找到它的進程。併發
如今咱們在瀏覽器中輸入localhost。能夠看到出現一個頁面。app
4.以前咱們是直接訪問tomcat服務器,如今我想經過nginx訪問tomcat,這個須要去修改nginx的核心配置文件,在其目錄下的conf文件夾下的nginx.conf文件
咱們就知道咱們須要修改的文件中的server部分,這是它原有的代碼,我刪除了它註釋部分。如今咱們就能明白爲何輸入localhost,
它訪問的是它歡迎頁面即index.html。
下面咱們對這段代碼進行一些小小修改。就是將請求轉向咱們定義的服務器。
隨後在cmd中輸入命令nginx -s reload便可重啓nginx。
如今咱們實現了nginx的反向代理!!!
接下了我嘗試着經過nginx實現負載均衡
重啓一下nginx 輸入對應的地址
反覆刷會出現兩個tomcat來回切,切換的頻率由weigth來決定
5 session 不一樣步問題
作一個簡單的測試,在咱們寫好的web工程頁面作以下修改:
而後再訪問
發現session不同,session 丟失了,這他媽好扯淡,這樣的負載均衡有bug啊
而後查了一些資料後發現能夠配redis使用,解決這個問題,
redis就是一個大大的Map,在內存中維護的。
5 用redis共享session
將以下幾個jar拷貝到${TOMCAT_HOME}/lib下
tomcat-redis-session-manager-VERSION.jar jedis-2.5.2.jar commons-pool2-2.2.jar
配置tomcat
編輯${TOMCAT_HOME}/conf/context.xml,在context中加入
<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" /> <Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager" host="localhost" port="6379" database="0" maxInactiveInterval="60" />
其中host和port爲redis的ip和端口
至此配置完成,tomcat會使用redis來託管session。
最後重啓tomcat 訪問驗證
session 不一樣步的問題解決了!!!
至此完成了Nginx+tomcat+redis實現反向代理 、負載均衡及session同步,此文記錄下個人實踐過程,若有錯誤不足之處歡迎大神指點,不喜勿噴。