`
anreddy
  • 浏览: 99839 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Apache2.2.X+Tomcat5.x使用mod_proxy方式集群

阅读更多

使用Apache做集群及负载均衡的方式一般有两种:mod_jk和mod_proxy两种。

    本人尝试过用mod_jk的方式配置过,但都不是很成功,apache2.2.x后已经将mod_proxy集成进来,无需使用其他软件、插件,通过配置就可以完成与tomcat的集成。下面讲述以mod_proxy方式配置情况: 

    环境:windowsxp,apache2.2.x,tomcat5.5,jdk1.5.0,tomcat放在同一台机器上,3份。

    安装过程略。。。,以下讲述配置过程 

    1、Apache配置

    1.1 httpd.conf配置

     修改APACHE的配置文件D:\Apache \conf\httpd.conf
将以下Module的注释去掉,这里并没有使用mod_jk.so进行apache和tomcat的链接,从2.X以后apache自身已集成了mod_jk.so的功能。只需简单的把下面几行去掉注释,就相当于以前用mod_jk.so比较繁琐的配置了。这里主要采用了代理的方法,就这么简单。 
   

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

 

    再找到加上index.jsp修改成,我项目的默认欢迎页面是index.jsp,记得与前一个之前用空隔分隔。 
   

<IfModule dir_module>
    DirectoryIndex index.html index.jsp main.html
</IfModule>

 
   接着找到以下这两行,把下面一行的#号去掉,表示将 conf/extra/httpd-vhosts.conf配置文件加进来 

  

# Virtual hosts 
   Include conf/extra/httpd-vhosts.conf 

 
   最后,在文件最后加上以下内容,表示打开反向代理。 这个很重要,我的项目之前就是没有加上这几行,只能显示index.jsp页面的内容,登录成功后去不能正确跳转到相关页面,还是返回到index.jsp页面。反向代理可以基于一整个站点,也可以基于一个目录。 

 

ProxyRequests Off
<Proxy *:80> 
	Order deny,allow 
	Allow from all 
</Proxy> 

 
    2.2 http-vhost.conf配置

   修改conf/extra/httpd-vhosts.conf

   在文件最后加上以下代码
  

<VirtualHost *:80>
	ServerAdmin habibliu@gmail.com
	ServerName localhost
	ServerAlias localhost
	ProxyPass / balancer://cluster/ stickysession=JSESSIONID|jsessionid nofailover=On
	ProxyPassReverse / balancer://cluster/
	<proxy balancer://cluster>
		BalancerMember ajp://127.0.0.1:8009 loadfactor=1 route=s1
		BalancerMember ajp://127.0.0.1:8109 loadfactor=1 route=s2
		BalancerMember ajp://127.0.0.1:8209 loadfactor=1 route=s3
	</proxy>
</VirtualHost>

     

   说明:
   均衡器粘连会话名称。该值常常会被设置为类似JSESSIONID或者PHPSESSIONID之类的值,他依赖于支持会话的后端应用服务器。如果后端服务器使用不同的cookie名称或者URL编码的ID(像servlet容器),使用|来分开他们。第一个部分针对cookie,第二个针对路径。
        每次请求都按照负载均衡配置的节点次序依次请求到不同的Tomcat上。尤其是当我们通过jvmRoute 和route 做了绑定之后,信息更加准确。但是,仔细观察,每次请求的SessionID都是不一样! 对于纯Web应用,尤其是依靠SessionID区分唯一用户的应用,这将是一场噩梦——解决了服务器压力均衡问题,却带来了SessionID不唯一问题!这就需要SessionID绑定,或者说叫做“会话复制”。 stickySession 粘性会话,根据这一属性,浏览器将通过cookie绑定SeesionID。如果这个时候再次访问http://localhost/zlex ,你会发现,页面不会来回跳转了!

     引用:     

sticky模式
利用负载均衡器的sticky模式的方式把所有同一session的请求都发送到相同的Tomcat节点。这样不同用户的请求就被平均分配到集群 中各个tomcat节点上,实现负载均衡的能力。这样做的缺点是没有灾难恢复的能力。一旦一个节点发生故障,这个节点上所有的session信息全部丢 失;
同一用户同一session只和一个webServer交互,一旦这个webserver发生故障,本次session将丢失,用户不能继续使用 !
   BalancerMember 是负载均衡参与的成员定义,与tomcat的ajp协议通讯。上面红色的端口号分别是三个tomcat的conf/server.xml中的配置的AJP/1.3协议连接器,由于在同一台机器上部署,所以三个tomcat中的这个端口都要改成不一样的,我这里分别改成8009,8109,8209。紧接着是route设置,值与每个tomcat的配置对应上,下面会说明。
   2、Tomcat的配置说明
   1、server.xml配置
        修改%TOMCAT_HOME%\conf\server.xml
       由于三个tomcat都部署在一台机器上,所以相关会引起冲突的端口都要改,分别是:
       shutdow,http connector,ajp connector,以下是三个tomcat server.xml文件中三个端口的配置清单:
       tomcat s1:

      

<Server port="8905" shutdown="SHUTDOWN" debug="0">
....
 <Connector port="9000"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               debug="0" connectionTimeout="20000" 
               disableUploadTimeout="true" />
....
 <Connector port="8009" 
               enableLookups="false" redirectPort="8443" debug="0"
               protocol="AJP/1.3" />

 
   Tomcat s2 
  

<Server port="8915" shutdown="SHUTDOWN" debug="0">
....
 <Connector port="9100"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               debug="0" connectionTimeout="20000" 
               disableUploadTimeout="true" />
....
 <Connector port="8109" 
               enableLookups="false" redirectPort="8443" debug="0"
               protocol="AJP/1.3" />

 
    Tomcat s3

   

<Server port="8925" shutdown="SHUTDOWN" debug="0">
....
 <Connector port="9200"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               debug="0" connectionTimeout="20000" 
               disableUploadTimeout="true" />
....
 <Connector port="8209" 
               enableLookups="false" redirectPort="8443" debug="0"
               protocol="AJP/1.3" />

 


   以上的AJP端口与apache http-vhost.conf中的BalancerMember 的ajp端口对应。
    接着找到的,加上jvmRoute="xx"属性,xx要与apache http-vhost.conf中的BalancerMember 的ajp route定义一致。以下是三个tomcat的engine设置 

    Tomcat s1 
   

 <Engine name="Catalina" defaultHost="localhost" debug="0" jvmRoute="s1">

 
   Tomcat s2

   

 <Engine name="Catalina" defaultHost="localhost" debug="0" jvmRoute="s2">

 
     Tomcat s3    
   

 <Engine name="Catalina" defaultHost="localhost" debug="0" jvmRoute="s3">

 
    接着到到Cluster配置段,将这一段的注释符号去掉,如下: 
 

<Cluster className="org.apache.catalina.cluster.tcp.SimpleTcpCluster"
                 managerClassName="org.apache.catalina.cluster.session.DeltaManager"
                 expireSessionsOnShutdown="false"
                 useDirtyFlag="true">

            <Membership 
                className="org.apache.catalina.cluster.mcast.McastService"
                mcastAddr="228.0.0.4"
                mcastPort="45564"
                mcastFrequency="500"
                mcastDropTime="3000"/>

            <Receiver 
                className="org.apache.catalina.cluster.tcp.ReplicationListener"
                tcpListenAddress="auto"
                tcpListenPort="4001"
                tcpSelectorTimeout="100"
                tcpThreadCount="6"/>

            <Sender
                className="org.apache.catalina.cluster.tcp.ReplicationTransmitter"
                replicationMode="pooled"/>

            <Valve className="org.apache.catalina.cluster.tcp.ReplicationValve"
                   filter=".*\.gif;.*\.js;.*\.jpg;.*\.htm;.*\.html;.*\.txt;"/>
                   
            <Deployer className="org.apache.catalina.cluster.deploy.FarmWarDeployer"
                      tempDir="/tmp/war-temp/"
                      deployDir="/tmp/war-deploy/"
                      watchDir="/tmp/war-listen/"
                      watchEnabled="false"/>
        </Cluster>

             

     注意:如果同一台设备上有多个tomcat,这个tcpListenPort就中设置不同的端口号,以免冲突。
    所以三个tomcat的这个端口分别是4001、4002、4003。
   
3、其它配置
    执行以上步骤基本已经可以成功了,当然还要设置你的webapp,这个不在此累赘了。当然最好还要设置JAVA_HOME,PATH,CLASSPATH这些环境变量,比如将%JAVA_HOME%\lib\tools.jar和%JAVA_HOME%\lib\rt.jar两个包加到类路径内。
   还有<distributable/>元素,有些文章说还要将元素加到项目的web.xml文件中,我也加了,但没有验证它的存在对运行有没有影响,大家如果碰到问题,也不防加上。

 

  参考文章: 

 

  http://www.cncms.com.cn/apache/6991.htm

 

  http://www.360doc.com/content/11/0418/13/1542811_110496946.shtml

分享到:
评论

相关推荐

    Apache和Tomcat集群配置步骤(Apache2.2,Tomcat6.0).

    ### Apache和Tomcat集群配置详解 #### 一、软件准备 在进行Apache和Tomcat集群配置之前,首先需要准备所需的软件资源。 - **Apache 2.2**: - Windows平台: 从官方网站 [http://httpd.apache.org/download.cgi]...

    Apache2.2+tomcat7+jk+jdk1.6

    5. 设置粘性session,可能需要配置负载均衡器或者在Apache中使用mod_proxy_ajp模块。 通过以上配置,我们可以创建一个能够处理高并发、提供session一致性且易于扩展的Web服务架构。这种架构对于大型网站或企业级...

    基于mod_proxy+Apache_2.2.16+Tomcat_7的负载均衡与集群配置

    基于mod_proxy+Apache_2.2.16+Tomcat_7的负载均衡与集群配置

    Apache2.2 tomcat-6.0.18负载均衡与集群

    总结起来,"Apache2.2 tomcat-6.0.18负载均衡与集群"是一个复杂但关键的架构,涉及到Apache的mod_proxy和mod_jk模块,以及Tomcat的集群配置。这个主题涵盖了如何利用这些工具和技术创建一个高可用、高性能的Web服务...

    Mod_Proxy+Apache+Tomcat负载均衡与集群配置

    本文档详细介绍了使用mod_proxy模块与Apache和Tomcat结合来实现负载均衡与集群配置的过程。配置前需要准备相应的环境,包括安装JDK、Apache HTTP Server和Tomcat服务器。本文档使用了Tomcat 7.0.2作为应用服务器,并...

    tomcat7+apache2.2做集群

    本教程将深入探讨如何使用Apache HTTP Server 2.2.4与Tomcat 7.0.70搭建一个集群环境,实现负载均衡。这个配置能够确保服务的稳定性和扩展性,当单个服务器无法满足需求时,可以将流量分散到多个服务器上,从而提高...

    apache +tomcat集群 ajp_proxy实际操作

    ### Apache + Tomcat集群与AJP Proxy实际操作详解 #### Apache服务器安装与配置 Apache作为一款广泛使用的开源HTTP服务器,在企业级应用环境中扮演着至关重要的角色。尤其在与Tomcat结合形成集群时,Apache能够有效...

    Apache2.2+tomcat6.0搭建负载均衡服务器

    - 开启Apache的负载均衡模块,取消`mod_proxy`及相关子模块的注释,如`mod_proxy_ajp`和`mod_proxy_balancer`。 - 配置DirectoryIndex以支持JSP文件,允许用户访问JSP页面作为首页。 - 在httpd.conf文件底部添加...

    Apache2.2 tomcat6集群练习

    Apache2.2与Tomcat6集群配置教程 在IT行业中,服务器集群是一种常见的技术,用于提高系统的可用性和可扩展性。本教程将详细介绍如何在Apache2.2与Tomcat6环境下搭建集群,以实现负载均衡和高可用性。Apache作为前端...

    apache2.4+tomcat7集群

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

    Apache+多个Tomcat 服务器集群配置

    将以下Module的注释去掉,这里并没有使用mod_jk.so进行apache和tomcat的链接,从2.X以后apache自身已集成了mod_jk.so的功能。只需简单的把下面几行去掉注释,就相当于以前用mod_jk.so比较繁琐的配置了。这里主要采用...

    windows apache http 2.2+tomcat6.0.29

    安装完成后,我们需配置Apache的代理模块(通常为mod_proxy),使得Apache能够将动态请求转发给Tomcat处理。 1. **安装mod_proxy**:在Apache的安装目录下的`modules`文件夹中找到`mod_proxy.so`(对于Windows可能...

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

    在Windows环境下,Apache2.2和Tomcat6的组合是一个常见的Web服务器架构,用于搭建集群、实现负载均衡和处理session共享。Apache作为前端反向代理服务器,负责分发请求到后端的多个Tomcat实例,以提高应用的可用性和...

    apache-httpd-2.2.21-win32-x86-no_ssl.msi+tomcat7.0.11

    在Tomcat集群中,通常会使用Apache HTTP Server作为前端代理或负载均衡器,通过mod_proxy模块将HTTP请求转发到不同的Tomcat实例。这样做的好处包括: 1. **负载均衡**:通过Apache,可以将请求智能地分发到不同的...

    搭建apache(静态资源)+tomcat(动态网页)负载均衡服务器集群.zip_tomcat分布式

    3. **中间件配置**:在Apache中配置连接Apache和Tomcat集群的中间件,通常使用mod_jk或mod_proxy_ajp模块,它们可以将来自Apache的请求转发到适当的Tomcat实例。 4. **负载均衡策略**:定义负载均衡策略,常见的有...

    apache+tomcat集群.doc

    - **集群模式**: 使用mod_proxy模块实现负载均衡 - **环境**: 本案例基于本地环境配置,若需要远程访问,请将`localhost`替换为实际IP地址。 #### 安装准备 1. **下载Apache**: 从官网 ...

    Apache2.2与tomcat7 集群配置

    配置Apache2.2与Tomcat7集群的过程包括安装和配置mod_jk,修改Apache和Tomcat的配置文件,以及测试集群功能。通过这种方式,我们可以构建一个可伸缩、可靠的Web服务架构,以应对高流量和复杂业务场景。 总结来说,...

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

    - 在Apache的配置中,使用`&lt;Proxy&gt;`指令定义后端Tomcat服务器池。 - 使用`BalancerMember`指令添加每个Tomcat实例的URL,指定权重(如果需要)。 - 开启轮询或基于响应时间的负载均衡策略。 4. **测试和监控**:...

Global site tag (gtag.js) - Google Analytics