`
ysa198584
  • 浏览: 36937 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

多个tomcat配置多个系统

 
阅读更多
最近在服务器上需要配置多个应用,使用apache+tomcat搭配,采用mod_jk进行分配。
刚开始在同一个tomcat中配置了多个应用,后来感觉效果不好,改为每个tomcat对应一个应用。搜索资料如下:
apache2.2与tomcat集成(可以多个tomcat)
1. 安装apache2.2 参见:http://ttitfly.javaeye.com/admin/show/127337

2.需求概况:
有2个服务:www.test.com, bbs.test.com。分别对应2个tomcat下的2个web应用。由apache httpd作为互联网接入服务器,在80端口接收对这2个服务的请求。apache httpd再将这2个请求分别对应到不同的后端web服务器(Tomcat)处理。

3.配置域名映射到本机即127.0.0.1,同时配置service域名


127.0.0.1    localhost www.test.com www.service.test.com bbs.test.com bbs.service.test.com  
127.0.0.1    localhost www.test.com www.service.test.com bbs.test.com bbs.service.test.com


4. 分别在2个tomcat里分别部署一个非常简单的应用。

第一个tomcat :端口:8080

编辑$TOMCAT_HOME/conf/server.xml

添加一个Host
<Host name="www.service.test.com" unpackWARs="true" autoDeploy="true"  
xmlValidation="false" xmlNamespaceAware="false"/>  
<Host name="www.service.test.com" unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false"/>


再在$TOMCAT_HOME/conf/Catalina下建立一个目录:www.service.test.com
然后在www.service.test.com目录下建立一个ROOT.xml,内容为:


<Context docBase="/home/mahaibo/app/test"  
privileged="true" antiResourceLocking="false" antiJARLocking="false">   
</Context>  
<Context docBase="/home/mahaibo/app/test"
privileged="true" antiResourceLocking="false" antiJARLocking="false">
</Context>

docBase指向具体的项目路径

同理第二个tomcat(端口8088)也是一样的做法:

编辑$TOMCAT_HOME/conf/server.xml

添加一个Host:


<Host name="bbs.service.test.com" unpackWARs="true" autoDeploy="true"  
xmlValidation="false" xmlNamespaceAware="false"/>  
<Host name="bbs.service.test.com" unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false"/>



然后在$TOMCAT_HOME/conf/Catalina下建立一个目录:bbs.service.test.com

再在bbs.service.test.com目录下建立一个ROOT.xml,内容为:


<Context docBase="/home/mahaibo/app/bbs"  
privileged="true" antiResourceLocking="false" antiJARLocking="false">   
</Context>  
<Context docBase="/home/mahaibo/app/bbs"
privileged="true" antiResourceLocking="false" antiJARLocking="false">
</Context>


5. 分别启动tomcat,可以通过http://www.service.test.com:8080和http://bbs.service.test.com:8088访问

6. 配置apache httpd.conf文件。

找到apach/conf/httpd.conf文件,确认下面这些文字行前面没有"#"注释号:



LoadModule proxy_module modules/mod_proxy.so   
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so   
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so   
LoadModule proxy_connect_module modules/mod_proxy_connect.so   
LoadModule proxy_http_module modules/mod_proxy_http.so   
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so  
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so


并增加虚拟主机配置:


NameVirtualHost *:80  
<VirtualHost *:80>   
ServerName www.test.com   
ProxyIOBufferSize 8192  
ProxyRequests Off   
ProxyVia Full   
ProxyPass / http://www.service.test.com:8080/ smax=5 max=20 ttl=120 retry=300   
</VirtualHost>   
  
<VirtualHost *:80>   
ServerName bbs.test.com   
ProxyIOBufferSize 8192  
ProxyRequests Off   
ProxyVia Full   
ProxyPass / http://bbs.service.test.com:8088/ smax=5 max=20 ttl=120 retry=300   
</VirtualHost>  
NameVirtualHost *:80
<VirtualHost *:80>
ServerName www.test.com
ProxyIOBufferSize 8192
ProxyRequests Off
ProxyVia Full
ProxyPass / http://www.service.test.com:8080/ smax=5 max=20 ttl=120 retry=300
</VirtualHost>
<VirtualHost *:80>
ServerName bbs.test.com
ProxyIOBufferSize 8192
ProxyRequests Off
ProxyVia Full
ProxyPass / http://bbs.service.test.com:8088/ smax=5 max=20 ttl=120 retry=300
</VirtualHost>



7.启动apache


./<SPAN class=hilite1>apache</SPAN>ctl start 


./apachectl start


8 可以通过访问http://www.test.com和http://bbs.test.com来分别访问2个不同tomcat下的不同应用了。




apache+tomcat配置负载均衡的网站


1.   目标
使用 apache 和 tomcat 配置一个可以应用的 web 网站,要达到以下要求:

1、 Apache 做为 HttpServer ,后面连接多个 tomcat 应用实例,并进行负载均衡。

2、 为系统设定 Session 超时时间,包括 Apache 和 tomcat

3、 为系统屏蔽文件列表,包括 Apache 和 tomcat

2.   安装 tomcat
2.1. 下载,解压 tomcat
不要下载安装版 , 下载地址

http://tomcat.apache.org

2.2. 配置 tomcat
2.2.1.     配置 server 的关闭口
我们需要在一台机器上跑 2 个不同的 tomcat ,需要修改不同的 tomcat 的关闭口,避免出现端口被占用的情况。在 server.xml 中找到 server, 将:

<Server port="8005" shutdown="SHUTDOWN">

改为

<Server port="XXXX" shutdown="SHUTDOWN">

XXXX 在这里表示不同的端口:我的两个 tomcat 分别使用 8035 , 8045

注意:这里之所以要配置不同的 tomcat 关闭口,只是因为我们使用了多个 tomcat ,其实用一个 server 多个实例也可以。

2.2.2.     配置 service
我们需要对不同的 tomcat 的 service 取不同的名字,在 server.xml 中找到:

<Service name="Catalina">

改为:

<Service name="XXXX">

两个 service 分别为 tomcat6 和 tomcat5

2.2.3.     配置 Connector
这个部分主要是要改两个 Connector ,当然前提是你的 tomcat 只有两个 Connector 。

修改 ajp1.3 的端口:

找到: <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

改为: <Connector port="XXXX" protocol="AJP/1.3" redirectPort="8443" />

两个 Service 的 ajp/1.3 的端口分别为: 8019 , 8029

修改 http 的端口:

找到:

<Connector port="8080" protocol="HTTP/1.1"

               maxThreads="150" connectionTimeout="20000"

               redirectPort="8443" />

改为:

<Connector port="XXXX" protocol="HTTP/1.1"

               maxThreads="150" connectionTimeout="20000"

               redirectPort="8443" />

两个 Service 的 ajp/1.3 的端口分别为: 8060 , 8070

2.2.4.     配置 Engine
Engine 主要是配置 jvmRoute 属性,找到:

<Engine name="Catalina" defaultHost="localhost">

改为:

<Engine jvmRoute="XXXX" name="Catalina" defaultHost="localhost">

两个实例分别为: tomcat6 和 tomcat5.

2.2.5.     配置公用性 Context
如果有 Context 是多个系统公用的,比如图片等的存放地,可以做个配置:

在 Host 中增加:

<Context path="/image" docBase="D:"webRoot"image" debug="0" reloadable="false" crossContext="true">

</Context>

2.2.6.     屏蔽文件列表
打开 tomcat 目录下的 conf/web.xml ,

找到:

<servlet>

        <servlet-name>default</servlet-name>

        <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>

        <init-param>

            <param-name>debug</param-name>

            <param-value>0</param-value>

        </init-param>

        <init-param>

            <param-name>listings</param-name>

            <param-value>true</param-value>

        </init-param>

        <load-on-startup>1</load-on-startup>

    </servlet>

将 listings 参数改为 false;

2.3. 配置应用 (web.xml)
对系统应用做些控制。

配置 session 过期时间,大多数网站用户都只是做些浏览性的操作,为了减轻服务器负载压力,我们将 session 超时时间从默认的 30 分钟变为 5 分钟。

在 web 应用程序的 web.xml 中 servlet-mapping 之后增加如下一段:

<session-config>

    <session-timeout>5</session-timeout>

</session-config>

3.   安装 Apache
3.1. 下载、安装 Apache
下载地址 http://httpd.apache.org/download.cgi

下载后点击安装 msi 文件。

安装的时候没有什么特别需要注意的地方,按照默认就行了。是否安装为 service 看具体情况而定。

3.2. 下载、安装 Apache 、 tomcat 的 Connector
http://tomcat.apache.org/download-connectors.cgi

注意,很多网站上都介绍是 JK2 ,可能是觉得 JK2 比 JK 要新吧,其实 JK2 已经停止研发了,建议使用 jk1.2 。

下载压缩包,之后将 module 目录中的 mod_jk-apache****.so 文件放入 /module/ 目录下。

3.3. 配置 Apache ( httpd.conf )
3.3.1.     配置端口:
找到

Listen 80

改为

Listen **

当然如果不需要改的话,就不用改了。正常情况无须更改。

3.3.2.     配置 DocumentRoot
找到 DocumentRoot 段,将其改为:

DocumentRoot "E:/MyWebsite"

这里的 "E:/MyWebsite" 指的是你的 web 程序的根路径,视具体应用而定。

3.3.3.     配置 serverName
找到 serverName 这个段,将其配置为你的 ServerName

如果没有配置为域名,配为 IP 也可以,此处还不是很清楚,多虚拟主机的情况的配置。

3.3.4.     配置虚拟主机
<VirtualHost *:80>

    ServerAdmin flyffa@gmail.com

    DocumentRoot       E:/MyWebsite

    ServerName localhost

    DirectoryIndex index.html index.htm index.jsp

    ErrorLog logs/error_log

    CustomLog logs/access_log common

    ErrorDocument 404 /sys/logon.jsp

</VirtualHost>

3.4. 配置 JK 方式的负载均衡
3.4.1.     配置 module
我们需要与 tomcat 做连接,所以要把 tomcat 的 connector 的模块配置进去。

在 LoadModule 部分加入:

LoadModule jk_module modules/mod_jk-apache-2.0.55.so -加载模块

这个 so 是我下载的版本,个人可以根据自己下载的文件名加以配置

JkWorkersFile conf/workers.properties -指定 connector 的配置文件名称

JkLogFile logs/mod_jk.log -指定 connector 的日志文件名称

JkLogLevel info -指定 connector 的日志等级

3.4.2.     配置 worker 列表 (conf/workers.properties)
定义列表

worker.list=tomcat6,tomcat5,loadbalancer

定义一个名为 “loadbalancer” 的 worker

其作为对多个 Tomcat 进程的负载平衡使用:

worker.loadbalancer.type=lb

worker.loadbalancer.balanced_workers=tomcat5, tomcat6

( 负载平衡类型的 worker 并不与 Tomcat worker 通讯,它负责管理这些 Tomcat worker 。 )

定义多个 worker 列表

# Set properties for tomcat6 (ajp13)

worker.tomcat6.type=ajp13

worker.tomcat6.host=localhost

worker.tomcat6.port=8019

worker.tomcat6.lbfactor=50

worker.tomcat6.cachesize=10

worker.tomcat6.cache_timeout=600

worker.tomcat6.socket_keepalive=1

worker.tomcat6.reclycle_timeout=300

# Set properties for tomcat5 (ajp13)

worker.tomcat5.type=ajp13

worker.tomcat5.host=localhost

worker.tomcat5.port=8029

worker.tomcat5.lbfactor=50

worker.tomcat5.cachesize=10

worker.tomcat5.cache_timeout=600

worker.tomcat5.socket_keepalive=1

worker.tomcat5.reclycle_timeout=300

注意: lbfactor= 50 ( 当此 Tomcat worker 被用于一个负载平衡 worker 使用时,此属性将被使用。它定义了此 worker 的负载平衡权值。 )

cachesize= 10 ( 当在多线程的 web server (例如 apache2.0 、 IIS 、 Netscape )中使用 JK 时,此属性是有效的。如果将 cachesize 的值设置为较高的值,这些支持多线程的 web server 将获得很好的处理能力。如果此属性不被设置,则连接 cache 特性将失效。 )

3.4.3.     配置 Apache 到 tomcat 的桥接
在 DocumnetRoot 片段下加入

JkMount /*.jsp tomcat6

JkMount /*.do tomcat6

JkMount /*Servlet tomcat6

这里只是简单的将 apache 的请求转到其中的一个 tomcat 中,形成桥接,至于负载均衡的时候,就无须进行这步操作,直接启动负载均衡。启动负载均衡见下一节。

3.4.4.     启动负载均衡
在 DocumnetRoot 片段下加入

JkMount /*.jsp loadbalancer

JkMount /*.do loadbalancer

JkMount /*Servlet loadbalancer

-指定对所有的请求启动负载均衡,这里的 loadbalancer 是定义的 worker 的名字

这里我在配置的时候犯了两个错误:

第一是没有配置 JkWorkersFile conf/workers.properties ,以为 Apache 会自动认识(其实 apache 是自动产生了一个叫做 ajp13 的 worker ,指向本机的 8009 端口)。

第二是以为 JkMount 语句中出现 loadbalancer,ajp13 之类的是系统设定的东西,其实都是在 workers.properties 文件中定义的,结果出现名字不匹配的情况。后来配置了 JkLogFile logs/mod_jk.log 之后看到错误日志才明白。

3.5. 配置 Proxy 方式的负载均衡
使用 Apache2.1 以上的版本,就可以用 mod_proxy_ajp 来完成负载均衡的配置,不过到目前为止,没有看到如何让 Apache 负责静态部分, tomcat 负责动态部分的配置方式,只能用 path 进行区分分发请求。如:在虚拟主机的配置中增加:

ProxyPass / ajp://localhost:8019/

ProxyPassReverse / ajp://localhost:8019/

而形如:

ProxyPass /*.jsp ajp://localhost:8019/

ProxyPassReverse /*.jsp ajp://localhost:8019/

这样的配置是不能通过的。
分享到:
评论

相关推荐

    Windows nginx +多个 tomcat 配置

    Windows nginx +多个 Tomcat 配置 Windows nginx +多个 Tomcat 配置是一种常见的服务器架构,用于解决网站高并发的问题。通过使用 nginx 作为反向代理服务器,并将多个 Tomcat 服务器作为后端服务器,可以实现负载...

    一台服务器多个tomcat配置

    在一台服务器上配置多个 Tomcat 服务器时,往往会碰到冲突。为了避免这些冲突,需要修改 Tomcat 配置文件。下面是详细的配置过程: 一、下载和解压 Tomcat 首先,需要下载 Tomcat 的安装包,例如 Tomcat-6.0.37。...

    一个tomcat配置多个端口运行不同项目

    通过这种方式,我们可以有效地利用一个Tomcat实例来托管多个项目,每个项目绑定到不同的端口,降低了资源消耗,同时也便于管理和扩展。这在处理多个独立项目或测试环境时非常有用。记住,每次修改配置后,都需要重新...

    Myeclipse配置多个Tomcat

    MyEclipse 配置多个 Tomcat 在 MyEclipse 中配置多个 Tomcat 是一种非常实用的方法尤其是在开发多个项目时,避免了每个项目之间的冲突和配置修改的烦恼。下面我们将一步步地讲解如何在 MyEclipse 中配置多个 Tomcat...

    ubuntu配置多个tomcat方法

    本文将详细介绍如何在Ubuntu系统下配置并运行多个Tomcat服务。 #### 二、配置多个Tomcat实例的基本原理 为了确保各个Tomcat实例能够独立运行且互不影响,我们需要为每个实例设置不同的工作目录,并通过修改相应的...

    nginx-配置多个tomcat

    总结来说,通过Nginx配置多个Tomcat,我们可以实现对多个Web应用程序的集中管理,提高系统的可扩展性和可用性。这种架构常见于大型Web服务部署,可以有效地分摊请求负载,保证服务的稳定性和性能。在压缩包文件`...

    MyEclipse配置多个Tomcat

    本篇文章将详细讲解如何在MyEclipse集成开发环境中配置多个Tomcat服务器,以满足多版本并行运行的需求。 首先,理解MyEclipse是基于Eclipse的一款强大的Java EE集成开发环境,它内置了多种服务器适配器,包括Tomcat...

    linux安装多个tomcat

    在Linux系统中安装多个Tomcat服务器是常见的需求,特别是在开发和测试环境中,为了隔离不同的项目或者版本,每个项目可能需要独立的Tomcat实例。本文将详细介绍如何在Linux上安装和管理多个Tomcat。 首先,我们需要...

    tomcat配置多个程序的设置

    当需要在一个Tomcat实例上运行多个程序时,这通常是为了节省系统资源或便于集中管理。以下将详细介绍如何配置Tomcat来运行多个程序以及相关的内存设置。 1. **部署多个应用程序** 在Tomcat的`webapps`目录下,每个...

    tomcat配置入门和配置多个项目

    ### Tomcat配置入门与配置多个项目详解 #### Tomcat简介 Tomcat是一个开源的轻量级Web应用服务器,因其小巧灵活、易于部署等特点被广泛应用于Java Web应用的开发与测试阶段。它支持Servlet和JSP等Java Web技术,...

    MyEclipse配置多个tomcat

    默认的MyEclipse仅能配置3-4个tomcat,很多时候,需要在MyEclipse继承多个tomcat,方便开发、部署项目; 在此提供了MyEclipse中配置tomcat的步骤,图文并茂,理论上可以配置无限个tomcat,同时提供了两个已经配置好...

    同时配置多个Tomcat服务器

    ### 同时配置多个Tomcat服务器 在现代的软件开发环境中,经常会出现需要在同一台机器上同时运行多个Tomcat服务器的情况。例如,在进行测试、开发或部署不同版本的应用程序时,这种需求尤为常见。本文将详细介绍如何...

    xp/win7上配置多个tomcat

    在IT领域,特别是对于Web应用开发与部署而言,配置多个Tomcat服务器实例是常见的需求,尤其是在Windows XP或Win7这样的操作系统环境下。本文将深入探讨如何在XP或Win7系统上成功配置并运行多个Apache Tomcat服务器,...

    服务器部署多个tomcat方法

    标题"服务器部署多个tomcat方法"暗示我们将探讨如何在单个服务器上配置和管理多个独立运行的Tomcat实例,以实现应用隔离、负载均衡或服务多样化。这通常涉及到配置、端口管理、目录结构和启动脚本的调整。 首先,...

    多个Tomcat配置

    以下是关于"多个Tomcat配置"的相关知识点: 1. **多实例配置**:在一台服务器上配置多个Tomcat实例,首先需要下载并解压多个Tomcat安装包,每个实例对应一个解压后的目录。每个目录都应该有自己的`conf`、`webapps`...

    同时部署多个Tomcat

    2. 负载均衡:通过配置负载均衡器,可以将请求分发到多个Tomcat实例,提高系统处理能力。 3. 故障转移:当某个Tomcat实例出现问题时,其他实例仍能继续提供服务,实现高可用性。 4. 开发与生产环境:开发和测试环境...

    tomcat部署多个项目

    当需要在同一台服务器上部署多个项目时,合理地配置 Tomcat 变得尤为重要。本文将详细介绍在 Tomcat 上部署多个项目的方法及其操作步骤,并对不同的部署方式进行对比分析。 #### 二、部署方式概述 在 Tomcat 上...

    IIS整合多个tomcat

    在IT行业中,尤其是在Web服务领域,常常...总之,IIS整合多个Tomcat是一项复杂但重要的任务,涉及到网络通信、服务器配置、负载均衡等多个方面。理解并掌握这些知识点,能够帮助我们构建出高效、稳定的Web服务架构。

    一个电脑配置多个tomcat

    以下是配置一台电脑运行多个Tomcat的详细步骤和相关知识点: 1. **选择合适的Tomcat版本**: - 使用压缩版的Tomcat而不是安装版,因为安装版的Tomcat可能会默认设置全局环境变量,导致多实例冲突。压缩版则允许...

    同一服务器部署多个Tomcat方法.docx

    ### 同一服务器部署多个Tomcat的方法 在实际的应用场景中,有时我们可能...通过上述步骤,我们不仅可以在同一台服务器上部署多个Tomcat实例,还可以让它们在系统启动时自动运行,极大地提高了系统的灵活性和可用性。

Global site tag (gtag.js) - Google Analytics