標籤:apache tomcat jk 叢集 負載平衡
/** * CentOS-6.4-minimal版中Apache-2.2.29與Tomcat-6.0.41實現負載平衡 * ---------------------------------------------------------------------------------------------------------------------- * 關於負載平衡(Load Balancer)與叢集(Cluster)的區別,以及配置方式的不同,稍後更新 * ---------------------------------------------------------------------------------------------------------------------- * 配置負載平衡 * 本文建立在Apache-2.2.29與Tomcat-6.0.41整合的基礎上,整合過程詳見http://blog.csdn.net/jadyer/article/details/39613523 * 1)修改連接埠(由於我是在一台機器上複製多個tomcat,所以需要修改連接埠,如果是不同的機器就可以跳過這一步) * [[email protected] app]# vi tomcat/conf/server.xml (修改8005為-1,原因詳見http://blog.csdn.net/jadyer/article/details/39613771) * [[email protected] app]# cp -r tomcat tomcat1 * [[email protected] app]# cp -r tomcat tomcat2 * [[email protected] app]# cp -r tomcat tomcat3 * [[email protected] app]# vi tomcat1/conf/server.xml (修改ssl連接埠對ajp連接埠為8543和8109,即分別+100) * [[email protected] app]# vi tomcat2/conf/server.xml (修改ssl連接埠對ajp連接埠為8643和8209,即分別+100) * [[email protected] app]# vi tomcat3/conf/server.xml (修改ssl連接埠對ajp連接埠為8743和8309,即分別+100) * 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.tomcat1.connection_pool_timeout=750 * worker.tomcat1.socket_timeout=300000 * worker.tomcat1.connect_timeout=10000 * worker.tomcat1.reply_timeout=330000 * worker.tomcat2.port=8209 * worker.tomcat2.host=127.0.0.1 * worker.tomcat2.type=ajp13 * worker.tomcat2.lbfactor=1 * worker.tomcat2.connection_pool_timeout=750 * worker.tomcat2.socket_timeout=300000 * worker.tomcat2.connect_timeout=10000 * worker.tomcat2.reply_timeout=330000 * worker.tomcat3.port=8309 * worker.tomcat3.host=127.0.0.1 * worker.tomcat3.type=ajp13 * worker.tomcat3.lbfactor=1 #負載權重,值越高,被分發請求的機率越大 * worker.tomcat3.connection_pool_timeout=750 #在串連池中維護的非活動串連,持續多少秒後被釋放,其預設值為0,即不釋放 * worker.tomcat3.socket_timeout=300000 #JK與Web伺服器連線逾時的秒數,超出此秒數將產生一個錯誤並再次重試,其預設值為0,即JK會一直等下去 * worker.tomcat3.connect_timeout=10000 #發送請求後,直到擷取到應答期間的延遲毫秒數,其預設值為0,即一直等 * worker.tomcatlb.type=lb #可選值ajp13,ajp14,jni,lb or status * worker.retries=6 #通迅失敗的的重式次數,預設為2 * worker.tomcatlb.balanced_workers=tomcat1,tomcat2,tomcat3 #參與負載平衡的Web伺服器 * worker.tomcatlb.sticky_session=1 * 3)修改/app/apache/conf/extra/httpd-vhosts.conf * 將預設的tomcat改為tomcatlb,即指定所有請求交由tomcatlb處理 * ---------------------------------------------------------------------------------------------------------------------- * 測試負載平衡 * 1)啟動apache和三個tomcat後,就可以通過jkstatus看到參與負載平衡的3個tomcat以及其它參數,我們也可以通過jkstatus修改負載平衡參數 * 關於jkstatus的配置和使用,詳見http://blog.csdn.net/jadyer/article/details/39613553 * 2)接下來測試一下負載平衡訪問,測試代碼已在下方貼出 * 訪問頁面我們會發現,每次重新整理頁面,通過後台日誌都可以看到請求是被隨機分配給3個tomcat的,說明負載平衡成功 * 並且,由於這裡並沒有配置叢集,故每次重新整理頁面時,頁面列印的SessionID都是變化的 * ---------------------------------------------------------------------------------------------------------------------- * 關於workers.properties的更多參數說明,可參考以下兩個網址 * http://tomcat.apache.org/connectors-doc/reference/workers.html * http://blog.csdn.net/chumeng411/article/details/7541767 * ---------------------------------------------------------------------------------------------------------------------- * @create Sep 27, 2014 6:29:49 PM * @author 玄玉<http://blog.csdn.net/jadyer> */
<%@ page language="java" pageEncoding="UTF-8"%><%System.out.println("本機地址:" + request.getLocalAddr() + ":" + request.getLocalPort());out.println("本機地址:" + request.getLocalAddr() + ":" + request.getLocalPort() + "<br>");%><%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實現負載平衡