nginx+tomcat實現負載均衡以及雙機熱備

Java技術交流羣:817997079,歡迎“有志之士”的加入。

阿里雲服務器優惠鏈接:https://www.aliyun.com/minisite/goods?userCode=epd6ezxj

大家都知道nginx可以代理多臺服務器(以tomcat爲例),那麼當被nginx代理的tomcat服務器宕機時,我們怎麼保證客戶端能繼續訪問系統?接下來就說一下nginx在實現負載均衡的同時,被代理的服務器宕機怎麼無痛的讓客戶端繼續訪問到我們的項目。

1.首先在nginx的文件目錄裏找到nginx-conf文件,這是nginx的配置文件;在nginx-conf文件下的http節點下添加upstream節點,進行tomcat的配置,如下圖所示

server是配置tomcat的端口號和ip地址(綠框所示);nginx分配tomcat請求的比例有四種,分別是輪詢(默認),權重(紅框所示)權重分配的越高,訪問的承載量越大,第三種分配方式是根據ip分配(上圖中的ip-hash方法,被注掉了);最後一種是第三方分配。我的配置文件用的是權重的分配方式。

2.tomcat的分配配置完成後該配置我們的靜態資源的根目錄了,如下圖所示

根據上圖所示首先在server節點下添加location節點(可添加多個),配置攔截客戶端以項目名爲前綴的請求和以.do、.jsp爲後綴的請求,以及攔截客戶端請求的靜態資源,去我們配置的根目錄下去找靜態資源展示給客戶端(動靜分離,請求靜態資源不經過tomcat)

3.配置完成之後,開始配置我們的tomcat文件夾/conf/server.xml文件,如下所示

更改這三個端口號,防止出現運行多個tomcat會出現端口號被佔用的問題。

4.tomcat和nginx的配置完成後把要運行項目的war包放到tomcat的webapps的文件夾下(在兩個tomcat的項目裏做一個標識,顯示當前的端口號爲多少),在tomcat的bin文件夾下運行startup.bat文件,啓動tomcat,tomcat啓動成功之後,使用dos命令啓動我們的nginx,然後打開瀏覽器進行測試

(1)啓動nginx

(2)打開瀏覽器訪問localhost

第一次進來nginx分配的是8080端口,點擊刷新

端口號切換爲8081,到這通過nginx整合tomcat實現負載均衡以及動靜分離的配置就結束了。那麼思考一個問題,當客戶端正在訪問的tomcat宕機了,怎麼保證客戶端無感知繼續訪問我們的項目?還是通過配置nginx下的nginx-conf配置文件來解決,如下圖所示

backup:當其他所有的沒有backup屬性的tomcat宕機的時候,由這個由backup屬性的tomcat頂替處理客戶端的請求,其他的tomcat正常運行的時候是不會訪問到這個backup的tomcat的;下面我們測試一下,如圖:

 

 

 

 

 

當我們對8080端口的tomcat進行了backup屬性的添加後,無論怎麼刷新都不會訪問到這個8080端口的tomcat,下面模擬8081和8082端口的tomcat宕機後的請求,如圖


down掉兩個正常運行的tomcat,瀏覽器發送請求結果如下:

頁面無論怎麼刷新,請求的都是帶有backup屬性的8080端口,這樣就解決了tomcat宕機後怎麼保證客戶端繼續訪問我們項目的問題。 

                                                                                                                                                            -----------純屬原創,不喜勿噴

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章