這幾天試驗apache2.2 + tomcat6做負載均衡,被折磨的死去活來,查閱網上無數文章,無效,最終以巧合解決問題,主要是兩點:
1、 必須使用ajp協議,千萬不要用http協議,否則會出現莫名其妙的問題,有些應用是好的,有些應用粘不住session
2、proxypass / balancer://loadbalancer/ stickysession=jsessionid nofailover=on ,
絕對不能寫 jsessionid|jsessionid 這樣的通吃形式,寫了就是自找苦吃。用chrome檢視head,發現是用大寫的jsessionid
apache+tomcat做負載均衡,在節點間不複製session的情況下,是靠apache的stickysession
不建議用tomcat的session複製能力,效能很受影響。
apache的stickysession是指,apache會記住jsessionid,當jsessionid不變的情況下,apache會一直將這些請求**到同乙個tomcat上,因此不存在session在節點間複製的問題。
步驟很簡單:
1、修改apache的httpd.conf,取消以下幾行的注釋
2、修改httpd-vhosts.conf
serveradmin [email protected]
servername localhost
serveralias localhost
balancermember ajp: loadfactor=1 route=jvm8010
balancermember ajp: loadfactor=1 route=jvm8011
proxypass / balancer://loadbalancer/ stickysession=jsessionid nofailover=on
proxypassreverse / balancer://loadbalancer/
3、修改tomcat的server.xml,加入這句
4、可以通過小技巧,在乙個tomcat下配置多個server.xml, 用乙個總的批處理檔案,一次啟動多個tomcat例項,見附件
6、如果在apache的httpd.conf的尾部加入以下配置,就可以在指定的機器上(192.168.9.111),通過訪問
來監控負載均衡的情況,並動態調整loadfactor
(如果分別配置loadfactor=5 loadfactor=3,表示負載均衡的訪問次數為,5:3)
#警告:以下這段配置僅用於除錯,絕不要新增到生產環境中!!!
sethandler balancer-manager
order deny,allow
deny from all
allow from 192.168.9.111
7、如果在同一臺機器上,同時部署多個不同的tomcat例項,記得修改server.xml裡面的多種埠
同時,catalina.bat中有jmx埠的配置,如果開啟jmx監控,這個埠也不能重複
如:-dcom.sun.management.jmxremote.port="9005"
apache tomcat負載均衡
最近tomcat總是記憶體溢位,於是就多看了一些tomcat的文章,今天恰好也看到了一篇關於tomcat負載均衡的東西 就好奇的配置了一下,感覺很爽,過程中出現了一些問題,做以下簡單的總結 說一下自己簡單的理解,負載均衡就是分擔以下一台伺服器上面的應用的負載,減輕伺服器的壓力,我看到的最簡單的效果就...
apache tomcat 負載均衡
其實無論是分布式,資料快取,還是負載均衡,無非就是改善 的效能瓶頸,在 原始碼不做優化的情況下,負載均衡可以說 是最直接的手段了。其實拋開這個名詞,放開了說,就是希望使用者能夠分流,也就是說把所有使用者的訪問壓力分散到多台伺服器上,也可以 分散到多個tomcat裡,如果一台伺服器裝多個tomcat,...
apache tomcat 負載均衡
需要準備的環境 apache2.2 apache mod jk模組 自帶 tomcat6.0 apache端配置 conf httpd.conf中最後一行引用jk的配置檔案 include mod jk.conf mod jk.conf中的內容,載入了mod jk的庫檔案,指定了worker的配置檔...