`

采用ajp代理模式配置Apache+tomcat实现负载均衡

 
阅读更多

这一种方法,配置简单,性能也高。附AJP介绍:

apache-tomcat-7.0.35-windows-i64.zip

apache 必须是2.2.x以上版本

      AJP是Apache提供的完成与其它服务器通讯的一种协议。在Apache中通过mod_proxy_ajp模块发送AJP数据,另外一端的服务器需要实现AJP协议,能够接受mod_proxy_ajp模块发送的AJP协议数据,在接受到AJP协议数据后做适当处理,并能够将处理结果以AJP协议方式发送回给mod_proxy_ajp模块。

       当使用单独的服务器,在Tomcat实例前端使用本地的Web服务器时,性能要比单独使用Tomcat及其默认的HTTP连接糟得多,即使web应用程序本身相当一部分是由静态文件构成。如果需要将Tomcat同本地的Web服务器集成,AJP连接优于代理HTTP,将提供更好的性能。从Tomcat角度来看,AJP是最有效的。它同时具有HTTP相同的功能(When using a single server, the performance when using a native webserver in front of the Tomcat instance is most of the time significantly worse than a standalone Tomcat with its default HTTP connector, even if a large part of the web application is made of static files. If integration with the native webserver is needed for any reason, an AJP connector will provide faster performance than proxied HTTP. AJP clustering is the most efficient from the Tomcat perspective. It is otherwise functionally equivalent to HTTP clustering.)

   使用这种协议,具有更高的性能,因为它采用的是二进制传输。比HTTP的文本传输要有更高的效率。在Apache中要使用mod_proxy和mod_proxy_ajp,在Tomcat中则要开启ajp服务。

 一、前期准备工作:安装用的程序(前提保证已安装了JDK1.5以上的版本) 
APAHCE 2.2.4

TOMCAT6.0
二、安装过程 
APAHCE
安装目录:D:\Apache Group\Apache2 
l两个TOMCAT目录:自行解压到(D:\Apache Group\集群服务器\)下。分别为 tomcat6_1tomcat6_2,这几个安装过程就不详细说明了。 

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

将下面的内容去掉注释:(其实注释掉前面三行也就行了,因为采用的是ajp代理)

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

 再找到<IfModule dir_module></IfModule>加上index.jsp修改成 
<IfModule dir_module> 
DirectoryIndex index.html index.jsp 
</IfModule> 

1.1.1  在最下面加入 
ProxyRequests Off 
<proxy balancer://cluster> 
BalancerMember ajp://127.0.0.1:8109 loadfactor=1 route=jvm1 
BalancerMember ajp:// 127.0.0.1:8209 loadfactor=1 route=jvm2 
</proxy> 
上面的两个BalancerMember成员是我们配置的tomcat集群,注意上面红色的端口号,要跟Tomcat1中的server.xml  <Connector port="8109" protocol="AJP/1.3" redirectPort="8443" />  Tomcat2的为

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

 1.2httpd-vhosts.conf设置 
接下来进行虚拟主机的设置。APACHE的虚拟主机设置如下: 
首先要修改 conf/httpd.conf找到(#Include conf/extra/httpd-vhosts.conf) 
把注释去掉。 
# Virtual hosts 
Include conf/extra/httpd-vhosts.conf 
在文件(extra/httpd-vhosts.conf)最下面加入 
<VirtualHost *:80> 
         ServerAdmin 979398098@qq.com
         ServerName localhost 
         ServerAlias localhost 
         ProxyPass / balancer://cluster/ stickysession=jsessionid nofailover=On 
         ProxyPassReverse / balancer://cluster/ 
</VirtualHost> 
其中的邮箱,域名和路径根据你自己情况设置 
然后再设置TOMCAT虚拟主机 
 

配置 tomcat 
2.1.  
配置 server 的关闭 
我们需要在一台机器上跑 2个不同的 tomcat ,需要修改不同的 tomcat 的关闭口,避免出现端口被占用的情况。其中tomcat6.0用默认值,不修改。其他三个修改。在tomcat6_1\conf, tomcat6_2\conf下的 server.xml 中找到 server,将: 
<Server port="8005" shutdown="SHUTDOWN"> 
改为 
<Server port="XXXX" shutdown="SHUTDOWN"> 
XXXX 
在这里表示不同的端口:我的两个个 tomcat 分别使用 8105,8205。

2.2. 配置 Engine 
把原来的配置注释掉,把下面一句去掉注释。并标明jvmRoute="jvm1". 
<Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm1">         
以下是原来的配置。 
<!-- <Engine name="Catalina" defaultHost="localhost">  --> 
Tomcat6_2也要同样配置。注意:jvmRoute配置不要一样。 
<Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm2">  
2.3. 
配置 Connector 
原来的默认配置。 
<!-- Define an AJP 1.3 Connector on port 8009 --> 
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> 
这里是apachetomcat链接的关键(前面有说过),前台apache就是通过AJP协议与tomcat进行通信的,以完成负载均衡的作用。也可以用HTTP协议。大家注意它们是如何连接通信的,上面的红色部分(port="8009")就是连接的接口了。 
我的两个Tomcat分别设置为8109和8209.

注意 此端口 必须与 httpd.Conf 中相对应的 端口相同

BalancerMember ajp://127.0.0.1:8109 loadfactor=1 route=jvm1 

2.5.
配置Cluster(每个tomcat中都要修改
原来的配置。 
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/> 
修改为以下的代码:<Receiver port=XX/>port也要保证唯一性。 
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"  channelSendOptions="6"> 
<Manager className="org.apache.catalina.ha.session.BackupManager" 
expireSessionsOnShutdown="false" 
notifyListenersOnReplication="true" 
mapSendOptions="6"/> 
<Channel className="org.apache.catalina.tribes.group.GroupChannel"> 
<Membership className="org.apache.catalina.tribes.membership.McastService" 
address="228.0.0.4"  #这里的地址是D类组播地址,所有的Tomcat必须配置以一样 
port="45564" 
frequency="500" 
dropTime="3000"/> 
<Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver" 
address="auto" 
port="5001"  
#端口保持不能重复
selectorTimeout="100" 
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"/> 
<Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/> 
</Channel> 
<Valve className="org.apache.catalina.ha.tcp.ReplicationValve" 
filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/> 
<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.ClusterSessionListener"/> 
</Cluster>

到这里,配置完成了,需要测试的话,可采用

http://my.oschina.net/larch/blog/83807

这里的测试方法,你会发现两种方式会有所不同。

注意:一定要在工程的web.xml加上<distributable/>,确保Tomcat能够将session复制。

分享到:
评论

相关推荐

    Apache+tomcat实现负载均衡

    本篇文章将详细介绍如何使用Apache和Tomcat实现负载均衡。 负载均衡的核心思想是将来自用户的请求分发到多个服务器上,以避免单一服务器过载。在Apache与Tomcat的组合中,Apache通常作为前端负载均衡器,通过HTTP...

    Apache+Tomcat+JK 实现集群负载均衡文档

    Apache+Tomcat+JK 实现集群负载均衡是一种常见的Web服务器和应用服务器的部署方式,它能够提高系统的可用性和响应速度,实现服务的高并发处理。本文将详细介绍如何配置这一环境。 首先,我们需要准备以下软件: 1. ...

    apache+tomcat7+jk负载均衡

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

    APACHE +TOMCAT配置负载均衡

    总之,Apache + Tomcat负载均衡配置涉及多个组件的设置,包括Apache的模块配置、虚拟主机设置、Tomcat的AJP连接器以及Session管理和文件访问控制。正确配置后,这种架构可以显著提高网站的可靠性、扩展性和用户体验...

    Apache+JK+Tomcat搭建负载均衡

    Apache+JK+Tomcat搭建负载均衡是一种常见的高可用性和性能优化策略,主要目的是分散网络流量,提高服务的稳定性和响应速度。这个方案特别适合大型网站或应用,可以有效防止单点故障,提升用户体验。 首先,负载均衡...

    apache+tomcat 实现负载均衡

    在Apache中通过mod_proxy_ajp模块发送AJP数据,另外一端的服务器需要实现AJP协议,能够接受mod_proxy_ajp模块发送的AJP协议数据,在接受到AJP协议数据后做适当处理,并能够将处理结果以AJP协议方式发送回给mod_proxy_...

    Linux中Apache+Tomcat+JK实现负载均衡和群集的完整过程

    在Linux环境中,使用Apache、Tomcat和JK模块实现负载均衡和群集是一项常见的高可用性架构设计,它能够有效地分发网络流量,提高系统的可扩展性和稳定性。Apache作为前端Web服务器,负责接收用户请求并根据配置策略将...

    Apache+Tomcat+JK配置负载均衡

    Apache+Tomcat+JK配置负载均衡是Web服务器与应用服务器集群的一种常见组合,用于实现高可用性和高并发处理能力。Apache作为前端服务器,通过JK模块(mod_jk)与后端的Tomcat应用服务器进行通信,将HTTP请求分发到多...

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

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

    Tomcat +Apache实现负载均衡

    通过以上步骤,我们可以构建一个简单的Windows环境下的Apache和Tomcat负载均衡系统,它能够根据配置自动将请求分发到不同的Tomcat实例,提高系统处理能力,并提供一定的容错性。在实际应用中,还需要考虑监控、故障...

    Apache + Tomcat + jk配置负载均衡以及虚拟主机 实现多域名、多用户同时使用

    ### Apache + Tomcat + JK配置负载均衡及虚拟主机详解 #### 一、概述 在现代Web应用开发中,为了提高服务器资源的利用率和系统的可扩展性,常常需要在一个物理服务器上部署多个不同的Web应用程序,每个应用程序可能...

    【负载均衡】在centos下面做apache和tomcat的负载均衡

    【负载均衡】在CentOS下面做Apache和Tomcat的负载均衡是一个常见的Web服务器优化策略,目的是提高服务的可用性、可扩展性和响应速度。这里主要涉及三个关键文件:httpd.conf(Apache的主要配置文件)、mod_jk.conf...

    Apache 2+Tomcat 6负载均衡与集群配置及性能测试

    Apache 2+Tomcat 6 负载均衡与集群配置是提高Web应用程序可用性和性能的关键技术。通过负载均衡,可以将来自用户的请求均匀分配到多个服务器,避免单点故障,提升系统的整体处理能力。而Tomcat集群则使得多个Tomcat...

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

    **Apache+Tomcat+Linux集群和负载均衡**主要指通过Apache作为前端反向代理服务器,Tomcat作为后端应用服务器,同时利用Linux系统强大的稳定性和安全性来构建一个能够有效分发请求、提高响应速度和服务质量的Web应用...

    linux_apache+tomcat负载均衡安装和调试.pdf

    本文将详细阐述如何在 Linux 系统上安装、配置 Apache 与 Tomcat,并实现负载均衡。 一、操作系统的选取 在本教程中,我们选用的是 Red Hat Linux 5.0 操作系统。Linux 系统因其开源、稳定和强大的网络服务支持而...

    Apache2+Tomcat7负载均衡配置(超详细整合文档)

    在本文档中,我们将详细探讨如何配置Apache2作为反向代理服务器,将HTTP请求分发给多台运行Tomcat7的Java应用服务器,实现负载均衡。 首先,我们需要配置JDK。JDK是Java开发工具包,是运行Java应用程序的基础。这里...

    Apache+Tomcat集群和负载均衡的资料

    ### Apache+Tomcat集群与负载均衡配置详解 #### 一、环境说明 为了实现Apache与Tomcat集群的负载均衡,我们需要准备以下环境: 1. **服务器配置**:四台服务器,其中一台安装Apache,三台安装Tomcat。 - Apache...

    实现apache+tomcat集群和负载均衡的比较

    本文将深入探讨如何实现Apache与Tomcat的集群以及负载均衡,并对比不同实现方式。 首先,让我们了解Apache+Tomcat集群的基本概念。集群是指通过多台服务器协同工作,提高服务的可用性和性能。在Apache+Tomcat的场景...

Global site tag (gtag.js) - Google Analytics