apache2 2 tomcat實現負載均衡

2021-07-05 13:30:53 字數 3238 閱讀 2673

無論是分布式,資料快取,還是負載均衡,無非就是改善**的效能瓶頸,在**原始碼不做優化的情況下,負載均衡可以說是最直接的手段了。其實拋開這個名詞,放開了說,就是希望使用者能夠分流,也就是說把所有使用者的訪問壓力分散到多台伺服器上,也可以分散到多個tomcat裡,如果一台伺服器裝多個tomcat,那麼即使是負載均衡,效能也提高不了太多,不過可以提高穩定性,即容錯性。當其中乙個主tomcat當掉,其他的tomcat也可以補上,因為tomcat之間實現了session共享。待tomcat伺服器修復後再次啟動,就會自動拷貝所有session資料,然後加入集群。這樣就可以不間斷的提供服務。如果要真正從本質上提公升效能,必須要分布到多台伺服器。同樣tomcat也可以做到。

apache使用的是apache_2.2.11-win32-x86-no_ssl.msi。把apache安裝為執行在80埠的windows服務,安裝成功後在系統服務列表中可以看到apache2.2服務。服務啟動後在瀏覽器中輸入http://localhost進行測試,如果能看到乙個"it works!"的頁面就代表apache已經正常工作了。把tomcat解壓到任意目錄,賦值乙個另命名。起名和路徑對配置沒有影響。但要保證埠不要衝突。若出現apache服務啟動不了(請先檢查安裝路徑是否有中文),請修改apache安裝目錄/conf/httpd.conf檔案,將#listen 12.34.56.78:80

listen 80改為#listen 12.34.56.78:80

listen 8080

1.ajp方式

apache2.2以上版本,無需使用jk_mod來整合tomcat,直接使用ajp,很方便。

修改apache配置檔案httpd.conf 

啟用mod_proxy_ajp 

#loadmodule proxy_module modules/mod_proxy.so 

#loadmodule proxy_ajp_module modules/mod_proxy_ajp.so 

把這兩行前面的#去掉即可 

然後在末尾加上 

proxypass / ajp: 

proxypassreverse / ajp: 

servername a.hackang.cn 

proxypass / ajp: 

proxypassreverse / ajp: 

servername b.hackang.cn #這裡面的名字可以改為localhost 

2.mod_proxy**方式實現

使用的**為mod_proxy的方式來實現的,因為在apache2以上的版本中已經整合了,因此不需要再另行安裝和配置了,只需要把注釋去掉即可,此去掉的配置,個人感覺與apache虛擬機器的實現相類似,去掉以下模組的注釋:

loadmodule proxy_module modules/mod_proxy.so   #提供**伺服器功能

loadmodule proxy_balancer_module modules/mod_proxy_balancer.so  #提供負載均衡功能

loadmodule proxy_http_module modules/mod_proxy_http.so  #讓**伺服器能支援http協議

然後把:

#include conf/extra/httpd-vhosts.conf的注釋也去掉,然後開啟conf/extra/httpd-vhosts.conf,配置虛擬站點,在最下面加上

----

serveradmin 管理員郵箱 

servername localhost 

serveralias localhost 

proxypass / balancer://sy/ stickysession=jsessionid nofailover=on 

proxypassreverse / balancer://sy/ 

errorlog "logs/sy-error.log" 

customlog "logs/sy-access.log" common 

然後回到httpd.conf,在文件最下面加上 

proxyrequests off 

balancermember ajp: loadfactor=1 route=jvm1 

balancermember ajp: loadfactor=1 route=jvm2 

proxyrequests off 是告訴apache需要使用反向**,ip位址和埠唯一確定了tomcat節點和配置的ajp接受埠。loadfactor是負載因子,apache會按負載因子的比例向後端tomcat節點**請求,負載因子越大,對應的tomcat伺服器就會處理越多的請求,如兩個tomcat都是1,apache就按1:1的比例**,如果是2和1就按2:1的比例**。這樣就可以使配置更靈活,例如可以給效能好的伺服器增加處理工作的比例,如果採取多台伺服器,只需要修改ip位址和埠就可以了。route引數對應後續tomcat負載均衡配置中的引擎路徑(jvmroute)。

其中:  127.0.0.1:8009 和  127.0.0.1:9009為兩個負載均衡伺服器

loadfactor=1 route=tomcat8_local  smax=5 max=20 ttl=120 retry=300 timeout=15 這個為配置的引數,最大鏈結,超時,等等

route=tomcat8_local  可以不寫

proxyset lbmethod=byrequests 為實現負載均衡的方式,共有三種型別

#lbmethod=byrequests 按照請求次數均衡(預設) 

#lbmethod=bytraffic 按照流量均衡 (請修改loadfactor引數即可)

#lbmethod=bybusyness 按照繁忙程度均衡(總是分配給活躍請求數最少的伺服器)

route=tomcat8_local  根據這個route的值,分別在兩個tomat中的service.xml的   engine 節點配置上jvmroute的內容,如下: 和以及jvmroute="tomcat8_250" ,不過我在測試是,感覺如果不配置,也不會影響程式的執行。

注意:以上僅僅實現了負載均衡,但是對於兩個負載同時宕機的話,就需要另外的一台伺服器來代替了,這第n+1臺伺服器就叫熱備伺服器,配置方式與以上相同,僅需要寫上status=+h 標識即可。

balancermember  status=+h

以上負載均衡就算全部完成了,如果要實現session共享,最簡單的方式就是在tomcat中進行配置,配置如下:

在 service.xml檔案中的 engine節點,新增如下**:

Apache2 2 Tomcat5 5 集群配置

一 架構 users apache web server mod jk tomcat instance 1 mode jk介紹 它是早期mod jserv的替代品,是乙個全新負責處理apache和tomcat通訊的apache外掛程式。apache載入jk模組,通過ajp13 apache jser...

Apache2 2與Tomcat6的簡單整合

我在安裝配置好apache,php,mysql以架設wordpress之前,其實我的計算機上早就有mysql和tomcat了。這些是為j2ee開發用的,而且我在配置apache和php的時候就順便把apache和tomcat的整合搞定了,現在就來講一講。其實apache和tomcat的整合就是解決請...

最新版Apache2 2與Tomcat的整合指南

因為複雜度太高而備受職責的jk2因為開發人員太少而停止了,jk也一年多沒更新了。但不要緊,最新版的apache2.2中,整合了對tomcat支援的ajp proxy ajp模組。本文雖然專門介紹linux下apache2.2的安裝與配置,但配置部分和說明部分,對windows等平台也是適用的。安裝t...