日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JBOSS通过Apache负载均衡方法一:使用mod_jk

發布時間:2024/4/15 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JBOSS通过Apache负载均衡方法一:使用mod_jk 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

JBOSS通過Apache負載均衡方法一:使用mod_jk

?

本文第一、二節分別對Linux環境下前端使用Apache以及windows環境下前端使用IIS通過AJP協議和后端的JBOSS通信實現負載均衡進行說明,第三節對相應的參數做了解釋。

?

一、?? Linux環境下Apache + mod_jk + JBOSS

Apache和JBOSS使用AJP協議,利用8009端口通過mod_jk來實現通信。

  • 1.? 安裝并配置apache
  • 下載apache代碼包,上傳到服務器。

    解開代碼包

    [root@jboss01 app]#cd /opt/app
    [root@jboss01 app]#tar -zxvf httpd-2.2.23.tar.gz

    [root@jboss01 app]#cd /opt/app/httpd-2.2.23

    在[root@jboss01 httpd-2.2.23]#下編譯
    ./configure -prefix=/usr/local/apache2 -enable-module=so -enable-module=setenvif -enable-module=rewrite -enable-rewrite=shared -enable-proxy=shared -with-mpm=prefork -enable-so -enable-auth-anon -enable-file-cache=shared -enable-cache=shared -enable-disk-cache=shared -enable-mem-cache=shared

    make clean
    make
    make install

    修改配置。本例中,提供服務的監聽端口是8090,請根據實際情況修改。
    vi /usr/local/apache2/conf/httpd.conf
    將Listen 80???????? 改成Listen 8090
    將User daemon和Group daemon? 改為User apache和Group apache
    刪除ServerName前的#,將該行改為? ServerName 172.18.49.181:8090

    添加用戶和用戶組
    groupadd apache
    useradd apache –g apache

    apache mod_jk配置

    下載mod_jk,將其改名為mod_jk.so,拷貝到/usr/local/apache2/modules下

    mod_jk的下載路徑:http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/

    chmod +x /usr/local/apache2/modules/mod_jk.so

    在/usr/local/apache2/conf/httpd.conf的末尾增加:
    Include conf/mod_jk.conf

    建立空文件 /usr/local/apache2/conf/uriworkermap.properties??

    vi /usr/local/apache2/conf/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 172.18.49.181
    </Location>
    ____________________________________________________________________________

    ?

    vi /usr/local/apache2/conf/workers.properties,增加以下內容:
    _______________________________________________
    # Define list of workers that will be used
    # for mapping requests
    worker.list=loadbalancer

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

    worker.node1.connection_pool_timeout=600

    #worker.node1.connection_pool_size=500
    #worker.node1.connection_pool_minsize=250

    worker.node1.socket_timeout=5
    # Define Node2
    # modify the host as your host IP or DNS name.
    worker.node2.port=8009
    worker.node2.host=172.18.49.184
    worker.node2.type=ajp13
    worker.node2.lbfactor=1

    worker.node2.connection_pool_timeout=600

    #worker.node2.connection_pool_size=500
    #worker.node2.connection_pool_minsize=250

    worker.node2.socket_timeout=5

    # Load-balancing behaviour
    worker.loadbalancer.type=lb
    worker.loadbalancer.balance_workers=node1,node2
    ____________________________________________________

    如果有更多的節點,順序定義更多的node段,并在worker.loadbalancer.balance_workers后全部列出.
    lbfactor是負載分配權重,值越大分配的負載越多.

    配置apache自動啟動

    ln –s /usr/local/apache2/bin/apachectl /etc/init.d/apache
    chmod 777 /etc/init.d/apache
    ln –s /etc/init.d/apache /etc/rc3.d/S80apache
    ln –s /etc/init.d/apache /etc/rc3.d/K20apache
    ln –s /etc/init.d/apache /etc/rc4.d/S80apache
    ln –s /etc/init.d/apache /etc/rc4.d/K20apache
    ln –s /etc/init.d/apache /etc/rc5.d/S80apache
    ln –s /etc/init.d/apache /etc/rc5.d/K20apache

  • 啟動Jboss集群
  • 先啟動負載均衡器apache,然后啟動各jboss節點。各jboss節點的啟動順序沒有要求。對于apache的啟動,參考如下:
    在/usr/local/apache2/bin目錄下執行./httpd –k start?? (終止命令: ./httpd –k stop),在/usr/local/apache2/logs/mod_jk.log中,看到如下信息則表明apache對mod_jk加載成功:

    “[info]? init_jk::mod_jk.c (2743): mod_jk/1.2.23 initialized”


    如有mod_jk相關的錯誤信息,一般是由于mod_jk的版本與apache版本不兼容,需在apache官網上下載合適的版本。用netstat檢查8090監聽端口存在,則說明apache啟動成功.

  • 3.? 負載均衡實驗
  • 在172.18.49.183/184上分別部署了簡單的測試頁面,顯示如下:

    ?

    ?

    此時,在IE中輸入http://172.18.49.181:8090/cluster_test/,并不斷刷新,應該會交替出現如下兩個頁面,則說明負載均衡配置成功,如果此時關閉184上的JBOSS,則每次訪問只會出現圖1,重新打開184上的JBOSS,不斷刷新訪問,則圖1和圖2重新交替顯示。

    ?

    圖1

    ?

    圖2

    二、?? Windows環境下IIS + isapi_redirect + JBOSS

    IIS和JBOSS使用AJP協議,利用8009端口通過加載isapi_redirect.dll來實現通信。

  • 在注冊表中添加isapi_redirect相關信息
  • Windows Registry Editor Version 5.00

    [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Apache Software Foundation]

    [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Apache Software Foundation\Jakarta Isapi Redirector]

    [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Apache Software Foundation\Jakarta Isapi Redirector\1.0]

    "extension_uri"="/jakarta/isapi_redirect.dll"

    "log_file"="E:\\ajp\\logs\\isapi_redirect.log"

    "log_level"="info"

    "worker_file"="E:\\ajp\\conf\\workers.properties"

    "worker_mount_file"="E:\\ajp\\conf\\uriworkermap.properties"

  • 按照注冊表的路徑添加workers.properties和uriworkermap.properties文件,內容分別如下:
  • workers.properties的內容與linux中基本一致,只需添加worker.node1.connection_pool_size=500
    worker.node1.connection_pool_minsize=250

    worker.node2.connection_pool_size=500
    worker.node2.connection_pool_minsize=250

    而uriworkermap.properties需要添加所要訪問的JBOSS部署的WEB路徑,如:/*.*=loadbalancer,則表示訪問所負載的JBOSS上的任何web。

    ?

  • 在IIS中加載isapi_redirect.dll
  • 在IIS管理器中,雙擊ISAPI和CGI限制,

    ?

    ?

    點添加,在彈出框中選擇isapi_redirect.dll路徑,并選擇允許執行擴展路徑

    ?

    ?

    在IIS管理器中,雙擊ISAPI篩選器,點添加,在彈出框中,填寫名稱為”Jakarta”,此處必須與注冊表中一致。

    ?

    在網站中添加測試站點

    ?

    在網站中添加虛擬目錄,如下圖所示,物理路徑為isapi_redirect.dll所在路徑。

    ?

    ?

    雙擊處理程序映射,編輯權限功能,勾選“執行”

    ?

    編輯ISAPI-dll,添加路徑

    ?

    重啟IIS,并查看E:\ajp\logs\isapi_redirect.log,如無該文件生成,說明isapi_redirect.dll沒有被正確加載,需檢查以上步驟是否有誤,如果去人無誤還無法加載,可嘗試重啟windows服務器,直到isapi_redirect被正確加載,此時,isapi_redirect.log中會生成“[Fri Apr 25 10:03:49.863 2014] [16260:16312] [emerg] init_jk::jk_isapi_plugin.c (2867): Unable to read worker file E:\ajp\conf\workers.properties. (errno=0, err=No error)”類似的信息。

    ?

  • 驗證負載均衡
  • 驗證方法參加第一部分Linux環境下Apache + mod_jk + JBOSS相關的內容。

    ?

    三、??? 參數說明

  • worker.list
  • 表示要通過apache或IIS做負載的JBOSS集群或其它集群的名稱列表,多個直接用逗號隔開。本文只有一個JBOSS集群,命名為loadbalancer。

  • worker.loadbalancer.type=lb,表示采用負載的方式來訪問web,如果worker.loadbalancer.type=ajp13,則說明不使用負載。
    worker.loadbalancer.balance_workers=node1,node2,表明集群有兩個節點,分別為node1和node2。
  • worker.node1.port=8009,該端口為JBOSS通過AJP協議用于與apache或IIS通信的端口,需要與JBOSS配置文件中<socket-binding name="ajp"中的端口保持一致,默認為8009。
    worker.node1.host=172.18.49.183,為該節點的JBOSS的DNS解析地址
    worker.node1.type=ajp13,AJP協議類型為1.3
    worker.node1.lbfactor=1,負載系數,兩個節點都為1,則表示按1:1輪詢。worker.node1.connection_pool_timeout=600,表示JK connector將在連接處于空閑狀態600s后關閉與后端JBOSS的連接,該參數必須與JBOSS配置中的“DEFAULT_CONNECTION_TIMEOUT”保持一致。
  • worker.node1.connection_pool_size=500,表示所允許的與后端JBOSS的最大連接數,需要注意的是,如果使用Apache,該參數不推薦使用,因為apache是自適應的去分配連接。
    worker.node1.connection_pool_minsize=250,表示當資源池被收縮時,可以保持的空閑連接數,apache官方推薦值為最大連接數的一半。如果使用Apache,該參數同樣不推薦使用。

    worker.node1.socket_timeout=5,表示TCP傳輸的超時為5s,如不設置該參數,則表示超時值為無窮大,此時,如果網絡狀況不佳,可能會存在很多死連接,導致JBOSS壓力偏低,性能發揮不出來。但該值如果設置太小,會使得JK connector對網絡狀況過于敏感,不僅增大JBOSS壓力,還會錯誤的殺掉因為網絡或其它原因而響應稍慢的一些連接。Apache的官方推薦值為1到5秒。




    轉載于:https://www.cnblogs.com/liulei058/p/4045709.html

    總結

    以上是生活随笔為你收集整理的JBOSS通过Apache负载均衡方法一:使用mod_jk的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。