`
mysoko
  • 浏览: 35751 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

多个tomcat同一个apache,使用jk建立关系时常出错!

    博客分类:
  • java
阅读更多
多个项目,放在独立的tomcat上,并没有实现负载,要求实现静态化交给apache处理。

配置了3个tomcat通过jk和apache建立关系:

  1. tom1存放项目名:d1
  2. tom2存放项目名:news
  3. tom3存放项目名:root


环境:(一台win2003服务器,,zip版本5.5.26的tomcat装了3个,,jk是1.2.26的,apache2.2.×)

我的实现方式:

每个tomcat根目录下写个bat脚本,用于同一个机器上启动多个tomcat

D:\Program\Tomcat5.5.26\startup_proname.bat

set CATALINA_HOME=D:\Program\Tomcat5.5.26
bin/startup.bat
(此处只写一个tomcat的配置server.xml就不多说了,其他的也如此)

贴出我的配置文件,一共5个:
  • mod_jk.conf
  • workers2.properties
  • uriworkermap-d1.properties
  • uriworkermap-news.properties
  • uriworkermap-root.properties 
  • httpd-vhosts.conf



mod_jk.conf

# Load mod_jk module. Specify the filename
# of the mod_jk lib you’ve downloaded and
# installed in the previous section

#加载mod_jk模块
LoadModule jk_module modules/mod_jk.so

# Where to find workers.properties
JkWorkersFile conf/workers2.properties

# Where to find uriworkermap.properties
JkMountFile conf/uriworkermap-root.properties
JkMountFile conf/uriworkermap-news.properties
JkMountFile conf/uriworkermap-d1.properties

# Where to put jk logs
JkLogFile logs/mod_jk.log

# Set the jk log level [debug/error/info]
JkLogLevel info

# Select the log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "

# JkOptions indicate to send SSL KEY SIZE,
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories

# JkRequestLogFormat set the request format
JkRequestLogFormat "%w %V %T"

#关掉主机Lookup,如果为on,很影响性能,可以有10多秒钟的延迟。
HostnameLookups Off

workers2.properties

worker.list=root-loadbalancer,news-loadbalancer,d1-loadbalancer

#主工程
worker.root.type=ajp13
worker.root.host=localhost
worker.root.port=9009
worker.root.lbfactor=1

worker.root-loadbalancer.type=lb
worker.root-loadbalancer.balance_workers=root

#新闻工程(news)
worker.news.type=ajp13
worker.news.host=localhost
worker.news.port=9019
worker.news.lbfactor=1

worker.news-loadbalancer.type=lb
worker.news-loadbalancer.balance_workers=news

#文件服务器工程(d1)
worker.d1.type=ajp13
worker.d1.host=localhost
worker.d1.port=9029
worker.d1.lbfactor=1

worker.d1-loadbalancer.type=lb
worker.d1-loadbalancer.balance_workers=d1

worker.status.type=status

uriworkermap-d1.properties

/*=d1-loadbalancer

!/*.gif=d1-loadbalancer
!/*.jpg=d1-loadbalancer
!/*.png=d1-loadbalancer
!/*.css=d1-loadbalancer
!/*.js=d1-loadbalancer
!/*.htm=d1-loadbalancer
!/*.html=d1-loadbalancer

uriworkermap-news.properties

/*=news-loadbalancer

!/*.gif=news-loadbalancer
!/*.jpg=news-loadbalancer
!/*.png=news-loadbalancer
!/*.css=news-loadbalancer
!/*.js=news-loadbalancer
!/*.htm=news-loadbalancer
!/*.html=news-loadbalancer

uriworkermap-root.properties

/*=root-loadbalancer

!/*.gif=root-loadbalancer
!/*.jpg=root-loadbalancer
!/*.png=root-loadbalancer
!/*.css=root-loadbalancer
!/*.js=root-loadbalancer
!/*.htm=root-loadbalancer
!/*.html=root-loadbalancer


httpd-vhosts.conf

#
# Virtual Hosts
#
# If you want to maintain multiple domains/hostnames on your
# machine you can setup VirtualHost containers for them. Most configurations
# use only name-based virtual hosts so the server doesn't need to worry about
# IP addresses. This is indicated by the asterisks in the directives below.
#
# Please see the documentation at 
# <URL:http://httpd.apache.org/docs/2.2/vhosts/>
# for further details before you try to setup virtual hosts.
#
# You may use the command line option '-S' to verify your virtual host
# configuration.

#
# Use name-based virtual hosting.
#
NameVirtualHost *:80

#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for all requests that do not
# match a ServerName or ServerAlias in any <VirtualHost> block.
#

#网站主工程
<VirtualHost *:80>
ServerAdmin sydney.sun@demo.com
DocumentRoot "D:\apache-tomcat-5.5.26-root\webapps\insurance"
ServerName *.demo.com
JkMountFile conf/uriworkermap-root.properties
ErrorLog logs/demo-error.log
CustomLog logs/demo-access.log common
DirectoryIndex index.jsp

    <Directory "D:\apache-tomcat-5.5.26-root\webapps\insurance">
        Options FollowSymLinks
        AllowOverride None
        order allow,deny
        Allow from all
    </Directory>

    <IfModule mod_rewrite.c>

        Rewriteengine on

        #配置满足什么条件进行重写
        RewriteCond %{HTTP_HOST} ^[a-z0-9\-]+\.demo\.com$
        RewriteCond %{HTTP_HOST} !^www.demo.com
        RewriteCond %{HTTP_HOST} !^bbs.demo.com
	RewriteCond %{HTTP_HOST} !^d1.demo.com
	RewriteCond %{HTTP_HOST} !^news.demo.com
	RewriteCond %{REQUEST_URI} !(\.css|\.js|\.jpg|\.gif|\.png|\.html|\.htm)$

        RewriteRule ^/(.*)$ /%{HTTP_HOST}/$1

	#网站后台进行二级域名解析
	RewriteRule ^/manage\.demo\.com/?$ /panel/login.do [L,PT]

	#频道的首页进行二级域名解析
	RewriteRule ^/zx\.demo\.com/?$ /advisory/index.do [L,PT]
	RewriteRule ^/bid\.demo\.com/?$ /bid/bid_index.do [L,PT]
	RewriteRule ^/job\.demo\.com/?$ /job/job_index.do [L,PT]
	RewriteRule ^/download\.demo\.com/?$ /download/downloadIndex.do [L,PT]
	RewriteRule ^/ts\.demo\.com/?$ /complain/complain_index.do [L,PT]
	RewriteRule ^/video\.demo\.com/?$ /shipin/videoIndex.do [L,PT]
	RewriteRule ^/yellow\.demo\.com/?$ /yellow/yellow_index.do [L,PT]
	RewriteRule ^/fun\.demo\.com/?$ /fun/index.do [L,PT]

        #空间会员进行泛域名解析
	RewriteRule ^/([a-z0-9\-]+)\.demo\.com/?$ /space/index.do?SLD=$1 [L,PT]
    RewriteRule ^/([a-z0-9\-]+)\.demo\.com/space(/(.*))*$ /space/$2?SLD=$1&%{QUERY_STRING} [L,PT]
    </IfModule> 

</VirtualHost>


#保险新闻工程
<VirtualHost *:80>
ServerAdmin sydney.sun@demo.com
DocumentRoot "D:\apache-tomcat-5.5.26-news\webapps\news"
ServerName news.demo.com
JkMountFile conf/uriworkermap-news.properties
ErrorLog logs/news-error.log
CustomLog logs/news-access.log common
DirectoryIndex index.jsp

    <Directory "D:\apache-tomcat-5.5.26-news\webapps\news">
        Options FollowSymLinks
        AllowOverride None
        order allow,deny
        Allow from all
    </Directory>

</VirtualHost>


#文件服务器工程
<VirtualHost *:80>
ServerAdmin sydney.sun@demo.com
DocumentRoot "D:\apache-tomcat-5.5.26-d1\webapps\d1"
ServerName d1.demo.com
JkMountFile conf/uriworkermap-d1.properties
ErrorLog logs/d1-error.log
CustomLog logs/d1-access.log common
DirectoryIndex index.jsp

    <Directory "D:\apache-tomcat-5.5.26-d1\webapps\d1">
        Options FollowSymLinks
        AllowOverride None
        order allow,deny
        Allow from all
    </Directory>

</VirtualHost>



最后一个配置了,强调:我这里是3个项目分别用了3个tomcat,主要工程root实现了二级域名,其他两个功能有相应的域名

现在运行了2,3天时间发现偶尔会有异常,打不开现象,重启下影响不大,不过不知道原因很痛苦!

tomcat日志:

2008-10-28 13:18:59 org.apache.jasper.compiler.TldLocationsCache processWebDotXml
警告: Internal Error: File /WEB-INF/web.xml not found
2008-10-28 13:50:22 org.apache.jk.core.MsgContext action
警告: Error sending end packet
java.net.SocketException: Software caused connection abort: socket write error
分享到:
评论
3 楼 mysoko 2009-03-04  
好久没处理这两篇问题文章了,今天一并解决下,作个结尾:

几位提示得都很对,
1.使用mod_proxy简单方便,期间观察很不错,比jk好多了(现在想知道谁把那东西搞得那么烦)!
2.ServerName demo.com  到http://www.demo.com就是把没有www开头得地址转换到站点地址www开头,这里面有个小小得问题,就是不能和泛域名放到一个 VirtualHost 里面,单独写个VirtualHost 放到配置文件最底下,原因是让所有满足*.demo.com先匹配,没有匹配到继续向下,是个线形顺序!
2 楼 robbin 2008-11-04  
apache的rewrite不用变,加两条mod_proxy的配置就行了。类似这样:

ProxyPass / ajp://localhost:8080/
ProxyPassReverse / ajp://localhost:8080/

1 楼 theone 2008-10-29  
废掉mod_jk,改用mod_proxy_ajp

相关推荐

    Tomcat+Apache+JK集群

    JK模块包含两个部分:mod_jk.so(Apache加载的动态链接库)和worker.properties(配置文件,定义了Apache与Tomcat实例间的映射关系)。 **配置步骤:** 1. **安装Apache和Tomcat:** 首先确保安装了Apache ...

    Apache+JK+Tomcat搭建负载均衡

    `sticky_session`设置为1表示启用会话粘滞,即同一个用户在一段时间内会被定向到同一台Tomcat服务器,以保持会话状态的一致性。 在实际部署中,为了最大化系统可用性和性能,建议每个Tomcat实例部署在独立的物理或...

    mod_jk各个版本 apache与tomcat 整合

    通过使用 mod_jk 这一模块,我们可以实现 Apache 和 Tomcat 之间的高效通信。mod_jk 是一个负载均衡器和反向代理,它能够帮助我们在多个应用服务器之间分发 HTTP 请求。本文将详细介绍 mod_jk 的不同版本及其与 ...

    tomcat+apache+jk集群和负载均衡

    在IT领域,特别是Web服务架构中,通过使用Tomcat、Apache和JK代理模块实现集群与负载均衡是一种常见的优化策略,旨在提升系统性能、稳定性和可用性。以下是对标题“tomcat+apache+jk集群和负载均衡”以及描述...

    apache+tomcat7+jk负载均衡

    "Apache+Tomcat7+jk负载均衡"的组合就是一种常见的解决方案,它通过Apache HTTP Server作为前端代理服务器,利用JK模块(mod_jk)将请求分发到多台后端的Tomcat7应用服务器上,实现负载均衡和故障转移。下面我们将...

    Apache2.2.22+jk+tomcat7集群全套资料

    Apache 2.2.22、JK模块与Tomcat 7是构建高性能Web服务集群的关键组件。Apache HTTP服务器作为前端负载均衡器,通过JK模块(也称为mod_jk)与后端的Tomcat应用服务器进行通信,实现动态内容的处理。这种架构允许你将...

    apache+tomcat+jk 均衡负载和集群

    Apache+Tomcat+JK是一个常见的Web服务器和应用服务器集群解决方案,用于实现负载均衡和高可用性。这个配置中,Apache作为前端反向代理服务器,Tomcat作为后端的应用服务器,而JK模块是Apache与Tomcat之间的连接器,...

    Apache与多个Tomcat服务器集成时的负载平衡.txt

    mod_jk是Apache的一个模块,用于在Apache和Tomcat之间建立连接,实现负载平衡。首先确保已安装mod_jk模块,并将其加载到Apache中。例如,在Windows环境下,将`mod_jk_2.0.46.dll`复制到Apache的`modules`目录下,并...

    apache2.2与tomcat6.x+mod_jk整合

    在worker.properties中,可以通过配置多个worker来实现负载均衡,每个worker代表一个Tomcat实例。当一个worker出现故障时,mod_jk会自动将请求转发给其他健康的worker,实现故障转移。 4. **优化与监控** - **...

    整合apache与tomcat所需要的模块,各版本mod_jk

    1. **负载均衡**:`mod_jk`可以配置为将请求分散到多个Tomcat实例,实现负载均衡,提高系统可用性。 2. **会话持久性**:可以设置会话持久性,确保用户在一个Tomcat实例上创建的会话可以在其他实例上继续。 3. **...

    apache代理实现整合多个tomcat

    Apache 代理实现整合多个 Tomcat 是一种常见的 web 服务器架构策略,它允许通过单一的 Apache 服务器来管理和分发来自不同 Tomcat 实例的请求。这样做的好处包括简化对外服务的 URL、负载均衡以及集中化的安全管理。...

    Apache2.4+tomcat8.0+Jk

    Apache2.4、Tomcat8.0以及JK模块的结合使用是实现Web服务器与应用服务器之间负载均衡的一种常见方案。Apache作为前端服务器处理静态资源请求,而动态内容(如Java Web应用)则由Tomcat这样的Java应用服务器处理。JK...

    apache2.2.4、tomcat6利用JK_mod整合

    在这个过程中,JK模模块(mod_jk)起到了关键作用,它是一个Apache模块,允许Apache与Tomcat之间进行通信。 首先,我们来详细了解一下Apache HTTP Server 2.2.4。这是Apache服务器的一个旧版本,但依然在许多系统中...

    整合Apache和Tomcat的mod_jk

    Apache和Tomcat是两种常用的Web服务器和应用服务器。...总之,整合Apache和Tomcat使用mod_jk是一种常见的做法,它能充分利用两者的优势,提供高效、稳定的服务。了解和掌握mod_jk的配置是提升Web服务器性能的关键步骤。

    windows下整合apache和tomcat服务器的方法

    1. 确保所有软件(Apache、Tomcat、Java、mod_jk)的版本兼容。 2. 下载并安装Apache、Tomcat、Java和mod_jk模块。确保mod_jk模块与Apache版本匹配。 3. 安装完成后,备份`httpd.conf`以防误改导致Apache无法启动。 ...

    实现apache、tomcat集群,apache2.2.24 mod_jk-windows-i386-1.2.32

    mod_jk是Apache的负载均衡模块,通过它,我们可以将HTTP请求分发到多个Tomcat实例,实现集群化。下载并解压这个文件,然后将`mod_jk.so`动态链接库添加到Apache的`modules`目录下。 配置mod_jk涉及以下步骤: 1. *...

    Apache+Tomcat服务器集群配置详细步骤

    通过上述步骤,我们成功在一机双Tomcat环境中配置了一个基于Apache+Tomcat的服务器集群。这种方式不仅能够显著提升系统的稳定性和性能,还能实现资源的有效利用。对于处理高并发访问场景或需要提供不间断服务的应用...

    centos下用JK整合TOMCAT和Apache的多子站WEB服务器方法.doc

    总结来说,整合Apache和Tomcat使用JK模坓主要是为了优化性能和稳定性,通过JK模坓的配置,我们可以灵活地管理多个Tomcat子站,同时利用Apache处理静态资源,减轻Tomcat的压力。这一过程涉及编译JK模块、配置Apache和...

    apache + tomcat + mod_jk集群

    Apache、Tomcat以及mod_jk模块组成的集群架构是一种常见的高性能Web服务器和应用服务器组合,用于处理高并发和负载均衡的场景。在这个配置中,Apache作为前端服务器,通过mod_jk模块与后端的Tomcat应用服务器进行...

Global site tag (gtag.js) - Google Analytics