簡體   English   中英

將Jboss前面的Apache配置為負載平衡器

[英]Configuring Apache in front of Jboss as load balancer

我在JBoss AS 7.1中部署了Web應用程序。 用Java編寫中間件代碼后,當我開始編寫用戶界面時。 我想到了使用Apache httpd訪問諸如CSS,JS和html之類的靜態資源。 因此,我安裝了httpd 2.4.23並進行了配置更改,以訪問擁有我的靜態資源的目錄。 然后,我想使用httpd作為負載均衡器。 為此,我安裝了mod_jk 1.2.41。 我使用以下詳細信息創建了worker.property:

# for mapping requests 
# The configuration directives are valid 
# for the mod_jk version 1.2.18 and later 
worker.list=loadbalancer,status 
# Define node 
# modify the host as your host IP or DNS name. 
worker.node.port=8009
worker.node.host=127.0.0.1 
#(IP or DNS name of the server on which Jboss is running) 
worker.node.type=ajp13 
worker.node.lbfactor=1 
# Load-balancing behaviour 
worker.loadbalancer.type=lb 
worker.loadbalancer.balance_workers=node 
worker.loadbalancer.sticky_session=1 
worker.status.type=status

這是我的mod-jk.conf

LoadModule jk_module modules/mod_jk.so
JkWorkersFile conf/workers.properties
JkShmFile logs/mod_jk.shm
JkLogFile logs/mod_jk.log
JkLogLevel info
JkMount /sb/* loadbalancer
JkMount /sb.web/* loadbalancer

我在httpd.conf的末尾添加了此配置文件:

Include C:/Apache24/conf/mod-jk.conf

我參考以下內容檢查了我的JBoss配置:

https://docs.jboss.org/author/display/AS71/使用+ mod_jk + with + JBoss + AS7#Usingmod_jkwithJBossAS7-Compile%26InstallApacheHttpd

我無法使用httpd URL訪問我的JBoss應用程序。 它給出以下錯誤日志:

::1 - - [01/Aug/2016:01:26:58 +0530] "GET /sb/v1/sc/m/2/ HTTP/1.1" 503 299

mod-jk日志:

 [7132:1928] [info] jk_open_socket::jk_connect.c (817): connect to 127.0.0.1:8009 failed (errno=61)
 [7132:1928] [info] ajp_connect_to_endpoint::jk_ajp_common.c (1068): (node) Failed opening socket to (127.0.0.1:8009) (errno=61)
 [7132:1928] [error] ajp_send_request::jk_ajp_common.c (1728): (node) connecting to backend failed. Tomcat is probably not started or is listening on the wrong port (errno=61)
 [7132:1928] [info] ajp_service::jk_ajp_common.c (2773): (node) sending request to tomcat failed (recoverable), because of error during request sending (attempt=2)
 [7132:1928] [error] ajp_service::jk_ajp_common.c (2794): (node) connecting to tomcat failed (rc=-3, errors=4, client_errors=0).
 [7132:1928] [info] service::jk_lb_worker.c (1595): service failed, worker node is in error state
 [7132:1928] [info] service::jk_lb_worker.c (1675): All tomcat instances are busy or in error state
 [7132:1928] [error] service::jk_lb_worker.c (1680): All tomcat instances failed, no more workers left
 [7132:1928] [info] jk_handler::mod_jk.c (2991): Service error=0 for worker=loadbalancer

我可以通過自己的URL訪問JBoss應用程序,並且可以使用httpd URL訪問靜態內容,這意味着這兩個服務器都運行良好。 請幫忙。

確保Tomcat正在運行並連接到端口8009。請確認端口8009已打開並正在偵聽

抱歉,您正在使用JBoss,但是Tomcat遇到了同樣的問題,這就是為什么我編寫Tomcat而不是JBoss的原因。

JBoss僅使用tomcat容器,並且mod_jk日志顯示以下錯誤:

[7132:1928] [info] service::jk_lb_worker.c (1595): service failed, worker node is in error state
 [7132:1928] [info] service::jk_lb_worker.c (1675): All tomcat instances are busy or in error state
 [7132:1928] [error] service::jk_lb_worker.c (1680): All tomcat instances failed, no more workers left

因此,這僅意味着您的后端jboss節點已關閉或無法通過apache訪問。因此,請查看是否能夠從apache機器“遠程登錄到jboss ajp端口”。如果apache和jboss實例在同一台上運行這樣一來,在機器上就不會出現任何n / w問題。因此,在這種情況下,請為server.log查找相同的時間戳,即出現錯誤“所有tomcat實例正忙或處於錯誤狀態”時的時間戳。

但是為什么要tomcat。 我在Apache https后面有JBoss。 為什么在這里Tomcat是圖片?

  • 您可以將任何服務器用作后端服務器。因此,在后端使用JBoss還是tomcat都沒有關系。 日志中包含單詞'tomcat'只是因為Jboss在內部使用了tomcat容器。因此,在您的情況下,您只需要擔心AJP端口是否偵聽8009;因為mod_jk僅使用AJP協議。因此,請確保您能夠從Apache遠程登錄到后端Jboss實例。 如您所說;您的JBoss和apache都在同一台機器上運行;因此,請確保您使用了正確的端口和ip地址。此外,請查看您是否在使用任何端口偏移量。如果是,則相應地更改該值。

    [7132:1928] [錯誤]服務:: jk_lb_worker.c(1680):所有tomcat實例均失敗,沒有更多的工人了

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM