Nginx搭臺,tomcat唱戲,搭建負載均衡運行環境

負載均衡的意義

負載均衡,英文名稱為Load Balance,其含義就是指將負載(工作任務)進行平衡、分攤到多個操作單元上進行運行,例如FTP服務器、Web服務器、企業核心應用服務器和其它主要任務服務器等,從而協同完成工作任務。負載均衡構建在原有網絡結構之上,它提供了一種透明且廉價有效的方法擴展服務器和網絡設備的帶寬、加強網絡數據處理能力、增加吞吐量、提高網絡的可用性和靈活性。

Nginx搭臺,tomcat唱戲,搭建負載均衡運行環境

目前,常用的負載均衡技術按照不同的視角有不同的分類方式,有實現的設備設施區分的,有硬件軟件之分;有從地理結構劃分的;還有從部署方式來區分的。本文涉及的是軟件分類中的反向代理負載均衡。而主要使用的技術就是Nginx+tomcat

Nginx的優勢

那麼為什麼要是用Nginx作為負載均衡的技術呢?且看看Nginx的優勢在何處!Nginx ("engine x") 是一個高性能的HTTP和反向代理服務器,也是一個IMAP/POP3/SMTP服務器,是由Igor Sysoev為俄羅斯訪問量第二的Rambler.ru站點開發的。其特點是佔有內存少,併發能力強,事實上nginx的併發能力確實在同類型的網頁服務器中表現較好,中國大陸使用nginx網站用戶有:百度、京東、新浪、網易、騰訊、淘寶等。截止到2014年12月31日,Nginx僅次於apache成為第二大web服務器軟件,而在全球最忙碌top10000網站中使用比例更是高達42.7%。其發展速度和流行程度已經遠遠超過其它同類軟件,成為大型網站和高併發網站的首選。

如何實際操刀

  • Tomcat的安裝
  • 要利用Nginx搭建Tomcat負載均衡環境,當然tomcat的必須的,那麼在安裝tomcat之前也必須安裝JDK,目前這些道具準備網上的資料都很全,其實按筆者充實IT這麼多年的經驗而且,各種亂七八糟環境的配置,搞來搞去無非就是搞一堆路徑配置,類似於網絡中的路由,路徑搞對了,將能找到兵,兵能找到將了,那麼就可以上場打仗了。JDK和tomcat的配置無非就是配置java_home、classpath等一堆系統變量。而難點在於window環境下和linux環境下要都能通吃,能通吃了也就算是完全掌握了。
  • Nginx的安裝
  • Nginx的安裝,筆者已經在上篇文中做了window下安裝的簡要介紹,應該很簡單,使用起來感覺可能比tomcat更簡單,唯一主要注意的是Nginx的關閉,要注意一下,需要用專門的命令來進行關閉。
  • Nginx的配置
  • 演員既然都登臺了,那麼剩下的就是對詞了,各個演員要唱一臺戲,不能各唱各的,這就是要靠配置來協調了。那麼利用Nginx搭建負載均衡環境具體需要怎樣的配置呢?那麼在Nginx有哪些配置項呢:
1. listen 表示當前的代理服務器監聽的端口,默認的是監聽80端口。
2. server_name 表示監聽到之後需要轉到哪裡去,localhost表示轉到本地,也就是直接到nginx文件夾內。
3. location 表示匹配的路徑。
4. root 表示到指定文件路徑尋找文件,可用於靜態文件。
5. index 表示默認主頁,可以指定多個,按順序查找。
6. deny和allow 是訪問控制設置,禁止或允許某個IP或者某個IP段訪問。也可以指定unix,允許socket的訪問。
7. limit_rate_after 設置不限速傳輸的響應大小。當傳輸量大於此值時,超出部分將限速傳送。

8. limit_rate 限制向客戶端傳送響應的速率限制。參數的單位是字節/秒,設置為0將關閉限速。比如圖片中表示不限速部分為3m,超過了3m後限速為20k/s。

將jsp交由tomcat處理

具體的,在nginx.conf中新建一個location,用正則表達式將所有JSP的請求匹配到該location中:

Nginx搭臺,tomcat唱戲,搭建負載均衡運行環境

其中最核心的就是"proxy_pass http://localhost:8080;"這條配置,它將匹配到的請求都轉發給Tomcat去處理。此時訪問http://localhost/index.jsp,會發現跳轉到了Tomcat的頁面。但是你會發現,此時的頁面是這樣的:

Nginx搭臺,tomcat唱戲,搭建負載均衡運行環境

上圖中圖片,css等靜態資源效果都沒有展現出來,下一步,我們就來配置靜態文件的路徑,完成動靜分離。

動靜分離

對於靜態文件的請求,我們也新建一個location,將常見圖片、css、js等請求匹配到該location中:

Nginx搭臺,tomcat唱戲,搭建負載均衡運行環境

如圖所示,配置非常簡單,通過root關鍵字,將匹配到的請求都到tomcat/webapps/ROOT目錄下直接查找。而expires 30d則表示使用expires緩存模塊,緩存到客戶端30天。配置完後重啟Nginx。再輸入http://localhost/index.jsp,會發現此時的Tomcat頁面已經正常顯示了。我們已經完成了JSP請求與靜態文件請求的動靜分離。同理我們可以按照相同的方式設置其他路徑下的靜態資源。

負載均衡

最後,我們來看看負載均衡個,通過配置upstream,可以很輕鬆配置後臺服務器的負載均衡:

Nginx搭臺,tomcat唱戲,搭建負載均衡運行環境

具體的,可以在upstream中配置你所需要參與配置的Tomcat服務器的地址,這裡我是配置了兩臺服務器,分別是本機也就是192.168.6.86和192.168.6.32,其中分別安裝的是Tomcat8和Tomcat7。然後在location中,將請求轉發給配置好的upstream處理。那麼經過上述的配置,通過不斷的訪問http://localhost:8888,大家可以發現系統訪問的是不同的所配置的不同的tomcat服務器,那麼通過Nginx+tomcat就搭建了一個非常簡單的負載均衡環境。

Nginx搭臺,tomcat唱戲,搭建負載均衡運行環境


分享到:


相關文章: