`
cq_charlie
  • 浏览: 8766 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
文章分类
社区版块
存档分类
最新评论

答复: Apache与Tomcat搭建集群

 
阅读更多
crane.ding 写道
       早前就解了Apache和Tomcat可以搭建集群,可以负载均衡,升级就不需要停交易,真是强大。昨晚看了google reader的收藏又再次看到这篇文章,于是今天在星巴克研究了一把,发现真的很强大,负载均衡、session复制都可以做到,以后再也不用为升级系统而烦恼了。
       下面就来讲讲是搭建集群的过程,首页需要下载apahce和tomcat(当然需要安装jdk,这就不多讲了,大家应该懂得),本次实践我是在windows系统的环境下进行的,apache是2.2.21版本,tomcat是7.0.16和7.0.23两个版本。
       首先讲讲tomcat需要配置的文件,假设Tomcat 7.0.16为服务器A,Tomcat 7.0.23为服务器B。注意如果你的Tomcat都是放在同一台机子上,那你要修改端口,确保端口不要冲突。
服务器A的server.xml配置文件中的Engine节点中新增jvmRoute属性,值可以自己定义,例如jvm1,同时新增Cluster节点的所有内容,如果tomcat是在同一台机子的就需要注意Receiver节点的port属性不能冲突,例如:4000
服务器A的server.xml配置文件
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />

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

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

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" hannelSendOptions="8">
      	<Manager className="org.apache.catalina.ha.session.DeltaManager" expireSessionsOnShutdown="false" notifyListenersOnReplication="true" />
      	
      	<Channel className="org.apache.catalina.tribes.group.GroupChannel">  
             <Membership className="org.apache.catalina.tribes.membership.McastService" address="228.0.0.4" port="45564" frequency="500" dropTime="3000"/>  
             <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver" address="auto"  
                       port="4000"
                       autoBind="100"
                       selectorTimeout="5000"
                       maxThreads="6" />
  
             <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
               <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
             </Sender>
             <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
             <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
             
             <Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
                  filter=""/>
           <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>
  
           <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
                     tempDir="/tmp/war-temp/"
                     deployDir="/tmp/war-deploy/"
                     watchDir="/tmp/war-listen/"
                     watchEnabled="false"/>
  
           <ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>
           <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
           </Channel>
      </Cluster>
......

</Engine>

服务器B的server.xml配置文件,其中不同的是8180、8109和4001的几个端口的修改和jvmRoute值的不同,其它都一样
<Connector port="8180" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />

<Connector port="8109" protocol="AJP/1.3" redirectPort="8443" />

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

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" hannelSendOptions="8">
      	<Manager className="org.apache.catalina.ha.session.DeltaManager" expireSessionsOnShutdown="false" notifyListenersOnReplication="true" />
      	
      	<Channel className="org.apache.catalina.tribes.group.GroupChannel">  
             <Membership className="org.apache.catalina.tribes.membership.McastService" address="228.0.0.4" port="45564" frequency="500" dropTime="3000"/>  
             <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver" address="auto"  
                       port="4001"
                       autoBind="100"
                       selectorTimeout="5000"
                       maxThreads="6" />
  
             <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
               <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
             </Sender>
             <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
             <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
             
             <Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
                  filter=""/>
           <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>
  
           <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
                     tempDir="/tmp/war-temp/"
                     deployDir="/tmp/war-deploy/"
                     watchDir="/tmp/war-listen/"
                     watchEnabled="false"/>
  
           <ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>
           <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
           </Channel>
      </Cluster>
......

</Engine>

tomcat配置好了,为了session复制,我们还需要在应用的web.xml文件中添加<distributeable/>这个一个配置,那接下来我们就来讲讲apache的配置,需要修改apache的httpd.conf文件,将去掉一下这些的注释,使其生效
Include conf/extra/httpd-vhosts.conf

LoadModule negotiation_module modules/mod_negotiation.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_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so

在http.conf的最后面新增以下配置,使apache可以反向代理和负载均衡,注意这里的端口是tomcat的端口,同时route是刚才配置的jvmRoute的值,不能配错
ProxyRequests Off
<proxy balancer://loadbalancer> 
BalancerMember http://127.0.0.1:8080 loadfactor=1 route=jvm1
BalancerMember http://127.0.0.1:8180 loadfactor=1 route=jvm2
</proxy>

下面是httpd-vhosts.conf文件的配置,其它就不多讲了,"ProxyPass /google !"是可以配置/google地址不反向代理,那么输入地址/google就会在你apahce的根目录里面找,"/baidu" 是配置了方向代理到百度,以上这两个配置主要是看个人需求,主要是想说明怎么配置方向代理,而"ProxyPass / balancer://loadbalancer/ stickysession=jsessionid nofailover=On" 这两句才是重点,主要是配置“/”都反向代理到tomcat,并且是负载均衡的模式
<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.xiaoyang.com
    DocumentRoot "D:/Program Files/Apache Software Foundation/Apache2.2/docs/dummy-host.xiaoyang.com"
    ServerName dummy-host.xiaoyang.com
    ServerAlias www.dummy-host.xiaoyang.com
    ErrorLog "logs/dummy-host.xiaoyang.com-error.log"
    CustomLog "logs/dummy-host.xiaoyang.com-access.log" common

		ProxyPass /google !
		
		ProxyPass /baidu http://www.baidu.com
    ProxyPassReverse /baidu http://www.baidu.com
    
    ProxyPass / balancer://loadbalancer/ stickysession=jsessionid nofailover=On
    ProxyPassReverse / balancer://loadbalancer/
</VirtualHost>

好了这就完成了,然后就可以打开你的apache的地址了,你不停的刷新页面,会被负载分配到两个tomcat服务其上面其,同时会话是相同的。

分享到:
评论

相关推荐

    开发工具:apache-tomcat-8.5.75.zip

    开发工具:apache-tomcat-8.5.75.zip

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

    本文将详细介绍如何在一机双Tomcat环境下搭建Apache+Tomcat集群,并深入解析其中的关键配置和技术细节。 #### 二、Apache+Tomcat集群的优势 1. **高可靠性(HA)**:通过集群管理软件实现在主服务器发生故障时,备份...

    apache与tomcat负载集群的实现

    2. Tomcat的Clustering:Tomcat支持基于JGroups的集群,能实现会话复制和故障检测。每个Tomcat节点间通过网络通信保持同步,当一个节点失效,其会话状态会被其他节点接管,保证用户会话的连续性。 四、会话管理 在...

    tomcat7 http://tomcat.apache.org/download-70.cgi

    http://tomcat.apache.org/download-70.cgi http://tomcat.apache.org/download-70.cgi

    Linux下通过Apache搭建Tomcat集群

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

    基于Xen虚拟机实现Apache tomcat 集群搭建

    7. Tomcat集群构建:Tomcat集群是多个Tomcat服务器的集合,它们协同工作,以提供更高的性能和更好的容错性。在集群环境中,Tomcat实例之间的session数据需要同步,以确保用户会话的连续性。 8. Session同步:在多...

    apache+tomcat集群配置

    Apache + Tomcat 集群配置是指将 Apache 服务器与 Tomcat 服务器集成,以提高服务器的性能和可扩展性。本文将详细介绍如何配置 Apache + Tomcat 集群,包括安装 Apache 和 Tomcat 服务器、配置 mod_jk 模块、配置 ...

    Apache+Tomcat环境搭建

    以下是对如何搭建 Apache + Tomcat 环境的详细步骤和解释: 1. **安装基础软件**: - **JDK**:Apache Tomcat 需要 Java 运行环境来运行 Java 应用程序。在这里,我们安装的是 JDK 1.6.0_23 版本。确保将其路径...

    apache和tomcat搭建集群,实现负载均衡.pdf

    Apache和Tomcat构建的集群,主要目标是实现负载均衡,提高服务的可用性和效率。集群是一种将多台服务器组成一个逻辑单元的技术,为用户提供统一的服务视图,并通过冗余机制确保高可用性。集群系统通常包含三个主要...

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

    ### 结合Apache和Tomcat实现集群与负载均衡 #### 一、引言 在现代Web应用开发中,为了提高服务的稳定性和响应速度,通常会采用集群和负载均衡技术。本文将详细介绍如何通过Apache和Tomcat这两款强大的开源工具来...

    Apache2.2与tomcat7 集群配置

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

    Apache和Tomcat实现集群和负载均衡(WindowsNT)

    为了实现Apache与Tomcat的集群及负载均衡,在Windows NT环境下需要准备以下软件环境: 1. **Apache**: 版本2.0.55。可以从官方网站http://httpd.apache.org/下载。该版本适用于Windows平台,且不包含SSL支持。 2. *...

    Tomcat:apache-tomcat-6.0.18

    3. **Connector组件**:Tomcat通过Connector组件与外部世界进行通信。这些组件负责接收和处理HTTP请求,并将结果返回给客户端。 4. **Context容器**:每个Web应用程序都在一个独立的Context容器中运行,管理应用程序...

    apache tomcat负载集群

    apache tomcat负载集群,appache负载,tomcat负载

    Linux(centos)下的Tomcat安装压缩包:apache-tomcat-7.0.79.tar.gz

    Linux(centos)下的Tomcat安装压缩包:apache-tomcat-7.0.79.tar.gz,结合我的博客http://blog.csdn.net/jing12062011/article/details/76795362使用,留存一下便于以后搭建系统用

    Apache+Tomcat5.0实现集群

    通过集成Apache和Tomcat,可以构建一个高效且可扩展的Web服务器集群,实现负载均衡和session复制功能。 集群技术的主要目标是提高系统的可用性和性能,通过将工作负载分散到多个服务器上,避免单点故障,并提高处理...

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

    ### Apache和Tomcat集群配置详解 #### 一、软件准备 在进行Apache和Tomcat集群配置之前,首先需要准备所需的软件资源。...通过以上步骤,可以成功搭建Apache和Tomcat集群,实现高效的Web应用服务器环境。

Global site tag (gtag.js) - Google Analytics