2016-07-31 22 views
0

Ich habe meine Webanwendung in JBoss AS 7.1 bereitgestellt. Nach dem Schreiben Middleware-Code in Java, als ich anfing, Benutzeroberfläche zu schreiben. Ich dachte an Apache httpd für den Zugriff auf statische Ressourcen wie CSS, JS und HTML. Daher habe ich httpd 2.4.23 installiert und Konfigurationsänderungen vorgenommen, um auf das Verzeichnis zuzugreifen, in dem ich meine statischen Ressourcen habe. Dann wollte ich httpd als Load Balancer verwenden. Dafür habe ich mod_jk 1.2.41 installiert. Ich habe workers.property mit folgenden Details:Apache vor Jboss als Load Balancer konfigurieren

# 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 

Hier ist meine 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 

ich am Ende der httpd.conf diese Konfigurationsdatei hinzugefügt:

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

Ich habe meine JBoss-Konfiguration überprüft, die sich auf Folgendes bezieht:

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

Ich bin nicht in der Lage, meine JBoss-Anwendung über die URL httpd zuzugreifen. Es gibt folgendes Fehlerprotokoll:

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

mod-jk Protokolle:

[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 

ich in der Lage bin durch seine eigene URL JBoss-Anwendung zugreifen und statische Inhalte mit httpd URL zugreifen kann, bedeutet, diese beiden Server sind läuft perfekt. Bitte helfen.

+0

links Bitte zeigen Sie uns Ihre Log-Dateien, dh mod_jk.log und erro_log – Ghayel

+0

Frage bearbeitet und Protokolle hinzugefügt in diesem. danke –

Antwort

0

Stellen Sie sicher, Tomcat ausgeführt wird und den Anschluss an 8009-Port Bitte bestätigen Sie Port 8009 geöffnet ist und

Leider hören Sie mit JBoss arbeiten, aber ich hatte dasselbe Problem mit Tomcat, deshalb habe ich Tomcat statt JBoss geschrieben.

+0

Aber warum Kater. Ich habe JBoss hinter Apache https. Warum Tomcat ist hier im Bild? –

0

JBoss Tomcat-Container verwendet nur und das mod_jk Protokoll die folgenden Fehler zeigt:

[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 

Also, es bedeutet einfach, dass entweder Ihr Backend Jboss Knoten nach unten ist oder nicht erreichbar von der apache.So finden Sie, wenn Sie sind in der Lage, "Telnet zu jboss ajp port" von der Apache-Maschine. Wenn Ihre Apache und jboss-Instanz auf demselben Rechner laufen, dann sollte es keine n/w-Problem. So in diesem Fall für die server.log für den gleichen Zeitstempel dh der Zeitstempel, wenn Sie den Fehler "Alle Tomcat-Instanzen sind ausgelastet oder im Fehlerzustand" erhalten.

+0

Danke Pankaj für Ihre Hilfe. Für den Moment habe ich angefangen, meine Anwendung in Tomcat selbst zu implementieren und vergaß Jboss für ein paar Tage. Ich komme zurück und werde überprüfen, was Sie vorschlagen und werde zurück antworten, wenn es nicht in der Lage wäre, das Problem zu beheben. Eine Sache zu beachten, dass diese beiden Server auf demselben Computer ausgeführt werden. –

0

Aber warum Kater. Ich habe JBoss hinter Apache https. Warum Tomcat ist hier im Bild?

  • Sie alle Server als Backend server.So verwenden kann, spielt es keine Rolle, ob Sie verwenden JBoss oder Tomcat auf backend.As sagte ich früher; Das Protokoll enthält das Wort "Tomcat", weil JBoss den Tomcat-Container intern verwendet. In diesem Fall muss man sich also nur Sorgen machen, dass der AJP-Port auf 8009 hört oder nicht, da Mod_jk nur das AJP-Protokoll verwendet Telnet von Ihrem Apache zu Back-End-Jboss-Instanz. Wie Sie gesagt haben, sowohl Ihre JBoss und Apache läuft auf dem gleichen Computer, so stellen Sie sicher, dass Sie den richtigen Port und IP-Adresse verwendet haben.Auch sehen, ob Sie einen Port-Offset verwenden.Wenn ja, ändern Sie den Wert entsprechend.

    [7132: 1928] [Fehler] service :: jk_lb_worker.c (1680): Alle tomcat Instanzen gescheitert, nicht mehr Arbeiter