一台服务器上有多个tomcat版本

时间:2014-07-16 14:55:03

标签: apache tomcat mod-proxy mod-jk

我维护一个包含3个jsf2-web应用程序的Web服务器,目前部署在tomcat7上。我们的架构是使用mod-jk从apache通过端口80到三个实例建立的,每个Web应用程序一个。除了其他不同的原因,我需要一个webapp tomcat8和其他tomcat7。我无法弄清楚如何实现这一点,因为我只能在apache配置中定义一个worker文件。这是服务器的架构:

Internet -> Apache 2 (open on Port 80 only)
Tomcat 7 instance 1 on Port 8180
Tomcat 7 instance 2 on Port 8280
Tomcat 7 instance 3 on Port 8380

Queries from Web redirected to tomcat instances:
server/Webapp1 -> instance 1/Webapp1
server/Webapp2 -> instance 2/Webapp2
server/Webapp3 -> instance 3/Webapp3

现在我想要的是在Tomcat 8而不是7上运行的实例3,但由于端口限制,它必须由apache提供。新架构应如下所示:

Internet -> Apache 2 (open on Port 80 only)
Tomcat 7 instance 1 on Port 8180
Tomcat 7 instance 2 on Port 8280
Tomcat 8 instance 3 on Port 8380

在各种配置中尝试使用proxypass,我无法使用它,因为它会重定向到无法从互联网上获得的端口。

有没有办法在内部重定向,因为Tomcat 8是一个完整的其他过程?

1 个答案:

答案 0 :(得分:0)

我发现mod_jk也适用于tomcat的不同安装,所以我安装了3个tomcat包并配置了mod_jk来使用每个tomcat实例。 mod_jk的配置(参见apache modules文件夹)如下所示:

<IfModule jk_module>
  JkWorkersFile /opt/workers.properties
  JkLogFile /var/log/apache2/mod_jk.log
  JkLogLevel warn
  JkShmFile /var/log/apache2/jk-runtime-status
  JkWatchdogInterval 60
  JkMountFile /opt/uriworkermap.properties
</IfModule>

workers文件看起来像这样:

worker.list=app1, app2, app3
worker.app1.port=8109
worker.app1.host=localhost
worker.app1.type=ajp13
worker.app2.port=8209
worker.app2.host=localhost
worker.app2.type=ajp13
worker.app3.port=8309
worker.app3.host=localhost
worker.app3.type=ajp13