1. 程式人生 > >初識TomCat之4——TomCat負載均衡及基於IP的Session sticky

初識TomCat之4——TomCat負載均衡及基於IP的Session sticky

tomcat Session sticky

一、背景介紹

當一個tomcat服務器性能遇到瓶頸時,通常的做法是將tomcat服務器橫向擴容,使用多臺tomcat服務器來響應用戶請求,但此時又引入了一個新問題,就是用戶每次請求都會隨機給他分配一個tomcat服務器,下面介紹如何實現tomcat實現負載均衡和會話綁定

二、實驗拓撲

本次實驗采用3臺主機,操作系統為centos 7.4,JDK版本為1.8,tomcat版本為8.5,拓撲如下圖所示:

技術分享圖片技術分享圖片

當用戶請求指定的域名時,靜態內容由反代服務器自身響應,動態內容轉交後端tomcat服務器響應,為避免不必要障礙,關閉3臺主機的iptables和selinux。

三、配置Nginx作為反代服務器

1.配置後端tomcat服務器(以tomcat1為例)

(1)安裝JDK和tomcat(略)

(2)在tomcat配置文件conf/server.xml中,新增一個虛擬主機,主機名為“www.ark.com”,並指定主機位置和根目錄

技術分享圖片技術分享圖片

(3)創建對應的目錄及主頁文件(略),啟動tomcat,測試訪問是否正常

(4)在tomcat2上做相同的配置

2.配置前端nginx服務器

(1)安裝nginx程序(略)

(2)在nginx的配置文件conf/nginx.conf中添加upstream段,並設置tomcat1和tomcat2為上遊服務器地址

技術分享圖片技術分享圖片

(3)由於要實現動靜分離,所以在安裝目錄下的web目錄中提供一個主頁作為靜態頁面

(4)所有以.jsp或者.do結尾的請求都發往上遊服務器,由於上遊服務器的默認虛擬主機不是www.ark.com,所以要使用proxy_set_header配置項,啟用該配置項後,nginx再向上遊服務器傳遞請求時就會帶上請求首部,至此操作完成。

(5)此時請求www.ark.com時,靜態內容會由nginx自身響應

技術分享圖片技術分享圖片

(6)而動態內容請求會以輪詢的方式傳遞到2個tomcat服務器上

技術分享圖片技術分享圖片

技術分享圖片

技術分享圖片

(7)如果要實現會話綁定,只需要在upstream配置段啟用ip_hash選項,來自同一IP的請求就會始終被發往一個tomcat服務器

四、配置apache作為反代服務器

apache服務器實現動靜分離有一定的困難,但相對於nginx他又可以和tomcat之間以效率更高的ajp協議進行通訊,具體采用哪種方法根據業務需求選擇,繼續使用上個實驗的環境

1.配置apache負載均衡

(1)關閉前端服務器的nginx服務,安裝apache服務(略)

(2)找到conf/httpd.conf配置文件註銷根目錄

技術分享圖片技術分享圖片

(3)在conf.d目錄下創建一個vhosts.conf配置文件,供虛擬主機使用,在配置文件中首先定義一個集群,將所有的請求都發給後端服務器,關鍵要開啟ProxPreserveHost選項,該選項可以將用戶請求的主機名傳遞至後端,類似nginx中的proxy_set_header,至此操作完成

技術分享圖片技術分享圖片

(4)在使用IP地址(172.16.10.10)請求時,得到的是tomcat主頁

技術分享圖片技術分享圖片

(5)而動態內容請求會以輪詢的方式傳遞到2個tomcat服務器上

技術分享圖片技術分享圖片

技術分享圖片

技術分享圖片

(6)如果要使用ajp協議,無非是將proxy中的http協議與端口換成ajp協議和對應的端口號

技術分享圖片技術分享圖片

2.apache會話綁定

(1)首先在tomcat服務器的Engine上設置jvmroute(此處以tomcat1為例)

技術分享圖片技術分享圖片

(2)然後再到apache服務器的proxy配置段將設置的jvmroute名稱填寫進route選項,並開啟stickysession選項,重啟tomcat和apache服務器,會話已實現綁定,馬哥視頻中http協議需要添加set-cookie配置項才能實現session綁定,在測試中發現不添加該配置項也可以實現

技術分享圖片技術分享圖片

(3)使用ajp協議也只需要將apache服務器上的http協議改為ajp協議即可

技術分享圖片技術分享圖片

補充說明

apache啟用負載均衡功能是通過proxy_balancer_module子模塊實現的

技術分享圖片技術分享圖片

該模塊有一個內置的管理界面,可以在線管理後端的負載策略

技術分享圖片技術分享圖片

只需要在VirtualHost段中增加一個Location即可,且不要將對該Location的請求傳遞到後端

技術分享圖片技術分享圖片


初識TomCat之4——TomCat負載均衡及基於IP的Session sticky