2016-07-31 81 views
0

我的Web應用程序部署在JBoss AS 7.1中。在用Java編寫中間件代碼之後,我開始編寫用戶界面。我想過使用Apache httpd來訪問靜態資源,如css,js和html。因此,我安裝了httpd 2.4.23,並進行了配置更改以訪問我擁有靜態資源的目錄。然後我想使用httpd作爲負載平衡器。爲此,我安裝了mod_jk 1.2.41。我創建workers.property具有以下細節:在Jboss之前配置Apache作爲負載平衡器

# 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/Using+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意味着這兩個服務器都訪問靜態內容完美運行。 請幫忙。

+0

請告訴我們您的日誌文件,即mod_jk.log和erro_log – Ghayel

+0

問題編輯和日誌添加在那。謝謝 –

回答

0

確保Tomcat正在運行,並連接到端口8009,請確認端口8009是開放的,聽

對不起你正在使用JBoss,但我有同樣的問題與Tomcat的,這就是爲什麼我寫的Tomcat而不是JBoss的。

+0

但爲什麼tomcat。我擁有支持Apache https的JBoss。爲什麼Tomcat在這裏? –

0

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.So到達,看看你能夠從apache機器'telnet到jboss ajp端口'。如果你的apache和jboss實例在同一臺機器上運行,那麼不應該有任何n/w問題。因此,在這種情況下,請查找server.log以獲取相同的時間戳即,當您收到錯誤「所有Tomcat實例正忙或處於錯誤狀態」時的時間戳。

+0

感謝Pankaj的幫助。目前,我開始在tomcat中部署自己的應用程序,並在幾天內將Jboss遺忘。我會回來,並會檢查你的建議,並會回覆如果無法解決問題。有一件事要注意,這兩臺服務器都運行在同一臺機器上。 –

0

但爲什麼tomcat。我擁有支持Apache https的JBoss。爲什麼Tomcat在這裏?

  • 您可以使用任何服務器作爲後端server.So,如果你是在backend.As我前面所說的使用JBoss或Tomcat不要緊;日誌包含單詞'tomcat'僅僅是因爲Jboss在內部使用了tomcat容器。所以,在你的情況下,你只需要擔心在8009上聽AJP端口;因爲mod_jk只使用AJP協議。因此,確保你是能夠從您的Apache遠程登錄到後端Jboss實例。 正如你所說的;你的JBoss和apache都運行在同一臺機器上;所以,確保你使用了正確的端口和ip地址。另外,看看你是否使用任何端口偏移量。如果是,則相應地更改該值。

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