I'll be back!

            Focus on BPM, celebrate PegaRULES Process Commander (PRPC)
          posts - 76, comments - 161, trackbacks - 0, articles - 2
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          Apache+JK+Tomcat負載平衡配置

          Posted on 2006-12-14 17:33 zolly 閱讀(5240) 評論(0)  編輯  收藏

          準備軟件
          1、? Tomcat5.5.17,下載地址:http://www.apache.org/dist/tomcat/tomcat-5/v5.5.17/bin/
          2、? Apache2.2.3,下載地址:http://apache.justdn.org/httpd/binaries/win32/apache_2.2.3-win32-x86-no_ssl.msi?;
          3、? mod_jk-1.2.20-apache-2.2.3.so模塊,,下載地址:http://www.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/win32/jk-1.2.20/。

          集群與負載平衡
          ??? 使用mod_jk默認的以輪循方式進行平衡負載,而集群方式也是使用這種方法進行平衡。Tomcat中的集群原理是通過組播的方式進行節點的查找并使用TCP連接進行會話的復制。

          ??? 集群不同于負載平衡的是,由于集群服務需要在處理請求之間不斷地進行會話復制,復制后的會話將會慢慢變得龐大,因此它的資源占用率是非常高的,如果在并發量大的應用中,復制的會話大小會變得相當大,而使用的總內存更是會迅速升高。

          ??? 但集群的會話復制,增加了系統的高可用性。由于在每臺服務器都保存有用戶的Session信息,如果服務器群中某臺當機,應用可以自動切換到其它服務器上繼續運行,而用戶的信息不會丟失,這提高了應用的冗錯性。

          ??? 具體采用負載平衡還是集群,這要看應用的需求了。

          安裝配置Apache

          ??? 安裝前請確認IIS服務停止,因為Apache可能會使用80端口.

          1
          、下載 Apache 的安裝程序 apache_2.2.3-win32-x86-no_ssl.exe 后,安裝很簡單,一路回車,就此略過。

          2 、安裝完畢后,將下載的 mod_jk-1.2.20-apache-2.2.3.so改名為mod_jk.so并 復制到 Apache 安裝目錄下的 modules 子目錄中。

          3 、然后進入 Apache 安裝目錄下的 conf 子目錄中,打開 httpd.conf 配置文件,在最后插入以下一行: Include conf/mod_jk.conf

          4、? conf 子目錄下,建立一個新的配置文件: mod_jk.conf ,此文件為 Apache 加載連接器的配置文件,文件名可修改,但要與 httpd.conf Include 的文件名一致,在logs子目錄下建立日志文件mod_jk.log,mod_jk.conf內容如下:

          #?Load?mod_jk?module
          #?Specify?the?filename?of?the?mod_jk?lib
          LoadModule?jk_module?modules/mod_jk.so

          #?Where?to?find?workers.properties
          JkWorkersFile?conf/workers.properties

          #?Where?to?put?jk?logs
          JkLogFile?logs/mod_jk.log

          #?Set?the?jk?log?level?
          [ debug/error/info ]
          JkLogLevel?info

          #?Select?the?log?format
          JkLogStampFormat?
          " [%a?%b?%d?%H:%M:%S?%Y] "

          #?JkOptions?indicates?to?send?SSK?KEY?SIZE
          JkOptions?+ForwardKeySize?+ForwardURICompat?-ForwardDirectories

          #?JkRequestLogFormat
          JkRequestLogFormat?
          " %w?%V?%T "

          #?Mount?your?applications
          JkMount?/*?loadbalancer

          #?You?can?use?external?file?for?mount?points.
          #?It?will?be?checked?for?updates?each?
          60 ?seconds.
          #?The?format?of?the?file?is:?/url
          = worker
          #?/examples/*
          = loadbalancer
          JkMountFile?conf/uriworkermap.properties

          #?Add?shared?memory.
          #?This?directive?is?present?with?
          1.2.10 ?and
          #?later?versions?of?mod_jk
          , ?and?is?needed?for
          #?for?load?balancing?to?work?properly
          JkShmFile?logs/jk.shm

          #?Add?jkstatus?for?managing?runtime?data
          <Location?/jkstatus/>
          ????JkMount?status
          ????Order?deny
          , allow
          ????Deny?from?all
          ????Allow?from?
          127.0.0.1
          </Location>
          注: 該文件中,有兩處設置比較重要:LoadModule與JkMount。LoadModule中要正確設置mod_jk的路徑;JkMount指明Apache需要將哪些url進行轉發,在上面 的設置中,Apache將會把url路徑為 /application/* 的請求發送到mod_jk負載均衡。通過該方式,可以配置Apache提供靜態Web頁面服務,并把動態頁面功能轉發到JBOSS服務器。如果希望所有的服務都由JBOSS集群服務提供,則把JKMount設置為JkMount /* loadbalancer即可。

          5、? conf子目錄下,建立一個新的配置文件:workers.properties,此文件為負載平衡的配置文件,文件名不能修改,這是JK默認的名字,內容如下:
          #?Define?list?of?workers?that?will?be?used
          #?for?mapping?requests
          worker.list
          =loadbalancer,status


          #?Define?Node1
          #?modify?the?host?as?your?host?IP?or?DNS?name.
          worker.node1.port
          =8009
          worker.node1.host
          =localhost
          worker.node1.type
          =ajp13
          worker.node1.lbfactor
          =1
          #worker.node1.cachesize
          =1000


          #?Define?Node2
          #?modify?the?host?as?your?host?IP?or?DNS?name.
          worker.node2.port
          =8009
          worker.node2.host
          =10.225.69.111
          worker.node2.type
          =ajp13
          worker.node2.lbfactor
          =1
          #worker.node2.cachesize
          =1000
          #worker.node2.stopped
          =1


          #?Define?Node3
          #?modify?the?host?as?your?host?IP?or?DNS?name.
          worker.node3.port
          =8009
          worker.node3.host
          =10.225.69.75
          worker.node3.type
          =ajp13
          worker.node3.lbfactor
          =1
          #worker.node3.cachesize
          =1000
          #worker.node3.stopped
          =1


          #?Load-balancing?behaviour
          worker.loadbalancer.type
          =lb
          worker.loadbalancer.balance_workers
          =node1,node2,node3
          worker.loadbalancer.sticky_session
          =1


          #worker.list
          =loadbalancer
          #?Status?worker?for?managing?load?balancer
          worker.status.type
          =status
          ??? 除了通過 JKMount 設置轉發路徑外,你可以通過 JkMountFile 詳細設置哪些 url 需要通過 mod_jk 進行負載均衡轉發。通過在 APACHE_HOME/conf 目錄下創建文件 uriworkermap.properties 進行控制,文件格式為 /url=worker_name:
          #?Simple?worker?configuration?file
          #?Mount?the?Servlet?context?to?the?ajp13?worker

          /*
          =loadbalancer
          !/*.gif
          =loadbalancer
          !/*.jpg
          =loadbalancer
          !/*.png
          =loadbalancer
          !/*.css
          =loadbalancer
          !/*.js
          =loadbalancer
          !/*.htm
          =loadbalancer
          !/*.html
          =loadbalancer

          /prweb/*
          =loadbalancer
          #/jmx-console/*
          =loadbalancer
          #/web-console
          =loadbalancer
          #/web-console/*
          =loadbalancer

          注:以上定義了三個worker,分別為node1,node2,node2;8009端口是Tomcat默認的ajp端口;定義了一個負載平衡服務器loadbalancer,相關的詳細說明可以看官方的網站文檔:http://tomcat.apache.org/connectors-doc/,其它節點的定義可以直接Copy,修改一下節點名及IP就好了。
          A
          、worker.list=loadbalancer

          設定工作的負載平衡器,各Tomcat節點不能加入此列表。

          ?????? B、worker.server99.lbfactor

          負載平衡的權重比,如果此權重比越大,則分配到此節點的請求越多,如以上兩個節點的權重比為1:1,則為平均分配。

          Cworker.loadbalancer.balance_workers=node1,node2,node3

          ?? 指定此負載平衡器負責的Tomcat應用節點。

          Dworker.loadbalancer.sticky_session=true

          ?? 此處指定集群是否需要會話復制,如果設為true,則表明為會話粘性,不進行會話復制,當某用戶的請求第一次分發到哪臺Tomcat后,后繼的請求會一直分發到此Tomcat服務器上處理;如果設為false,則表明需求會話復制。當設置為0(false)時,是基于請求的負載均衡,為1(true)時是基于用戶的負載均衡。

          E、worker.loadbalancer.sticky_session_force=true

          ?? 如果上面的sticky_session設為true時,建議此處也設為true,此參數表明如果集群中某臺Tomcat服務器在多次請求沒有響應后,是否將當前的請求,轉發到其它Tomcat服務器上處理;此參數在sticky_session=true時,影響比較大,會導致轉發到其它Tomcat服務器上的請求,找不到原來的session,所以如果此時請求中有讀取session中某些信息的話,就會導致應用的null異常。


          參考:
          http://www.aygfsteel.com/zolly/archive/2006/12/12/Apache_Tomcat.html
          http://www.qqread.com/z/apache/index-0.html
          http://www.javazy.com/contentex/200641293233.shtml
          http://www.newasp.net/tech/java/14456.html
          http://amqir.itpub.net/

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 虹口区| 锡林郭勒盟| 突泉县| 印江| 新昌县| 炎陵县| 棋牌| 弥渡县| 修武县| 察雅县| 房产| 福建省| 赤城县| 安塞县| 五原县| 漳浦县| 清丰县| 仙居县| 武隆县| 辰溪县| 纳雍县| 墨玉县| 秦安县| 延川县| 醴陵市| 梅河口市| 大宁县| 抚顺县| 高唐县| 长垣县| 松桃| 府谷县| 无锡市| 石棉县| 虹口区| 大名县| 巩义市| 洛川县| 延安市| 芜湖县| 禹城市|