我的運行環境:Windows2003?Server?SP4?+?J2SDK1.5.0?+Tomcat5.5.9
準備軟件
Tomcat?5.5.9???JDK1.5.0
一.配置過程
1、????安裝JDK1.5.0。采用默認安裝就可以。
2、????安裝tomcat到C:\?tomcat?50,采用完全安裝,該程序用于實現負載均衡功能。
3、????將tomcat50的內容進行完全復制,生成C:\?tomcat?51、C:\?tomcat?52、C:\?tomcat?53,分別用做集群中的節點。??
4、????修改負載均衡規則,使其遵循輪循算法(RoundRobin)。
4.1將testLB.jsp復制到c:\tomcat50\webapps\balancer文件夾中
???4.2將文件夾classes復制到c:\tomcat50\webapps\balancer\WEB-INF文件夾中
???4.3修改c:\web\tomcat50\webapps\balancer\WEB-INF\web.xml文件如下:
???<filter-mapping>
????<filter-name>BalancerFilter</filter-name>
????<url-pattern>/LoadBalancer</url-pattern>
??</filter-mapping>
5、????在集群中每個節點下,部署clusterapp應用。Clusterapp包含sessiondata.jsp,test.jsp,腳本。test.jsp是用來驗證節點狀態的頁面;sessiondata.jsp是用來響應用戶所發送的請求,同時記錄會話ID,會話的起始和最后時間,提供用戶增加、修改、刪除會話的屬性字段和屬性值,可以通過此來判斷會話的持續與否。
6、????將log4j的log4j-1.2.9.jar復制到每個%tomcat%/common/?lib下,使其將會話日志統一存儲到指定的文件中。
7、????修改每個tomcat的server.xml配置文件,參數如下表所示。
配置??????????????Instance?1????Instance?2???????Instance?3????Instance?4
Instance?Type????Load?Balancer????Node?1???????Node?2?????????????Node?3
Code?name?????????????TC-LB?????????????TC01???????TC02?????????????TC03
Home?Directory????c:/tomcat50????c:/tomcat51??????c:/tomcat52????c:/tomcat53
Server?Port????8005??????????9005??????10005????????????11005
Connector?????????????8080?????????9080???????????????10080????????????11080
JK2?AJP?Connector????8009?????????9009???????????????10009????????????11009
Cluster?mcastAddr????228.0.0.4?????????228.0.0.4????228.0.0.4???????????228.0.0.4
Cluster?mcastPort????45564????????45564??????????????45564???????????45564
tcpListenAddress????127.0.0.1????????127.0.0.1????127.0.0.1???????????127.0.0.1
Cluster?tcpListenPort?4000????????4001?????????????4002???????????4003
8、修改c:\web\tomcat50\webapps\balancer\WEB-INF\config\ruler.xml文件如下:
<?xml?version="1.0"?encoding="UTF-8"?>
<rules>
????<!--??Redirect?to?server?instance?based?on?RoundomRobinRule??-->
????<rule?className="org.apache.webapp.balancer.rules.RandomRedirectRule"
????????serverInstance="1"
????????maxServerInstances="3"
????????tcpListenAddress="127.0.0.1"
????????tcpListenPort="4001"
????????testWebPage="http://localhost:9080/clusterapp/test.jsp"
????????redirectUrl="http://localhost:9080/clusterapp/sessiondata.jsp"?/>
????<rule?className="org.apache.webapp.balancer.rules.RandomRedirectRule"
????????serverInstance="2"
????????maxServerInstances="3"
????????tcpListenAddress="127.0.0.1"
????????tcpListenPort="4002"
????????testWebPage="http://localhost:10080/clusterapp/test.jsp"
????redirectUrl="http://localhost:10080/clusterapp/sessiondata.jsp"?/>
????<rule?className="org.apache.webapp.balancer.rules.RandomRedirectRule"
????????serverInstance="3"
????????maxServerInstances="3"
????????tcpListenAddress="127.0.0.1"
????????tcpListenPort="4003"
????????testWebPage="http://localhost:11080/clusterapp/test.jsp"
????redirectUrl="http://localhost:11080/clusterapp/sessiondata.jsp"?/>
????<!--??Default?redirect?if?none?of?the?above?rules?match??-->
????<rule?className="org.apache.webapp.balancer.rules.AcceptEverythingRule"
????????redirectUrl="http://localhost:8080/balancer/testLB.jsp"?/>
</rules>
9、啟動tomcat的應用。手動雙擊每個tomcat/bin的startup.bat程序。
二.Web請求集群環境下流程
1、????啟動訪問起始頁(http://localhost:8080/balancer/testLB.jsp)
2、????JSP重定向請求到負載均衡過濾文件(http://localhost:8080/balancer/LoadBalancer)
3、????負載均衡的tomcat接受請求,根據制定的負載均衡算法,重定向到可用的集群節點(TC01、TC02、TC03)
4、????對應集群中節點的sessiondata.jsp(位于clusterapp應用下)頁面將啟動。
5、????sesiondata.jsp將在web上顯示會話的詳細信息(如會話ID,最后訪問時間)
在測試的過程中采用RoundRobin算法,通過對Instance?1發起多個http://localhost:8080/balancer/testLB.jsp測試請求,發現每個請求返回頁面的端口號不完全一致,在9080、10080、11080端口不規則的出現,即客戶端的訪問請求按照RoundRobin算法被重定向到不同的服務器上進行處理,說明該負載均衡規則在這個測試中得到正確的體現。在關閉集群中一個節點后再啟用它,能夠自動發現該節點,并為該節點分配請求。