# [solved] apache2+tomcat6 (multiple instance) auf einem port

## sicus

Hallo,

ich weiß jetzt nicht ob das das richtige forum ist, es ist keine gentoo spezifische frage, jedoch weiß ich nicht an wen ich mich sonst wenden soll.

Das Problem ist folgenses, Ich habe hier einen Apache (2.2.9-r1) und einen Tomcat (6.0.18-r1) laufen. Es laufen 2 Instanzen des Tomcat mit zwei verschidenen Applikationen. Es handelt sich also nicht um 2 Instanzen wegen load balancing oder ähnlichem, die zwei Instanzen sind ein Kundenwunsch damit Instanz A neu gestartet werden kann ohne daß Instanz B beinträchtigt wird, desshalb werden zwei Instanzen gefahren und nicht beide applikationen in einer Tomcat Instanz.

Jetzt das Problem:

Gefordert ist, daß beide Tomcat Instanzen über den selben Host und den selben Port zu erreichen sind. Das soll so aussehen:

```

host:8080/app1 -> Tomcat Instanz A wird angesprochen

host:8080/app2 -> Tomcat Instanz B wird angesprochen

```

Jedoch lässt Tomcat nicht zu, daß ich beide instanzen mit 8080 connecte. sehe ich auch ein. Deshalb dachte ich mir, ich versuche es über Virtual Hosts in Apache. Jedoch Unterscheidet sich dann der host wieder. Besteht die Möglichkeit diese Anforderungen zu erfüllen? ich bin mit meinem latein am ende.

Alles was ich im web gefunden habe geht auf folgende szenarien hinaus:

```

2 instanzen, 1 host, 2 ports:

host:8080 -> Instanz A

host:8081 -> Instanz B

```

oder

```

2 instanzen, 2 hosts, 1 port:

host1:8080 -> Instanz A

host2:8080 -> Instanz B

```

Ich benötige jedoch oben genanntes Szenario.

danke im voraus

markus

PS: bevor fragen aufkommen: Die Vorgabe von einem Host und einem Port ist eine zwingende Kundenvorgabe, daran kann ich nichts ändern.

----------

## Beforegod

Also wie soll das gehen.

Entweder eine Instanz mit unterschiedlichen Folder oder zwei Instanzen mit zwei Ports.

Du kannst auch keine zwei Apache Dienste auf dem gleichen Port laufen lassen.

Evt. kannst Du mit VHosts doch was erreichen.

z.B. wenn einer auf die Adresse host:8080/app1 zugreift -> link auf host:8080/app1

host:8080/app2 -> rewrite -> host:8081/app2

Laut dem Weblog hier (http://techsk.blogspot.com/2008/02/how-to-configure-2-or-more-tomcat.html) gehts auch nicht. Bin allerdings da nicht sehr bewandert was Tomcat angeht.

----------

## sicus

es soll ja nur ein apache laufen, dieser soll aber 2 tomcat instanzen bedienen. und es steht nach außen nur ein port zur verfügung.

bei einem apachen und einem tomcat wird der tomcat per connector zu 8080 verbunden, es gibt noch nen internen port, bzw. 2, standart 8005 und 8009

bei den internen ports bin ich frei, jedoch beim port nach außen nicht. natürlich kann ich nicht 2 tomcats auf 8080 verbinden. dachte es gibt ne möglichkeit daß der apache das regelt. also etwa so:

tomcat 1: ports 8005 + 8009

tomcat 2: ports 8006 + 8010

nach außen:

apache port 8080, dieser hat virtuelle hosts oder ähnliches. also werden eingehende anfragen an

host:8080/app1 

an tomcat 1 weitergeleitet und anfragen an

host:8080/app2

kommen am tomcat 2 an. jedoch bin ich an der umsetzung gescheitert. momentan laufen alle applikationen über eine tomcat instanz. das problem ist jedoch, wird beispielsweise eine applikation upgedatet muß der tomcat neu gestartet werden, damit gehen momentan alle applikationen down. schlimmer ists noch wenn der tomcat mal crasht. ist das ganze auf verschiedene instanzen aufgeteilt wäre immer nur eine applikation bei einem neustart oder crash betroffen und nicht alle.

leider ist es nicht möglich weitere ports zu nehmen, ist eine kundenvorgabe. die umstellung auf mehrere instanzen ist glücklicherweise nicht zwingend notwendig, aber ein nice to have.

----------

## Beforegod

Hast eine PN

----------

## Anarcho

 *Beforegod wrote:*   

> Hast eine PN

 

Kleine Zwischenfrage: Was soll das denn? Vielleicht interessiert es den einen oder anderen auch ob es dafür eine Lösung gibt. Genau dafür ist ein öffentliches Supportforum ja da....    :Sad: 

Aber zurück zum Thema.

Meiner Meinung sollte das ganze nicht so schwer sein. Du verknüpfst Apache mit mod_jk mit Tomcat. Lässt aber 2 Tomcat Instanzen laufen (entweder verschiedene interene Hosts oder eben verschiedene Ports). In der Config zu mod_jk trägst du beide ein und in apache erstellst du die Konfiguration für beide Locations mit je einer Tomcat Instanz.

----------

## sicus

so, gelöst. in der PN stand ein link der mich schließlich zur lösung brachte. hier der link für interessierte:

http://www.apachefriends.org/f/viewtopic.php?t=31598

da ich bei meinem problem mit lokalen ports frei bin, jedoch mit ports nach ausßen hin bescränkt, konnte ich das ganze über die proxy module vom apachen lösen. jetzt schaut es so aus:

ports tomcat 1 (alles local ports):

8005 (shutdown)

8009 (ajp13)

8081 (http connector)

ports tomcat 2 (alles local ports)

9005 (shutdown)

9009 (ajp13)

9081 (http connector)

der apache hat einen VHost bekommen (auszug):

```

LoadModule proxy_module modules/mod_proxy.so

LoadModule proxy_ajp_module modules/mod_proxy_ajp.so

LoadModule proxy_http_module modules/mod_proxy_http.so

Listen *:8080

<VirtualHost *:8080>

   ServerName localhost

   ProxyPass /app1 http://localhost:8081/

   ProxyPassReverse /app1 http://localhost:8081/

   ProxyPass /app2 http://localhost:9081/

   ProxyPassReverse /app2 http://localhost:9081/

</VirtualHost>

```

danke an alle für die hilfe

----------

## Beforegod

 *Anarcho wrote:*   

>  *Beforegod wrote:*   Hast eine PN 
> 
> Kleine Zwischenfrage: Was soll das denn? Vielleicht interessiert es den einen oder anderen auch ob es dafür eine Lösung gibt. Genau dafür ist ein öffentliches Supportforum ja da....   
> 
> Aber zurück zum Thema.
> ...

 

Wollte keine weiterverlinkung auf ein anderes Forum.

Allerdings war ich da nicht ganz bei mir, also entschuldigt bitte.

Link ist ja hier auch schon gepostet.

----------

