春天的光輝

          把春天的氣息和光芒灑滿大地,沐浴著身邊的每一個人... ...

           

          Tomcat開發技術之與HTTP服務器的集成(3)

          作者:孫衛琴 文章來源:賽迪網 點擊數: 1408 更新時間:2005-6-12

          ?

          6、Apache與多個Tomcat服務器集成時的負載平衡

          在實際應用中,如果網站的訪問量非常大,為了提高訪問速度,可以將多個Tomcat服務器與Apache集成,讓它們共同分擔運行Servlet/JSP組件的任務。 JK插件的loadbalancer(負載平衡器)負責根據在workers.properties文件中預先配置的lbfactor(負載平衡因數)為這些Tomcat服務器分配工作負荷,實現負載平衡。

          假定Apache和兩個Tomcat服務器集成,一個Tomcat服務器和Apache運行在同一臺機器上,使用的JK端口為8009,還有一個Tomcat服務器運行在另一臺機器上,主機名為anotherhost,使用的JK端口為8009。以下是把Apache和這兩個Tomcat服務器集成的步驟。

          (1)把mod_jk_2.0.46.dll拷貝到/lib目錄下。
          (2)在/conf目錄下創建如下的workers.properties文件(注意粗體部分的內容):

          																								ps=\ 
          #指定文件路徑分割符
          worker.list=worker1,
          worker2,loadbalancer 
          
          worker.worker1.port=8009  
          #工作端口,若沒占用則不用修改
          worker.worker1.host=localhost 
          #Tomcat服務器的地址
          worker.worker1.type=ajp13 
          #類型
          worker.worker1.lbfactor=100 
          #負載平衡因數
          
          worker.worker2.port=8009 
          #工作端口,若沒占用則不用修改
          worker.worker2.host=anotherhost 
          #Tomcat服務器的地址
          worker.worker2.type=ajp13 
          #類型
          worker.worker2.lbfactor=100 
          #負載平衡因數
          
          worker.loadbalancer.type=lb
          worker.loadbalancer.
          balanced_workers=worker1, worker2
          																						



          以上文件創建了兩個worker:worker1和worker2分別代表兩個Tomcat服務器,它們由worker.loadbalancer來分配工作負荷。

          (3)修改/conf/httpd.conf文件,在文件末尾加入如下內容:

          																								# Using mod_jk2.dll to 
          redirect dynamic calls to Tomcat
          LoadModule jk_module
          modules\mod_jk_2.0.46.dll
          JkWorkersFile "conf\workers.properties"
          JkLogFile "logs\mod_jk2.log" 
          JkLogLevel debug
          JkMount /*.jsp loadbalancer
          JkMount /helloapp/* loadbalancer
          																						



          當客戶請求"/*.jsp"或"/helloapp/*"形式的URL,該請求都由loadbalancer來負責轉發,它根據在workers.properties文件中為worker1和worker2分配的lbfactor屬性,來決定如何調度它們。

          只有在使用了loadbalancer的情況下,workers.properties文件中worker的lbfactor屬性才有意義,lbfactor取值越大,表示分配給Tomcat服務器的工作負荷越大。

          (4)修改兩個Tomcat服務器的JK端口,確保它們和workers.properties文件中的配置對應。此外,在使用了loadbalancer后,要求worker的名字和Tomcat的server.xml文件中的元素的jvmRoute屬性一致。

          所以應該分別修改兩個Tomcat的sever.xml文件,把它們的元素的jvmRoute屬性分別設為worker1和worker2。以下是修改后的兩個Tomcat服務器的元素:

          Tomcat服務器1:

          																								<Engine name="Catalina"
          defaultHost="localhost"
          debug="0" jmvRoute="worker1">
          																						



          Tomcat服務器2:

          																								<Engine name="Catalina"
          defaultHost="localhost" 
          debug="0" jmvRoute="worker2">
          																						



          (5)在完成以上步驟后,分別啟動兩個Tomcat服務器和Apache服務器,然后訪問http://localhost/index.jsp,會出現Tomcat服務器的默認主頁。由于此時由loadbalancer來調度Tomcat服務器,因此不能斷定到底訪問的是哪個Tomcat服務器的index.jsp,這對于Web客戶來說是透明的。

          如果在進行以上實驗時,兩個Tomcat服務器都在同一臺機器上運行,應該確保它們沒有使用相同的端口。在Tomcat的默認的server.xml中,一共配置了以下3個端口:

          																								<Server port="8005" 
          shutdown="SHUTDOWN" debug="0">
          <!-- Define a non-SSL Coyote
          HTTP/1.1 Connector on port 8080 -->
          <Connector port="8080" />
          <!-- Define a Coyote/JK2 
          AJP 1.3 Connector on port 8009 -->
          <Connector port="8009" />
          																						



          如果兩個Tomcat服務器都在同一臺機器上運行,則至少應該對其中一個Tomcat服務器的以上3個端口號都進行修改。

          此外,如果把Tomcat和其他HTTP服務器集成,Tomcat主要負責處理HTTP服務器轉發過來的客戶請求,通常不會直接接受HTTP請求。因此為了提高Tomcat的運行性能,可以關閉Tomcat的HTTP連接器,方法為在server.xml中把Tomcat的HTTP Connector的配置注釋掉。

          posted on 2006-09-25 11:28 春輝 閱讀(203) 評論(0)  編輯  收藏 所屬分類: Tomcat 相關

          導航

          統計

          常用鏈接

          留言簿(1)

          隨筆檔案

          文章分類

          文章檔案

          我的鏈接

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 郎溪县| 关岭| 祥云县| 牡丹江市| 措勤县| 嫩江县| 遂溪县| 澎湖县| 芦溪县| 旌德县| 宁乡县| 齐河县| 淮北市| 海原县| 揭西县| 湖口县| 大田县| 万全县| 合水县| 浦北县| 桐梓县| 泸溪县| 东阳市| 游戏| 铜鼓县| 唐海县| 钟山县| 府谷县| 柳河县| 洪江市| 错那县| 金溪县| 海口市| 曲水县| 闵行区| 武宁县| 丽水市| 金川县| 仪陇县| 营山县| 澄江县|