無論是分布式,資料快取,還是負載均衡,無非就是改善**的效能瓶頸,在**原始碼不做優化的情況下,負載均衡可以說是最直接的手段了。其實拋開這個名詞,放開了說,就是希望使用者能夠分流,也就是說把所有使用者的訪問壓力分散到多台伺服器上,也可以分散到多個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...