1. 程式人生 > >Apache2.4+Tomcat7的負載均衡配置

Apache2.4+Tomcat7的負載均衡配置

第一部分——下載

1.1: 百度搜索apache httpd關鍵字,第一個連結既是官方下載地址。如果這一步不會,此篇文章不適合你閱讀,請自行停止。

1.2:進入官網http://httpd.apache.org/,點選左邊選單download連結進入下載頁,選擇穩定版最新版httpd2.4.26

 

 1.3 點選windows下載連結

 1.4 點選ApacheHaus連結

1.5 根據自己電腦位數選擇下載包,我選擇的是windows 64位的下載包

 1.6 下載完成後名字為httpd-2.4.26-x64-vc14.zip,解壓後,

進入httpd-2.4.26-x64-vc14\Apache24\bin目錄,看到了啟動叢集程式的httpd.exe,

和httpd-2.4.26-x64-vc14\Apache24\conf目錄下,看到了叢集配置檔案httpd.conf

至此,下載完成。

第二部分——啟動

 2.1 編輯C:\Windows\System32\drivers\etc\hosts檔案,用文字編輯器開啟hosts,新增新的兩行IP對映:

127.0.0.1   www.joyce.com
localhost    www.joyce.com

 2.2 httpd-2.4.26-x64-vc14\Apache24\conf\httpd.conf 修改如下:

修改SRVROOT變數為實際路徑:

修改叢集監聽IP及埠: ServerName  www.joyce.com:80

修改log日誌檔名: ErrorLog  "logs/httpd-error.log"  (非常重要!啟動中除了80埠被佔用錯誤不能被記錄其中,其它所有錯誤都記錄其中!尤其是httpd.exe啟動視窗一閃而過問題。起一個與眾不同的名字,方便在不知道log日誌具體位置的時候,全域性查詢。 如果發現80埠被佔用,請參考文章: http://www.cnblogs.com/gsls200808/p/4506301.html  )

 2.3 選擇叢集策略。放開以下XXX.so註釋,方便新增叢集tomcat

複製程式碼
1 ##############################################################################
2 # 以下3種負載均衡策略,只開放一種即可 3 ############################################################################## 4 #按照繁忙程度,總是給活躍請求數最少的伺服器 5 LoadModule lbmethod_bybusyness_module modules/mod_lbmethod_bybusyness.so 6 #按照請求次數 7 LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so 8 #按照流量均衡 9 LoadModule lbmethod_bytraffic_module modules/mod_lbmethod_bytraffic.so
複製程式碼複製程式碼
1 ##############################################################################
2 #       以下是代理相關及ajp協議相關的功能模組,使session共享
3 ##############################################################################
4 LoadModule proxy_module modules/mod_proxy.so
5 LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
6 LoadModule proxy_connect_module modules/mod_proxy_connect.so
7 LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
8 LoadModule slotmem_shm_module modules/mod_slotmem_shm.so
複製程式碼

2.4 雙擊D:\jiqun\Apache24\bin\httpd.exe,開啟一個視窗並且不關閉,則叢集伺服器啟動成功。

 

滑鼠會一直閃啊閃,並且黑色視窗不關閉。

 2.5 驗證啟動成功,在瀏覽器位址列輸入www.joyce.com展示如下:

第三部分  tomcat叢集例子

3.1 準備兩個叢集tomcat。我這裡用的是apache-tomcat2-8.0.44,由於是叢集本機執行,需要不同的tomcat分別設定不同埠,確保其正常執行:

 準備兩個tomcat進行叢集測試。

3.2 修改叢集tomcat埠及jvmRoute

第一個叢集tomcat: 修改apache-tomcat1-8.0.44\conf\server.xml埠以及配置:

修改Server port為8001:                      <Server port="8001" shutdown="SHUTDOWN">

修改HTTP埠為8002:                        <Connector port="8002" protocol="HTTP/1.1"

修改AJP叢集用到的埠為50001:       <Connector port="50001" protocol="AJP/1.3" redirectPort="8443" />

增加叢集用到的jvmRoute="tomcat1":                    <Engine name="Catalina" defaultHost="localhost"  jvmRoute="tomcat1">

第二個叢集tomcat: 修改apache-tomcat2-8.0.44\conf\server.xml埠以及配置:

修改Server port為8003:                      <Server port="8003" shutdown="SHUTDOWN">

修改HTTP埠為8004:                        <Connector port="8004" protocol="HTTP/1.1"

修改AJP叢集用到的埠為50002:       <Connector port="50002" protocol="AJP/1.3" redirectPort="8443" />

增加叢集用到的jvmRoute="tomcat2":                    <Engine name="Catalina" defaultHost="localhost"  jvmRoute="tomcat2">

3.3 修改叢集配置檔案httpd.conf。修改D:\jiqun\Apache24\conf\httpd.conf,在最末尾處新增:

1 ProxyPass /distributed balancer://cluster01/ stickysession=JSESSIONID
2 ProxyPassReverse / balancer://cluster01/
3 <proxy balancer://cluster01>
4     BalancerMember ajp://www.joyce.com:50001/distributed loadfactor=1 route=tomcat1
5     BalancerMember ajp://www.joyce.com:50002/distributed loadfactor=1 route=tomcat2
6 </proxy>

3.4 叢集tomcat session共享

當我們需要多個tomcat叢集,並且tomcat之間共享session時,需要做如下配置:

1,在tomcat配置檔案server.xml中以下這行程式碼放開註釋:

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>

2,要在要將web.xml檔案<web-app>元素的最後加上: <distributable/>   兩個地方的web.xml,一個是應用程式的WEB-INF\web.xml,另一個是tomcat/conf/web.xml(不知道有沒有用,反正我加上了)

3.5 新增分散式應用程式。在兩個tomcat下模擬增加application應用程式:

在apache-tomcat1-8.0.44\webapps和apache-tomcat2-8.0.44\webapps兩個目錄下新建myapp資料夾,代替我們的釋出應用,兩個myapp資料夾下新建index.jsp內容為:

複製程式碼
<html>
    <head>
      <title>helloapp</title>
    </head>
<body>
    <h2>tomcat2</h2> <br/> <br/>
    <% System.out.println("call index.jsp"); %>   
    SessionID: <%=session.getId() %>  
</body>
</html>
複製程式碼

各自取名tomcat1和tomcat2

3.6 驗證叢集以及session共享

tomcat2的session是 *AA39F

tomcat1的session是 *AA39F ,說明兩個tomcat  session共享成功,雖然sessionid 的 .tomcat1字尾表明該session來自伺服器tomcat1,但你提交的寫入session中的屬性值仍然可以讀出。

驗證成功!叢集部署成功!session共享成功!

叢集專案管理文件截圖: