TechDocs


   Rubrik > Admin > Tomcat >


    09.09.2011 15:29:41  Admin > Tomcat    

Mehrere Tomcat Instanzen auf einem Server laufen lassen

Ziel ist es verschiedene Versionen/Instanzen von Tomcat zur gleichen Zeit auf einer Maschine laufen zu lassen.

Alle Web-Anwendungen einer Tomcat Instanz benutzen eine Tomcat Version, indem sie auf gleiche Tomcat Laufzeitbibliotheken verweisen, allerdings in verschiedenen Prozessen und mit individuellen Konfigurationen.

Soll eine andere Version des Tomcat laufen muss nur die Umgebungsvariable $CATALINA_HOME in der start.sh Batch geändert werden, vorausgesetzt die Konfigurationsdateien zwischen den Versionen sind kompatibel zueinander.


multiple tomcat instances on one server

Verzeichnisstruktur

Java Installationen

Tomcat Installationen

Tomcat Instanzen mit den Web-Anwendungen


Installation

  1. Tomcat installieren
    Tomcat 5.x downloaden und in dem Installationsverzeichnis entpacken, beispielsweise nach /usr/share/, sodass die Installation dann in /usr/share/apache-tomcat-5.5.20steht.
    Einen symbolischen Link mit dem Namen /usr/share/tomcat derauf das Installationsverzeichnis verweist anlegen.
    Für weitere Versionen muss man dann nur noch entpacken und den Link auf diese neue Version umsetzen.


  2. Verzeichnisse für jede Instanz anlegen
    Für jede parallele Tomcat Instanz ist ein Verzeichnis anzulegen auf das die Umgebungsvariable CATALINA_BASE der Instanz gesetzt wird.Das könnte beispielsweise
    /srv/www/tomcat/server1
    /srv/www/tomcat/server2
    /srv/www/tomcat/server...
    sein.

    In jedem dieser Verzeichnisse müssen die folgenden Unterverzeichnisse angelegt werden:
    conf, bin, logs, temp, webapps und work

    Im conf Verzeichnis ist eine server.xml und web.xml Datei anzulegen.Die Dateien können aus dem Tomcat Installationsverzeichnis dorthin kopiert werden. Die server.xml Datei muss dann noch angepasst werden.

    In das webapps-Verzeichnis sind die Web-Anwendungen, welche auf der entsprechenden Instanz laufen sollen, zu kopieren.

    Zusätzlich kann noch der Tomcat Manager pro Instanz konfiguriert werden. Mit dem Tomcat Manager sind die Web-Anwendungen der einzelnen Instanzen steuerbar und die aktiven Sessions können pro Instanz beobachtet werden.

  3. Ports für jede Instanz konfigurieren und Web Anwendungen auf die Instanzen verteilen
    Tomcat hat mindestens zwei Netzwerk Ports offen. Ein Port für das Shutdown Kommando und einen um Anfragen entgegenzunehmen.
    Zwei Tomcat Instanzen können nicht auf ein- und demselben Port bei gleicherNetzwerkadresse auf Anfragen warten. Die Shutdown- und Anfrage-Ports sind in der server.xml jeder Instanz so abzuändern, dass alle Instanzen unterschiedlichen Ports arbeiten.

    Den Anfang macht der Shutdown Port. Dieser wird von dem Shutdown Skript aufKommandozeile aufgerufen und gibt Tomcat die Anweisung sich selbst herunterzufahren. Der Eintrag für den Shutdown Port steht am Anfang der server.xml Datei im conf Verzeichnis der jeweiligen Instanz.


    Jede Instanz muss andere Port Nummern nutzen. Der Port Wert sollte grösser als1024 sein, um nicht mit den festgelegten Ports von Netzwerk Services auf dem System in Konflikt zu kommen. Der Wert des 'shutdown' Attributes ist das Kommando zum Herunterfahren des Server hier '_SHUTDOWN_COMMAND_'. Tomcat nimmt Shutdown Kommandos von anderen Servern im Netzwerk nicht an. Das Shutdown Kommando kann nur von dem Server auf dem Tomcat selbst läuft gesendet werden.

    Der Shutdown Port kann nicht an eine bestimmte IP-Adresse gebunden werdenund ist immer an die IP-Adresse 127.0.0.1 gebunden.

    Die anderen Tomcat Ports werden mit durch das <Connector> Element konfiguriert. Es müssen die Ports der HTTP und JK Listener anzgepasst werden. Das Port Attribut gibt an, auf welchem Port Anfragen entgegen genommen werden. Der Wert dieses Attributes sollte für jede parallele Tomcat Instanz eindeutig sein.


    Für den Fall das dem Tomcat ein Webserver vorgeschaltet ist müssen auch die mod_jk bzw. mod_proxy Ports und die Server Konfiguration entsprechend angepasst werden.
    Auch der Fall das die Portnummern aller Instanzen z.Bsp. 8080 für den HTTP Connector identisch sind ist konfigurierbar. In diesem Fall vergibt man verschiedene IP-Adressen für jede Tomcat Instanz.

    Das Server System muss dann mit mehreren IP-Adressen konfiguriert werden und das 'address' Attribut des <Connector> Element ist für jede Tomcat Instanz auf eine eigene IP-Adresse zu setzen.

  4. Tomcat Instanzen starten
    Um unterschiedliche Tomcat Instanzen starten bzw. stoppen zu können ist die Environment Variable CATALINA_BASE auf das Verzeichnis der zu entsprechenden Instanz zu setzen. Hier die Schritte zum Starten der 'Server5' Tomcat Instanz.


Tomcat Manager für Instanzen konfigurieren

Mit der Installation des Tomcat Manager auf den einzelnen Instanzen wird die Verwaltung der Webanwendungen und das Browsen der aktiven Sessions der Webanwendungen möglich.Für die Installation des Tomcat Manager muss eine "manager.xml" Datei in daswebapps-Verzeichnis der Tomcat Instanz kopiert werden.

<instance>/webapps/manager.xml

Wichtig ist hier, dass das docBase Attribut des Context auf das webapp Verzeichnis der jeweiligen Tomcat Server Instanz zeigt. RemoteAddrValve wurde hinzugefügt um den Zugriff nur für bestimmte Intranet IP-Adressen zuzulassen.

Für jede Instanz muss nun noch ein Benutzer mit den Rechten zur Benutzung desTomcat Manager eingerichtet werden. Dafür muss eine tomcat-user.xml Datei in dem conf Verzeichnis der jeweiligen Tomcat Instanz angelegt werden.Diese sollte ähnlich der folgenden aussehen:

<instance>/conf/tomcat-users.xml

In der server.xml Datei muss eine UserDatabase konfiguriert sein. Diese ist so auch in der Standardkonfiguration der Tomcat Installation zu finden.

<instance>/conf/server.xml


Weitere Links zu dem Thema:
  Tomcat Cluster mit Apache Load Balancer
  Sticky Sessions im Tomcat Cluster konfigurieren
  Tomcat Cluster Session Replikation
  JkStatusManager - Tomcat Load Balancer Management



Übersicht