`

apache分发不同tomcat的方法(非集群)

阅读更多

场景:

    现有一台服务器部署了两个Tomcat,一个端口8080,另一个端口8088。

    并且注册了两个域名都指向了这台服务器。

    改造前,只能够使用www.cooltain1.com:8080访问tomcat1, 使用www.cooltain2.com:8088访问tomcat2。

    这种带端口的访问方式很不友好。

 

希望改造之后:

    访问时不再需要带端口,

    能够www.cooltain1.com 访问tomcat1

    能够www.cooltain2.com 访问tomcat2

 

 

1、配置Tomcat01的 conf/server.xml

 

    <Connector executor="tomcatThreadPool"
               port="8080" protocol="HTTP/1.1" 
               connectionTimeout="20000"  redirectPort="8443" />

    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
    此处HTTP/1.1还是按原来的方式配置,这里要注意的只是AJP/1.3的配置,

    tomcat01的AJP/1.3协议配置的端口是8009

 

2、配置Tomcat02的 conf/server.xml

 

    <Connector executor="tomcatThreadPool"
               port="8088" protocol="HTTP/1.1" 
               connectionTimeout="20000"  redirectPort="8443" />

    <Connector port="8109" protocol="AJP/1.3" redirectPort="8443" />
    tomcat02的AJP/1.3协议配置的端口是8109
 
 

(注:以下步骤的3~9来自于原贴http://blog.csdn.net/grubbyfan/article/details/3321190,并结合本文进行一下修改)

 

3. 下载并安装Apache,下载地址:Apache下载

    (本示例使用的版本是httpd-2.2.25-win32-x86-no_ssl.msi)

    注:apache运行时,务必使用80端口。

 

4. 下载mod_jk,下载地址:mod_jk下载

    注意:下载的mod_jk版本要与Apache版本对应。    

  (本示例使用的版本是tomcat-connectors-1.2.40-windows-i386-httpd-2.2.x.zip)

    

 

5. 解压mod_jk,得到mod_jk.so文件,复制到Apache的modules目录下。

 

6. 修改Apache的conf目录下的httpd.conf文件,搜索“LoadModule”配置项,并在最后一条LoadModule配置项的后面加上下面的代码: 

  1. # 加载 mod_jk 模块
  2. LoadModule jk_module modules/mod_jk.so
  3.  
  4. # 指定 mod_jk 模块所需的配置文件 workers.properties 的位置
  5. JkWorkersFile conf/workers.properties
  6.  
  7. # 指定 mod_jk 模块的日志文件位置
  8. JkLogFile logs/mod_jk.log
  9.  
  10. # 指定 mod_jk 模块的日志级别
  11. JkLogLevel warn
  12.  
  13. # 指定 mod_jk 模块的日志格式
  14. JkLogStampFormat "[%a %b %d %H:%M:%S %Y]

 

7. 在conf目录下创建workers.properties文件,内容如下:

  1. # Define 2 real worker using ajp13
  2. worker.list = tomcat01,tomcat02
  3.  
  4. # Set properties for tomcat01 (ajp13)
  5. worker.tomcat01.type = ajp13
  6. worker.tomcat01.host = 127.0.0.1
  7. worker.tomcat01.port = 8009
  8. worker.tomcat01.lbfactor = 50
  9. worker.tomcat01.cachesize = 10
  10. worker.tomcat01.cache_timeout = 600
  11. worker.tomcat01.socket_keepalive = 1
  12. worker.tomcat01.recycle_timeout = 300
  13.  
  14. # Set properties for tomcat02 (ajp13)
  15. worker.tomcat02.type = ajp13
  16. worker.tomcat02.host = 127.0.0.1
  17. worker.tomcat02.port = 8109
  18. worker.tomcat02.lbfactor = 50
  19. worker.tomcat02.cachesize = 10
  20. worker.tomcat02.cache_timeout = 600
  21. worker.tomcat02.socket_keepalive = 1
  22. worker.tomcat02.recycle_timeout = 300

注:在这里tomcat01与tomcat02配置的端口就是前面配置好的。


8. 在httpd.conf文件中增加虚拟主机配置

  1. NameVirtualHost *:80
  2.  
  3. <VirtualHost *:80>    
  4.     ServerName www.cooltain1.com  
  5.     ServerAlias www.cooltain1.com    
  6.     ErrorLog logs/aaa-error_log.txt  
  7.     CustomLog logs/aaa-access_log.txt common  
  8.     JkMount /* tomcat01 
  9. </VirtualHost>
  10.  
  11. <VirtualHost *:80>    
  12.     ServerName www.cooltain2.com  
  13.     ServerAlias  www.cooltain2.com    
  14.     ErrorLog logs/bbb-error_log.txt  
  15.     CustomLog logs/bbb-access_log.txt common  
  16.     JkMount /* tomcat02  
  17. </VirtualHost>

注意一:NameVirtualHost 指定虚拟主机所使用的IP地址或域名,但是最好是IP地址。使用基于域名的虚拟主机时,NameVirtualHost是必要的指令。NameVirtualHost可以定义多个。 

注意二:所有符合NameVirtualHost或<VirtualHost>标签定义的请求,都会被作为虚拟主机处理,而主服务器将不理会。NameVirtualHost定义了而<VirtualHost>标签没有定义的的请求,服务器会找不到相应的虚拟主机而将无法处理。 所以每个NameVirtualHost定义的参数至少要有一个<VirtualHost>相匹配。

注意三:如果设置NameVirtualHost 或<VirtualHost>为*:80的话,所有针对80端口的请求,都会被虚拟主机处理,请求会根据域名指向某个虚拟主机。如果有来自 80端口的请求,而所请求的域名没有被配置为虚拟主机,那将指向第一个虚拟主机。这样主服务器将无法收到来自80端口的任何请求。为此也要为主服务器配置一个虚拟主机。

注意四:JkMount /* tomcat01的意思是将该虚拟主机下的请求都转发给tomcat01这个worker(上面workers.properties中配置的)对应的应用

 

 

9、重启Apache, 就可以使用 www.cooltain1.com来访问tomcat01 , www.cooltain2.com访问tomcat02.

 

(注:上面步骤的3~9来自于原贴http://blog.csdn.net/grubbyfan/article/details/3321190,并结合本文进行一下修改

 

 

 

附录:我现在还没有服务器,如何在本机做验证?

 

     如果是window,打开文件 "C:\WINDOWS\system32\drivers\etc\hosts

 

在文件未尾追加下面配置

 

127.0.0.1 www.cooltain1.com
127.0.0.1 www.cooltain2.com
 大概意思是,将访问www.cooltain1.com或www.cooltain2.com指向127.0.0.1(也就是本机啦)
有关“hosts”文件更详尽的信息,请自行百度啦~
 
 
分享到:
评论

相关推荐

    Apache2.4+Tomcat7服务器集群配置及软件.rar

    本资料包“Apache2.4+Tomcat7服务器集群配置及软件.rar”提供了详细的步骤和实例,帮助读者掌握如何配置这种服务器集群。 Apache2.4是Apache HTTP Server的最新版本之一,它提供了更好的性能、安全性以及更多的模块...

    apache2.4+tomcat7集群

    Apache 2.4 和 Tomcat 7 集群配置是一种常见的Web服务器和应用服务器部署方式,用于提高网站和应用程序的可伸缩性和高可用性。在Windows 7环境下搭建这样的集群,我们可以实现负载均衡、故障转移等功能,以确保服务...

    Apache2.2与tomcat7 集群配置

    在Apache和Tomcat的集群配置中,这意味着请求可以被分发到多个Tomcat实例,每个实例独立处理请求,提高整体性能。 3. **负载均衡**:通过mod_jk,我们可以设置策略来决定如何将请求分发到不同的Tomcat实例,如轮询...

    Apache2.4+tomcat7集群

    4. 负载均衡策略:配置Apache的负载均衡策略,如轮询、最少连接数等,以决定如何将请求分发到不同的Tomcat服务器。 5. 配置session复制或粘滞会话:保持用户会话在集群中的连续性,可以通过session复制或者使用粘滞...

    apache与tomcat负载集群的实现

    在Apache与Tomcat的组合中,Apache可以作为反向代理服务器,根据预设的策略(如轮询、最少连接数或IP哈希)将请求分发到不同的Tomcat实例。这样,当某个Tomcat实例负载过高时,其他实例可以接手处理,提高整体系统的...

    apache2 JK tomcat6 集群 负载均衡

    在Apache2和Tomcat6的环境下,我们可以利用Apache的mod_jk模块来实现这种集群和负载均衡。 1. **mod_jk模块**:这是Apache的一个模块,负责与Tomcat之间的通信,它提供了AJP(Apache JServ Protocol)协议,允许...

    Apache+Tomcat+Linux集群和负载均衡

    - 通过浏览器访问`http://172.16.116.1/index.jsp`,检查是否能够成功访问,并观察日志文件确认请求是否被正确地分发至Tomcat集群中的不同节点。 #### 四、注意事项 1. **权限问题**: 确保所有操作均以具有足够...

    Apache负载均衡 Tomcat6的集群和session的复制

    在IT行业中,尤其是在服务器端应用部署与优化领域,Apache负载均衡和Tomcat集群是两个非常重要的概念。Apache作为一款广泛应用的Web服务器,可以利用其强大的负载均衡能力分发请求到多个后端服务器,如Tomcat,以...

    apache 和 tomcat 集成、集群

    **Apache和Tomcat集群** 1. **集群的目的**: 集群是为了提高可用性和性能,通过多个服务器分担工作负载,当单个节点出现故障时,其他节点可以接管服务,确保业务连续性。 2. **负载均衡**: 负载均衡器可以是硬件...

    Apache+Tomcat集群

    Apache+Tomcat集群是一种常见的Web服务器和应用服务器集群架构,用于提高网站的可用性和可扩展性。Apache作为前端服务器,负责接收客户端的HTTP请求,并根据配置的负载均衡策略将这些请求转发给后端的多个Tomcat实例...

    结合Apache和Tomcat实现集群和负载均衡

    然后访问部署在Tomcat上的Web应用程序,观察请求是否能够被正确地分发到不同的Tomcat实例上。可以通过日志文件或监控工具来验证负载均衡的效果。 #### 六、总结 通过结合Apache和Tomcat实现集群与负载均衡,不仅...

    Windows下Apache2.2+Tomcat6配置集群、负载均衡、session共享

    然后,**集群配置** 的目标是让Apache将请求分发到不同的Tomcat实例。这通常通过在Apache的httpd.conf或虚拟主机配置文件中添加以下内容来实现: ```apacheconf BalancerMember ...

    Apache + Tomcat 实现简单集群

    实现Apache和Tomcat集群的关键组件是Apache的mod_jk模块。mod_jk是Apache的负载均衡模块,它负责与Tomcat之间的通信。通过JK(Jakarta Keeper)模块,Apache可以监控Tomcat实例的状态,动态调整请求分发策略。以下是...

    apache2.2+tomcat6集群配置

    4. **Tomcat集群配置** - 需要在每台Tomcat服务器的`conf/server.xml`中配置Engine、Host和Context,以便支持集群环境。这通常涉及到定义一个`Cluster`元素,以及设置`sessionIDManager`和`Manager`。 - 同时,每...

    Linux下通过Apache搭建Tomcat集群

    在Linux环境中,通过Apache HTTP服务器(简称Apache)搭建Tomcat集群是一种常见的高可用性和负载均衡配置方式。Apache作为反向代理服务器,可以将用户的请求分发到多个Tomcat实例上,从而实现应用服务的扩展和容错。...

    apache+tomcat配置集群文档及安装资源包

    这个压缩包中的“apache配置集群”文件可能包含了具体的配置示例、教程或者脚本,可以帮助你更深入地理解和实践Apache+Tomcat集群的配置。根据实际情况调整这些配置,可以创建一个高效、可靠的Web服务集群。

    apache+tomcat+jk集群

    在本案例中,Apache作为前端服务器,负责接收客户端的请求并根据配置将这些请求分发到后端的Tomcat服务器集群。 ### Tomcat的角色 Tomcat是由Apache软件基金会的Jakarta项目开发的一款开源Servlet容器,主要用于...

Global site tag (gtag.js) - Google Analytics