天天看點

CentOS-6.4-minimal版中Apache-2.2.29與Tomcat-6.0.41實作負載均衡

CentOS-6.4-minimal版中Apache-2.2.29與Tomcat-6.0.41實作負載均衡

----------------------------------------------------------------------------------------------------------------------

關于負載均衡(Load Balancer)與叢集(Cluster)的差別,以及配置方式的不同,詳見 http://www.linuxidc.com/Linux/2014-09/107336.htm

----------------------------------------------------------------------------------------------------------------------

配置負載均衡

本文建立在Apache-2.2.29與Tomcat-6.0.41整合的基礎上,整合過程詳見 http://www.linuxidc.com/Linux/2014-09/107338.htm

1)修改端口(由于我是在一台機器上複制多個tomcat,是以需要修改端口,如果是不同的機器就可以跳過這一步)

  [root@CentOS64 app]# vi tomcat/conf/server.xml  (修改8005為-1,原因詳見 http://www.linuxidc.com/Linux/2014-09/107339.htm )

  [root@CentOS64 app]# cp -a tomcat tomcat1

  [root@CentOS64 app]# cp -a tomcat tomcat2

  [root@CentOS64 app]# cp -a tomcat tomcat3

  [root@CentOS64 app]# vi tomcat1/conf/server.xml (修改ssl端口和ajp端口為8543和8109,即分别+100)

  [root@CentOS64 app]# vi tomcat2/conf/server.xml (修改ssl端口和ajp端口為8643和8209,即分别+200)

  [root@CentOS64 app]# vi tomcat3/conf/server.xml (修改ssl端口和ajp端口為8743和8309,即分别+300)

2)修改/app/apache/conf/workers.properties,修改後的内容如下

  worker.list=status,tomcatlb

  worker.status.type=status

  worker.tomcat1.port=8109

  worker.tomcat1.host=127.0.0.1

  worker.tomcat1.type=ajp13

  worker.tomcat1.lbfactor=1

  worker.tomcat2.port=8209

  worker.tomcat2.host=127.0.0.1

  worker.tomcat2.type=ajp13

  worker.tomcat2.lbfactor=1

  worker.tomcat3.port=8309

  worker.tomcat3.host=127.0.0.1

  worker.tomcat3.type=ajp13

  worker.tomcat3.lbfactor=1                                #負載權重,值越高,被分發請求的機率越大,其預設值為1

  worker.tomcatlb.type=lb                                  #可選值ajp13,ajp14,jni,lb or status

  worker.retries=6                                          #通信失敗時的重試次數,預設為2

  worker.tomcatlb.balanced_workers=tomcat1,tomcat2,tomcat3  #參與負載均衡的Web伺服器

3)修改/app/apache/conf/extra/httpd-vhosts.conf

  将預設的tomcat改為tomcatlb,即指定所有請求交由tomcatlb處理

----------------------------------------------------------------------------------------------------------------------

測試負載均衡

1)啟動apache和三個tomcat後,就可以通過jkstatus看到參與負載均衡的3個tomcat以及其它參數,我們也可以通過jkstatus修改負載均衡參數

  關于jkstatus的配置和使用,詳見 http://www.linuxidc.com/Linux/2014-09/107340.htm

2)接下來測試一下負載均衡通路,測試代碼已在下方貼出

  通路頁面我們會發現,每次重新整理頁面,通過背景日志都可以看到請求是被随機配置設定給3個tomcat的,說明是由3個tomcat平均承擔的,即負載均衡成功

  并且,由于這裡并沒有配置叢集,故每次重新整理頁面時,頁面列印的SessionID都是變化的

----------------------------------------------------------------------------------------------------------------------

關于workers.properties的更多屬性說明,可參考以下兩個網址

http://tomcat.apache.org/connectors-doc/reference/workers.html 

http://www.linuxidc.com/Linux/2014-09/107341.htm

另外補充兩個待驗證的workers屬性描述

1)worker.tomcatlb.sticky_session=true

  此處指定叢集是否需要會話複制,若設為true則表明為會話粘性,不進行會話複制

  當某使用者的請求第一次分發到哪台Tomcat後,後繼的請求會一直分發到此Tomcat伺服器上處理

  若設為false則表明需要會話複制,該屬性預設值為true

  當設定為0(false)時,是基于請求的負載均衡,為1(true)時是基于使用者的負載均衡

2)worker.tomcatlb.sticky_session_force=true

  該屬性預設值為false,若上面的sticky_session設為true,則建議此處也設為true

  此參數表明如果叢集中某台Tomcat伺服器在多次請求沒有響應後,是否将目前的請求轉發到其它Tomcat伺服器上處理

  此參數在sticky_session=true時影響比較大,會導緻轉發到其它Tomcat伺服器上的請求找不到原來的session

  是以如果此時請求中有讀取session中某些資訊的話,就會導緻應用的Null異常

----------------------------------------------------------------------------------------------------------------------

@create Sep 27, 2014 6:29:49 PM

@author 玄玉<http://www.linuxidc.com>

<%@ page language="Java" pageEncoding="UTF-8"%>

<%

out.println("<br>Session ID : " + session.getId() + "<br>");

session.setAttribute("myname", "session");

String dataName = request.getParameter("dataName");

if(null!=dataName && dataName.length()>0){

 String dataValue = request.getParameter("dataValue");

 session.setAttribute(dataName, dataValue);

}

out.print("<b>Session 清單</b><br>");

java.util.Enumeration e = session.getAttributeNames();

while(e.hasMoreElements()){

 String name = (String)e.nextElement();

 String value = session.getAttribute(name).toString();

 out.println( name + " = " + value+"<br>");

}

%>

<form action="demo.jsp" method="POST">

 屬性名:<input type=text size=20 name="dataName"><br>

 屬性值:<input type=text size=20 name="dataValue"><br>

 <input type=submit>

</form>

CentOS-6.4-minimal版中Apache-2.2.29與Tomcat-6.0.41實作負載均衡