Apache – Tomcat: Tomcat-Worker Verwendung in VHosts

Hat man nun alles dementsprechende konfiguriert, kann man in jeden X-beliebigen VHost darauf zugreifen. Dazu gibt man entweder „jkmount“ an, um Pfade auf einen Tomcat-Worker/Balancer zu lenken oder „jkunmount“ um bestimmt Pfade genau davon auszuschließen. Bei den Mount-Direktiven kann man Pfade, Dateien, Dateipfade oder Pattern angeben. Man kann also sagen „jkmount / WorkerName“ um alles dieser Domain ab dem Root auf den Tomcat „WorkerName“ zu lenken. Also die Syntax ist bei beiden Direktiven immer gleich „Kommando Pattern Tomcat“. Möglich wäre also z.B. auch „jkmount /cms/*.html WorkerName“ und „jkunmount /*.php“. Das erst besagt, das alle Requests auf HTMLs unterhalb von „/cms“ an dem Tomcat gesendet werden sollen und das andere, das alle Requests auf PHP-Dateien nicht an an den Tomcat gesendet werden.

 

Apache – Tomcat: mod_jk.conf

In der mod_jk.conf (manchmal auch nur jk.conf) kann man noch zusätzliche Parameter setzen um das Verhalten des Moduls zu beeinflussen. Unter anderem wird hier festgelegt wo das „jk-workers-properties“-File liegt. Dies kann man hier nämlich mit dem Parameter „JkWorkersFile“ festlegen. JkShmFile beschreibt wo die Datei für den „shared memory“ für Balancer ist. Dies wird benutzt damit der Balancer seine Worker dirigieren kann. Sollte laut Doku nicht auf einen NFS-Share liegen. Normalerweise liegt es immer unter „/var/log/apache2/“. Weiterhin kann man sonst noch festlegen wo die eigentliche log-Datei liegen soll. Deren Log-Level und das Logformat lässt sich auch noch festlegen. Abschließend kann man mit „JkOptions“ noch verschiedene Optionen zur Kompatibilität zwischen Apache und Tomcat setzten. Zum Beispiel das der SSL- Header mit gesendet werden soll oder wir URIs weitergegeben werden.

 

Apache – Tomcat: jk-workers.properties

Hier werden wie weiter oben schon besprochen Worker und Balancer konfiguriert. Am Anfang der Datei gibt es eine sogenannte „worker.list“. Alles was hierin aufgelistet wird, ist dem Apache2 später auch bekannt. Darunter folgt dann meist die Konfiguration der einzelnen Worker und Balancer. Wobei ein Balancer auch nur eine Art Worker ist. Ein Worker ist einfach nur die Beschreibung eines Tomcats. Dabei lässt er sich mit 3 Zeilen abbilden. Man gibt mit „worker.Name.port“ den AJP-Connector Port an , mit „worker.Name.host“ den Hostnamen oder die IP und mit „worker.Name.type“ noch den Typ an. Beim Typ kann man entweder „ajp13“ oder „lb“ angeben. Wobei „lb“ dann für Load Balancer steht und „ajp13“ für einen normalen Worker. Der „Name“ im mittleren Teil der 3 Parameter sollte im dem der JVMRoute aus dem Engine-Tag der Server.xml des Tomcats entsprechen. Im Eigentlich ist dies aber nur wichtig, wenn man einen LB aufbauen möchte. Da so der Apache2 genau die Tomcats unterschieden kann. Hat man also diese 3 Parameter, hat man auch schon einen Worker, diesen fügt man dann noch der am Anfang erwähnten „worker.list“ hinzu. Einfach den Namen des Worker dort eintragen in einer Komma-separierten Liste. Anschließend dann noch „/etc/init.d/apache2 reload“. Damit ist ein Worker eingerichtet. Apache – Tomcat: jk-workers.properties weiterlesen

Tomcat: too many open files

Dieses Problem tritt häufig auf, wenn man mehrere Tomcats unter einen unprivilegierten Benutzer laufen lässt. Dies liegt daran, das für diese Benutzer strengere Regeln gelten, was das öffnen von Dateien und belegen von System-Ressourcen angeht. Doch kann man dies relativ leicht beheben. Und zwar in dem man das „open file“- Limit erhöht. Normalerweise liegt dies bei 1024 Dateien pro Prozess die gleichzeitig geöffnet sein dürfen. Zu erst kann man den aktuellen Stand einmal überprüfen mit „lsof |grep java|wc -l“. Damit sollte einen die Gesamtanzahl aller offen Dateien für die Prozesse von Java ausgegeben werden. Jetzt kann man das „open file“-Limit auf zwei Arten versuchen zu erhöhen. Einmal mit den sogenannten „soft-limits“ in der Datei „/etc/security/limits.conf“. Dort könnte man nun einmal „* soft nofile 65535“ und einmal „* hard nofile 65535“ eintragen. Allerdings zeigte sich, das dies auf einigen Server nicht zum gewünschten Ergebnis führte. Deswegen wird die zweite Lösung favorisiert. Diese besteht darin über den root-Benutzer mit „ulimit“ das Limit zu erhöhen. mit „ulimit -a“ kann man sich die aktuellen Limits ansehen. Mit „ulmit -n <Zahl>“ kann man das Limit für die geöffneten Dateien erhöhen. Gibt man es nur einmal auf der Konsole ein, gilt die nur temporär. Um dies auf Dauer zu übernehmen schreibt man es entweder in die „.bashrc“ von root oder in die „/etc/rc.local“.

 

Allgemeines zur Apache2-Konfiguration

Aufbau des Konfigurationsverzeichnisses:

/etc/apache2/
|——–> conf.d/
|——–> Mods-available/
|——–> Mods-enabled/
|——–> Sites-available/
|——–> Sites-enabled/
|——–> ssl/
|——–> apache2.conf
|——–> envvars
|——–> httpd.conf
|——–> jk-workers.properties
|——–> ports.conf

 

In der obigen Abbildung ist der Standardaufbau des Apache-Konfigurationsverzeichnisses zu sehen. Die Einzelnen Punkt werden nun im Folgenden durchgegangen. Sie werden der Rehe nach von oben nach unten durchgegangen.

Allgemeines zur Apache2-Konfiguration weiterlesen