
Ich verwende Clustering in Tomcat 7 mit einem Apache-Server. Das funktioniert auch gut. Allerdings habe ich folgende Probleme:
1) Ich versuche, die Statusseite von mod_jk zu überwachen, aber es wird ein 404-Fehler angezeigt.
2) im Protokoll wird folgender Fehler angezeigt -
[Tue Dec 17 13:16:51.019 2013] [2236:140599476504544] [error] init_jk::mod_jk.c (3348): Initializing shm:/etc/httpd/logs/mod_jk.shm.2236 errno=13. Load balancing workers will not function properly.
[Tue Dec 17 13:16:51.019 2013] [2236:140599476504544] [info] init_jk::mod_jk.c (3365): mod_jk/1.2.37 initialized
[Tue Dec 17 13:16:51.041 2013] [2237:140599476504544] [error] init_jk::mod_jk.c (3348): Initializing shm:/etc/httpd/logs/mod_jk.shm.2237 errno=13. Load balancing workers will not function properly.
[Tue Dec 17 13:16:51.042 2013] [2237:140599476504544] [info] init_jk::mod_jk.c (3365): mod_jk/1.2.37 initialized
Hier ist die Datei worker.properties
worker.list=tomcatnode1,tomcatnode2,loadbalancer,statusmanager
worker.tomcatnode1.port=8009
worker.tomcatnode1.host=localhost
worker.tomcatnode1.type=ajp13
worker.tomcatnode1.lbfactor=100
worker.tomcatnode2.port=8010
worker.tomcatnode2.host=localhost
worker.tomcatnode2.type=ajp13
worker.tomcatnode2.lbfactor=100
#Load Balance Configuration
worker.loadbalancer.type=lb
worker.loadbalancer.balance_workers=tomcatnode1, tomcatnode2
worker.loadbalancer.sticky_session=1
#worker.list=jkstatus
worker.statusmanager.type=status
Hier ist die Datei mod_jk.conf
LoadModule jk_module modules/mod_jk.so
JkWorkersFile conf/workers.properties
JkLogFile logs/mod_jk.log
JkLogLevel info
JkShmFile logs/mod_jk.shm
JkMount /IntellixWebApi/* loadbalancer
#JkMount /jkmanager/* jkstatus
#JkMount /jkmanager jkstatus
<Location /status/>
JkMount statusmanager
Order deny,allow
# Deny from all
Allow from 127.0.0.1
</Location>
Wenn ich auf IntellixWebApi zugreife, ist der Zugriff möglich. Aber wenn ich /status verwende, funktioniert es nicht.
Bitte vorschlagen.
Antwort1
Es gibt ein Problem beim Initialisieren des gemeinsam genutzten Speichers, der von den Workern benötigt wird.
Überprüfen Sie, ob das Verzeichnis /etc/httpd/logs/
existiert und für den Benutzer, der die Tomcat-Instanz betreibt, beschreibbar ist. Wenn nicht, ändern Sie entweder die Berechtigungen für das Verzeichnis oder erstellen Sie ein separates Verzeichnis, in dem die SHM-Dateien gespeichert werden. (Ich würde Letzteres empfehlen, einfach weil es aus mehreren Gründen keine gute Idee ist, wichtige Statusinformationen am selben Ort wie Ihre Protokolle aufzubewahren.)
Wenn das Verzeichnis existiert und beschreibbar ist, überprüfen Sie, ob Sie SELinux aktiviert haben und ob es ggf. Berechtigungsprobleme gibt. Sie können jederzeit versuchen, es auf „permissiv“ einzustellen, um zu sehen, ob das Problem verschwindet. Wenn ja, ist es an der Zeit, die Berechtigungen zu korrigieren und es wieder zu aktivieren.
Antwort2
Nach langem Googeln gelang es mir, den Statusbildschirm von jk_manager aufzurufen. Zuerst habe ich SELINUX deaktiviert und dann nach dem Neustart des Systems Folgendes eingestellt: JkMount
JkMount /* loadbalancer
JkMount /IntellixWebApi/* loadbalancer
JkMount /jkmanager/* jkstatus
<Location /status/>
JkMount statusmanager
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Location>
Das hat bei mir funktioniert.
Danke