首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Mod_JK代理多个Tomcat实例

使用Mod_JK代理多个Tomcat实例
EN

Stack Overflow用户
提问于 2016-10-06 23:39:54
回答 1查看 782关注 0票数 0

我有一个Apache服务器,它假定将所有请求重定向到两个Tomcat实例:"geonetwork“和"geoserver”。

它们都可以从Apache服务器访问,但不知何故我无法使重定向工作。

我的hosts文件如下所示:

代码语言:javascript
复制
<VirtualHost *:80>
        ServerName localhost
        ServerAdmin someemail@email.com
        DocumentRoot /var/www/html
</VirtualHost>

<VirtualHost *:80>
        ServerName geonetwork
        ServerAdmin someemail@email.com
        DocumentRoot /usr/local/tomcat_gn/webapps

        <Directory "/usr/local/tomcat_gn/webapps">
           #Options MultiViews FollowSymLinks
           Options All
           AllowOverride all
           Require all granted
        </Directory>

        #LogLevel info ssl:warn
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        JkMount /geonetwork|/* gn_worker
</VirtualHost>

<VirtualHost *:80>
        ServerName geoserver
        ServerAdmin someemail@email.com
        DocumentRoot /usr/local/tomcat_gs/webapps

        #LogLevel info ssl:warn
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        JkMount /geoserver|/* gs_worker
</VirtualHost>


# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

documentRoot指令指向tomcat实例挂载的目录。

这是worker.properties文件:

代码语言:javascript
复制
#
worker.list=gn_worker,gs_worker

#
#------ ajp13_worker WORKER DEFINITION ------------------------------
#---------------------------------------------------------------------
# 

# 
# Defining a worker named ajp13_worker and of type ajp13
# Note that the name and the type do not have to match.
# 
worker.gs_worker.port=8009
worker.gs_worker.host=geoserver
worker.gs_worker.type=ajp13

worker.gn_worker.port=8009
worker.gn_worker.host=geonetwork
worker.gn_worker.type=ajp13
#
# Specifies the load balance factor when used with
# a load balancing worker.
# Note:
#  ----> lbfactor must be > 0
#  ----> Low lbfactor means less work done by the worker.
worker.gs.lbfactor=1
worker.gn.lbfactor=1

#
# Specify the size of the open connection cache.
#worker.ajp13_worker.cachesize

# 
#------ DEFAULT LOAD BALANCER WORKER DEFINITION ----------------------
#---------------------------------------------------------------------
#

#
# The loadbalancer (type lb) workers perform wighted round-robin
# load balancing with sticky sessions.
# Note:
#  ----> If a worker dies, the load balancer will check its state
#        once in a while. Until then all work is redirected to peer
#        workers.
worker.loadbalancer.type=lb
worker.loadbalancer.balance_workers=gn_worker,gs_worker

让我印象最深的是,第一个虚拟主机总是可以工作的。因此,在本例中,它解析为apache根目录,但如果我将geonetwork或geoserver放入,它将正确解析为:

http://localhost/geonetworkhttp://localhost/geoserver

我已经没有办法调试它了!有人能帮帮我吗?

EN

回答 1

Stack Overflow用户

发布于 2016-10-11 16:48:37

我想您可能忘记在每个虚拟主机中执行JkMount之前包括mod_jk配置:

代码语言:javascript
复制
# Load mod_jk module
LoadModule jk_module modules/tomcat-connector/mod_jk.so

# Add the module (activate this lne for Apache 1.3)
# AddModule     mod_jk.c
# Where to find workers.properties
JkWorkersFile conf/extra/workers.properties
# Where to put jk shared memory
JkShmFile     logs/mod_jk.shm
# Where to put jk logs
JkLogFile     logs/mod_jk.log
# Set the jk log level [debug/error/info]
JkLogLevel    info


<VirtualHost *:80>
        ServerName localhost
        ServerAdmin someemail@email.com
        DocumentRoot /var/www/html
</VirtualHost>

<VirtualHost *:80>
        ServerName geonetwork
        ServerAdmin someemail@email.com
        DocumentRoot /usr/local/tomcat_gn/webapps

        <Directory "/usr/local/tomcat_gn/webapps">
           #Options MultiViews FollowSymLinks
           Options All
           AllowOverride all
           Require all granted
        </Directory>

        #LogLevel info ssl:warn
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        JkMount /geonetwork|/* gn_worker
</VirtualHost>

<VirtualHost *:80>
        ServerName geoserver
        ServerAdmin someemail@email.com
        DocumentRoot /usr/local/tomcat_gs/webapps

        #LogLevel info ssl:warn
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        JkMount /geoserver|/* gs_worker
</VirtualHost>

就我个人而言,在不需要操作映射应用程序的上下文根的情况下,我更喜欢mod_jk,因为在使用平衡器时,我可以通过状态工作器动态地管理它,但这只是我的观点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39900270

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档