`
尤文武
  • 浏览: 9254 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

apache+tomcat集群实现负载均衡

阅读更多
这篇文章主要记录在MAC OSX(Yosemite)下搭建apache+tomcat集群环境的过程,其它Linux发行版除了安装apache和mod_jk不一样,其它步骤完全一样。





1.安装apache,可以参照我的另一篇博客Linux安装Apache,目前MAC OSX(Yosemite)是自带apache的,你可以通过命令sudo apachectl start|stop|restart等方法来启动停止或重启apache服务,启动完后只需在浏览器中输入http://localhost,如果出现it works,则表明启动成功。

2.安装mod_jk,这是apache的一个模块,专门负责连接tomcat, jboss等java容器,下载地址http://tomcat.apache.org/download-connectors.cgi,MAC OS10.10 Yosemite上安装跟官网不太一样,参考http://pablotips.blogspot.sg/2015/01/compiling-modjk-on-mac-os-x-1010.html

3.整合apache2和mod_jk,找到apache2的安装目录下的httpd.conf文件,不同操作系统目录不一样,自己去查,MAC在/etc/apache2/目录下,在文件最后加上
# Add and load the mod_jk module
Include /etc/apache2/other/mod_jk.conf

这个mod_jk.conf是我们接下来要创建的,它的作用是打开apache的mod_jk模块

4.切换到/etc/apache2/other/目录,创建mod_jk.conf文件,内容如下
#Load mod_jk module
LoadModule jk_module /usr/libexec/apache2/mod_jk.so
#Where to find workers.properties
JkWorkersFile /etc/apache2/other/workers.properties
#Where to put jk logs
JklogFile /etc/apache2/other/mod_jk.log
#Set the jk log level[debug/error/info]
JkLogLevel info
#Select the log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
#JkOptions indicate to send SSL KEY SIZE,
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
#JkRequestLogFormat set the request format
JkRequestLogFormat "%w %V %T"
# All requests go to controller by default
JkMount /* controller
# Serve html, jpg and gif using httpd
JkUnMount /*.html controller
JkUnMount /*.jpg  controller
JkUnMount /*.gif  controller


关于以上配置文件中各参数含义,请参考http://tomcat.apache.org/connectors-doc/webserver_howto/apache.html,请注意,以上配置中包含了worker.properties文件,这个是mod_jk模块连接tomcat用的,下面我们来创建该文件

5.在/etc/apach2/other/下面创建worker.properties,内容如下

worker.list=controller

#tomcat1
worker.tomcat1.port=8009
worker.tomcat1.host=localhost
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor=1

#tomcat2
worker.tomcat2.port=8010
worker.tomcat2.host=localhost
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor=1

worker.controller.type=lb
worker.controller.balanced_workers=tomcat1,tomcat2
worker.controller.sticky_session=false
worker.controller.sticky_session_force=1


关于以上配置文件各参数,请参考http://tomcat.apache.org/connectors-doc/reference/workers.html,这里我只配置了两台tomcat,如果想用多台,在这边增加配置就好了。
#sticky_session这个属性需要特别注意,如果是true的话,你的所有request会一直发到同一台server上,如果这台server挂掉,request并不会转发到其它正常的server上,false时则会自动转到其它server上。

6.准备两份tomcat,我这里用的是版本是7.0.6,第一份tomcat端口保持不变,修改第二份server.xml中相应的端口号,保证跟第一份不重复,最简单的就是每个端口号加1,然后为每个tomcat指定jvmRoute,设置如下
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">,
分别为tomcat1,tomcat2,对应worker.properties中的配置,同时需要把Cluster节点的注释打开,至此,你在浏览器中输入http://localhost/项目名称,就可以访问你的项目了。

7.但上面的方案还没有实现session共享,为了实现session复制需要做两步,
(1)在项目的web.xml中<web-app>节点内添加节点<distributable/>,这是一个自闭合的空节点,告诉tomcat去分发session。
(2)将tomcat的server.xml文件中的Cluster节点修改为如下配置
<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" port="45564" frequency="500" dropTime="3000" />
		<Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
			address="auto" port="5000" 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|.*\.jpeg|.*\.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>

以上配置来自官方文档,可直接复制到项目中,至此,配置完成
  • 大小: 20.7 KB
分享到:
评论
1 楼 jianjieyan 2015-06-03  

相关推荐

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

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

    反向代理负载均衡 Apache + Tomcat集群

    反向代理负载均衡 Apache + Tomcat集群 多的我也不多说了 看文档

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

    Apache+Tomcat+JK是一个常见的Web服务器和应用服务器集群解决方案,用于实现负载均衡和高可用性。这个配置中,Apache作为前端反向代理服务器,Tomcat作为后端的应用服务器,而JK模块是Apache与Tomcat之间的连接器,...

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

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

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

    在IT领域,Apache+Tomcat+Linux集群与负载均衡技术是实现高可用性、高性能Web服务的重要手段之一。本文将围绕这一主题展开详细讨论,涵盖关键技术概念、配置流程及注意事项等内容。 #### 一、概述 **Apache+Tomcat...

    Apache+Tomcat+Linux集群和均衡负载(Session同步复制

    Apache+Tomcat+Linux集群和均衡负载(Session同步复制

    Apache+Tomcat集群和负载均衡及Session绑定

    【Apache+Tomcat 集群与负载均衡及Session...通过以上配置,Apache+Tomcat集群可以实现高效的负载均衡和高可用性,同时通过Session绑定确保用户会话的连续性。注意定期监控和优化集群性能,以应对不断变化的业务需求。

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

    总之,Apache+Tomcat集群和负载均衡的实现能够显著提升Web服务的可用性和性能,通过灵活选择负载均衡策略和模块,可以适应各种复杂的业务场景。在实际操作中,还需要不断调整和优化,以达到最佳的效果。

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

    为了实现Apache与Tomcat集群的负载均衡,我们需要准备以下环境: 1. **服务器配置**:四台服务器,其中一台安装Apache,三台安装Tomcat。 - Apache版本:2.0.55 - Tomcat版本:5.5.15 - JK模块版本:2.0.4 - ...

    apache+tomcat集群配置

    本文将详细介绍如何配置 Apache + Tomcat 集群,包括安装 Apache 和 Tomcat 服务器、配置 mod_jk 模块、配置 Apache 和 Tomcat 服务器、配置负载均衡控制器等。 一、安装 Apache 服务器 首先,需要安装 Apache ...

    apache+tomcat集群的负载均衡和失败托管所需软件

    apache+tomcat集群的负载均衡和失败托管所需软件 包括 apache_2.0.55-win32-x86-no_ssl.msi apache-tomcat-7.0.40-windows-x86.zip mod_jk-apache-2.0.55.so

    apache+tomcat集群均衡负载 简单实现步骤

    总结,实现Apache+Tomcat集群负载均衡的关键在于正确配置Apache的mod_proxy模块,以及确保Tomcat集群的会话一致性。通过这种方式,我们可以有效分摊高并发访问压力,提高系统的稳定性和响应速度。同时,持续监控和...

    Apache+Tomcat集群的负载均衡配置文件和测试文件

    本主题聚焦于"Apache+Tomcat集群的负载均衡配置",通过Apache作为前端代理服务器,对后端的多个Tomcat实例进行负载分发,以实现高可用和高性能的服务。 首先,我们要理解负载均衡的基本概念。负载均衡是指将流入的...

    .在32位操作系统上配置apache+tomcat集群/负载均衡/session复制

    标题中的“在32位操作系统上配置apache+tomcat集群/负载均衡/session复制”涉及到的是在32位系统环境下,如何构建一个使用Apache HTTP Server作为前端负载均衡器,与多个Tomcat应用服务器协同工作的集群环境,并实现...

    windows下apache+tomcat 集群 均衡负载工具及文档

    在Windows环境下,构建一个基于Apache和Tomcat的集群并实现负载均衡是一项常见的任务,尤其对于大型网站和企业级应用来说,这种架构可以提高系统的可用性和性能。Apache作为前端服务器,通常用于接收用户请求,然后...

Global site tag (gtag.js) - Google Analytics