實戰(zhàn)負載均衡配置的步驟大全
負載均衡的概念來源于集群的定義,集群中的一項技術(shù)就是負載均衡。那么作為服務(wù)器的一項規(guī)劃和分配的方式,我們?nèi)绾卧谙到y(tǒng)中達成這個目的呢?下面就為大家介紹一下如何搞定負載均衡配置。首先要了解我們的使用環(huán)境。那么本文的例子是4臺服務(wù)器的硬件環(huán)境。
(一)負載均衡配置環(huán)境說明
(1)服務(wù)器有4臺,一臺安裝apache,三臺安裝tomcat
(2)apache2.0.55、tomcat5.5.15、jk2.0.4、jdk1.5.6或jdk1.4.2
(3)ip配置,一臺安裝apache的ip為192.168.0.88,三臺安裝tomcat的服務(wù)器ip分別為192.168.0.1/2/4
(二)負載均衡配置的軟件安裝過程
(1)在三臺要安裝tomcat的服務(wù)器上先安裝jdk
(2)配置jdk的安裝路徑,在環(huán)境變量path中加入jdk的bin路徑,新建環(huán)境變量JAVA_HOME指向jdk的安裝路徑
(3)在三臺要安裝tomcat的服務(wù)器上分別安裝tomcat,調(diào)試三個tomcat到能夠正常啟動
(4)tomcat的默認WEB服務(wù)端口是8080,默認的模式是單獨服務(wù),我的三個tomcat的WEB服務(wù)端口修改為7080/8888/9999
修改位置為tomcat的安裝目錄下的conf/server.xml
修改前的配置為
- <Connector port="8080" maxHttpHeaderSize="8192"
- maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
- enableLookups="false" redirectPort="8443" acceptCount="100"
- connectionTimeout="20000" disableUploadTimeout="true" />
修改后的配置為
- <Connector port="7080" maxHttpHeaderSize="8192"
- maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
- enableLookups="false" redirectPort="8443" acceptCount="100"
- connectionTimeout="20000" disableUploadTimeout="true" />
依次修改每個tomcat的監(jiān)聽端口(7080/8888/9999)
(5)分別測試每個tomcat的啟動是否正常
http://192.168.0.1:7080
http://192.168.0.2:8888
http://192.168.0.4:9999/#p#
(三)負載均衡配置過程
(1)在那臺要安裝apache的服務(wù)器上安裝apache2.0.55,我的安裝路徑為默認C:\Program Files\Apache Group\Apache2
(2)安裝后測試apache能否正常啟動,調(diào)試到能夠正常啟動http://192.168.0.88
(3)下載jk2.0.4后解壓縮文件
(4)將解壓縮后的目錄中的modules目錄中的mod_jk2.so文件復(fù)制到apache的安裝目錄下的modules目錄中,我的為 C:\Program Files\Apache Group\Apache2\modules
(5)修改apache的安裝目錄中的conf目錄的配置文件httpd.conf,在文件中加LoadModule模塊配置信息的***加上一句 LoadModule jk2_module modules/mod_jk2.so
(6)分別修改三個tomcat的配置文件conf/server.xml,修改內(nèi)容如下
修改前
- <!-- An Engine represents the entry point (within Catalina) that processes
- every request. The Engine implementation for Tomcat stand alone
- analyzes the HTTP headers included with the request, and passes them
- on to the appropriate Host (virtual host). -->
- <!-- You should set jvmRoute to support load-balancing via AJP ie :
- <Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm1">
- -->
- <!-- Define the top level container in our container hierarchy -->
- <Engine name="Catalina" defaultHost="localhost">
修改后
- <!-- An Engine represents the entry point (within Catalina) that processes
- every request. The Engine implementation for Tomcat stand alone
- analyzes the HTTP headers included with the request, and passes them
- on to the appropriate Host (virtual host). -->
- <!-- You should set jvmRoute to support load-balancing via AJP ie :-->
- <Engine name="Standalone" defaultHost="localhost" jvmRoute="tomcat1">
- <!-- Define the top level container in our container hierarchy
- <Engine name="Catalina" defaultHost="localhost">
- -->
將其中的jvmRoute="jvm1"分別修改為jvmRoute="tomcat1"和jvmRoute="tomcat2"和 jvmRoute="tomcat3"
(7)然后重啟三個tomcat,調(diào)試能夠正常啟動。
(8)在apache的安裝目錄中的conf目錄下創(chuàng)建文件workers2.propertie,寫入文件內(nèi)容如下#p#
- # fine the communication channel
- [channel.socket:192.168.0.1:8009]
- info=Ajp13 forwarding over socket
- #***個服務(wù)器負載均衡配置
- tomcatId=tomcat1 #要和tomcat的配置文件server.xml中的jvmRoute="tomcat1"名稱一致
- debug=0
- lb_factor=1 #負載平衡因子,數(shù)字越大請求被分配的幾率越高
- # Define the communication channel
- [channel.socket:192.168.0.2:8009]
- info=Ajp13 forwarding over socket
- tomcatId=tomcat2
- debug=0
- lb_factor=1
- # Define the communication channel
- [channel.socket:192.168.0.4:8009]
- info=Ajp13 forwarding over socket
- tomcatId=tomcat3
- debug=0
- lb_factor=1
- [status:]
- info=Status worker, displays runtime information.
- [uri:/jkstatus.jsp]
- info=Display status information and checks the config file for changes.
- group=status:
- [uri:/*]
- info=Map the whole webapp
- debug=0
(9)在三個tomcat的安裝目錄中的webapps建立相同的應(yīng)用,我和應(yīng)用目錄名為TomcatDemo,在三個應(yīng)用目錄中建立相同 WEB-INF目錄和頁面index.jsp,index.jsp的頁面內(nèi)容如下
- <%@ page contentType="text/html; charset=GBK" %>
- <%@ page import="java.util.*" %>
- <html><head><title>Cluster App Test</title></head>
- <body>
- Server Info:
- <%
- out.println(request.getLocalAddr() + " : " + request.getLocalPort()+"<br>");%>
- <%
- out.println("<br> ID " + session.getId()+"<br>");
- // 如果有新的 Session 屬性設(shè)置
- String dataName = request.getParameter("dataName");
- if (dataName != null && dataName.length() > 0) {
- String dataValue = request.getParameter("dataValue");
- session.setAttribute(dataName, dataValue);
- }
- out.print("<b>Session 列表</b>");
- Enumeration e = session.getAttributeNames();
- while (e.hasMoreElements()) {
- String name = (String)e.nextElement();
- String value = session.getAttribute(name).toString();
- out.println( name + " = " + value+"<br>");
- System.out.println( name + " = " + value);
- }
- %>
- <form action="index.jsp" method="POST">
- 名稱:<input type=text size=20 name="dataName">
- <br>
- 值:<input type=text size=20 name="dataValue">
- <br>
- <input type=submit>
- </form>
- </body>
- </html>
(10)重啟apache服務(wù)器和三個tomcat服務(wù)器,到此負載 均衡已配置完成。測試負載均衡配置先測試apache,訪問http://192.168.0.88/jkstatus.jsp
能否正常訪問,并查詢其中的內(nèi)容,有三個tomcat的相關(guān)配置信息和負載說明,訪問http://192.168.0.88/TomcatDemo /index.jsp看能夠運行,
能運行,則已建立負載均衡。#p#
(四)tomcat集群配置
(1)負載均衡配置的條件下配置tomcat集群
(2)分別修改三個tomcat的配置文件conf/server.xml,修改內(nèi)容如下
修改前
- <!--
- <Cluster className="org.apache.catalina.cluster.tcp.SimpleTcpCluster"
- managerClassName="org.apache.catalina.cluster.session.DeltaManager"
- expireSessionsOnShutdown="false"
- useDirtyFlag="true"
- notifyListenersOnReplication="true">
- <Membership
- className="org.apache.catalina.cluster.mcast.McastService"
- mcastAddr="228.0.0.4"
- mcastPort="45564"
- mcastFrequency="500"
- mcastDropTime="3000"/>
- <Receiver
- className="org.apache.catalina.cluster.tcp.ReplicationListener"
- tcpListenAddress="auto"
- tcpListenPort="4001"
- tcpSelectorTimeout="100"
- tcpThreadCount="6"/>
- <Sender
- className="org.apache.catalina.cluster.tcp.ReplicationTransmitter"
- replicationMode="pooled"
- ackTimeout="5000"/>
- <Valve className="org.apache.catalina.cluster.tcp.ReplicationValve"
- filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/>
- <Deployer className="org.apache.catalina.cluster.deploy.FarmWarDeployer"
- tempDir="/tmp/war-temp/"
- deployDir="/tmp/war-deploy/"
- watchDir="/tmp/war-listen/"
- watchEnabled="false"/>
- <ClusterListener className="org.apache.catalina.cluster.session.ClusterSessionListener"/>
- </Cluster>
- -->
修改后
- <!-- modify by whh -->
- <Cluster className="org.apache.catalina.cluster.tcp.SimpleTcpCluster"
- managerClassName="org.apache.catalina.cluster.session.DeltaManager"
- expireSessionsOnShutdown="false"
- useDirtyFlag="true"
- notifyListenersOnReplication="true">
- <Membership
- className="org.apache.catalina.cluster.mcast.McastService"
- mcastAddr="228.0.0.4"
- mcastPort="45564"
- mcastFrequency="500"
- mcastDropTime="3000"/>
- <Receiver
- className="org.apache.catalina.cluster.tcp.ReplicationListener"
- tcpListenAddress="auto"
- tcpListenPort="4001"
- tcpSelectorTimeout="100"
- tcpThreadCount="6"/>
- <Sender
- className="org.apache.catalina.cluster.tcp.ReplicationTransmitter"
- replicationMode="pooled"
- ackTimeout="5000"/>
- <Valve className="org.apache.catalina.cluster.tcp.ReplicationValve"
- filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/>
- <Deployer className="org.apache.catalina.cluster.deploy.FarmWarDeployer"
- tempDir="/tmp/war-temp/"
- deployDir="/tmp/war-deploy/"
- watchDir="/tmp/war-listen/"
- watchEnabled="false"/>
- <ClusterListener className="org.apache.catalina.cluster.session.ClusterSessionListener"/>
- </Cluster>
- <!-- modify by whh -->
將集群配置選項的注釋放開即可,如上。
(3)在Conf目錄下建立jk2.properties文件,寫入下面一行,其中端口為相應(yīng)的Tomcat對應(yīng)的AJP端口。channelSocket.port=8009
(4)重啟三個tomcat。到此tomcat的集群已配置完成。#p#
(五)應(yīng)用配置
對于要進行負載均衡配置和集群的tomcat目錄下的webapps中的應(yīng)用中的WEB-INF中的web.xml文件要添加如下一句配置<distributable/>
配置前
- <?xml version="1.0" encoding="UTF-8"?>
- <web-app xmlns="http://java.sun.com/xml/ns/j2ee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
- version="2.4">
- <display-name>TomcatDemo</display-name>
- </web-app>
配置后
- <?xml version="1.0" encoding="UTF-8"?>
- <web-app xmlns="http://java.sun.com/xml/ns/j2ee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
- version="2.4">
- <display-name>TomcatDemo</display-name>
- <distributable/>
- </web-app>