一、背景
隨著業(yè)務量和用戶數(shù)量的激增,單一的tomcat部署應用已經(jīng)無法滿足性能需求,而且對于每次發(fā)布項目期間服務不可用的問題也凸顯,既然出現(xiàn)了這個問題,那么我們本文就借助nginx來完美的解決這個問題。
二、基本概念
1.說明:關(guān)于Nginx的概念和介紹以及Centos7下安裝步驟,請移步:Centos7安裝Nginx實戰(zhàn)
2.正向代理和反向代理
假設(shè)我們給定客戶端A、代理服務器B、以及最終服務器C
正向代理:代理服務器B來代替客戶端A來訪問最終服務器C并將最終結(jié)果轉(zhuǎn)發(fā)給客戶端A,站在客戶端A的角度上,代理服務器代理的是客戶端A,這個過程是正向的,所以叫正向代理。(正向代理需要客戶端A設(shè)置代理服務器的ip和提供代理服務的端口)
反向代理:客戶端A直接訪問代理服務器B,由代理服務器B來決定將請求轉(zhuǎn)發(fā)到哪個最終服務器進行真正處理,并將最終服務器的處理結(jié)果轉(zhuǎn)發(fā)給客戶端A,也就是代理服務器代理的是最終服務器C,站在客戶端A的角度上,這個過程是反向的,所以叫反向代理。(反向代理不需要客戶端A進行任何設(shè)置)
關(guān)于正向代理和反向代理,這里有一篇不錯的文章:圖解正向代理、反向代理、透明代理(http://bbs.51cto.com/thread-967852-1.html)
3.負載均衡(Load Balance)
所謂負載均衡就是將一批可以提供相同服務的服務器組成一個服務器集合,每臺服務器都可以單獨向外部提供相同的服務,通過某種負載分擔技術(shù),按照用戶指定的負載均衡策略將外部請求分配到服務器集合中的具體的某一臺來進行處理的技術(shù)。以此來提高并發(fā)、增加吞吐量、提高處理能力、增加服務可用性。
三、實現(xiàn)步驟
1.首先將項目部署在不同的服務器上,并記錄下服務的IP地址和端口
如:tomcat A : 192.168.85.131:8080
tomcat B : 192.168.85.131:8081
2.在nginx的config文件nginx.conf中進行如下設(shè)置
3.說明:其中標紅的地方是最關(guān)鍵的地方,upstream指定了集群服務的各個服務的地址,可以使用weight來增加某個服務器的權(quán)重,也就意味著請求會被多轉(zhuǎn)發(fā)到這個服務器上。server_name用來指定暴露給用戶的地址,用戶訪問這個地址,這個地址再將請求按照策略進行轉(zhuǎn)發(fā)。
4.有了集群提供負載均衡,如果是web項目就涉及到sesstion在集群中共享的問題,要解決這個問題,請移步:Shiro+Redis實現(xiàn)tomcat集群共享session
四、總結(jié)
通過本文,我們就清楚了什么叫正向代理和反向代理以及負載均衡,還有如何使用nginx來完成負載均衡。以前感覺部署集群提供負載均衡很牛,現(xiàn)在看來其實也沒啥,挺簡單的。
聯(lián)系客服