1.mod_cluster简介
mod_cluster 和mod_jk,mod_proxy类似,是一个基于httpd的负载平衡项目能够代理请求给基于Tomcat 网络服务器集群(支持任何独立的Tomcat,独立的JBoss Web或者JBoss AS的嵌入JBoss Web)。mod_cluster与 mod_jk和mod_proxy的区别是,mod_cluster为web服务器和httpd服务器之间提供后台通道。web服务器使用后台通道给 httpd端提供当前状态信息。
2.mod_cluster优点
1.能够动态配置httpd 工作任务:无需在httpd端配置各个server的IP和端口,有自动发现机制。
2.提供服务器端负载权重因子计算:根据服务器节点的CPU、内存、jvm堆栈、数据库连接池、线程池使用率等,由web服务器端自动进行计算负载权重,可降低httpd服务器端的压力
3.更优粒度web应用管理(事件通知机制):web-app部署/卸载都会通知到httpd服务器,这样httpd服务器就不会将请求转发至已解部署该应用的Server,减少时间开支。并可对所有检测到的server下的应用进行Disable和Enable操作。
4.支持AJP、HTTP、HTTPS协议
3.mod_cluster使用的必要条件
* httpd-2.2.8+
* JBoss AS 5.0.0+ or JBossWeb 2.1.1+
* 其它服务器不能直接使用,需要进行改造
4.mod_cluster工作原理
5.mod_cluster与Tomcat配置负载均衡示例
这里只简单说明mod_cluster+tomcat+ajp协议+session非亲和+load-demo.war场景,其它详细安装和配置参考官方文档:http://docs.jboss.org/mod_cluster/1.1.0/html_single/#Quick_Start_Guide。
5.1安装httpd服务器(windows下安装一份全新的httpd,也可以在已有httpd上升级,这里是安装一份全新的httpd)
5.1.1.下载
http://www.jboss.org/mod_cluster/downloads/1-1-0.html下载最新mod_cluster 1.1.0.Final zip bundles
5.1.2.解压安装
解压mod_cluster-1.1.0.Final-windows-x86-ssl.zip,解压后会有一个httpd-2.2目录,执行其下bin目录下安装配置脚本installconf.bat
5.2配置httpd服务器
这个版本的httpd是完全绑定了mod_cluster组件了,所以只要往httpd_home/conf/httpd.conf添加一些 mod_cluster负载均衡配置了,内容和简单说明如下(如果是在已有httpd上升级安装的,则配置有所不同,详情参考官方文档。):
#for mod_cluster
#加载必要的.so模块
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule slotmem_module modules/mod_slotmem.so
LoadModule manager_module modules/mod_manager.so
LoadModule proxy_cluster_module modules/mod_proxy_cluster.so
LoadModule advertise_module modules/mod_advertise.so
#设置监听主机IP和端口
Listen 192.168.11.24:6666
#配置虚拟主机
<VirtualHost 192.168.11.24:6666>
<Directory />
Order deny,allow
Deny from all
#Allow from 127.0.0.1
Allow from all
</Directory>
KeepAliveTimeout 60
MaxKeepAliveRequests 0
#声明一个负载均衡器
ManagerBalancerName mycluster
AdvertiseFrequency 5
ServerAdvertise On
AllowDisplay On
</VirtualHost>
#设置代理转发,这里为将所有请求都转发至mycluster负载均衡器
ProxyPass / balancer://mycluster/
#配置mod_cluster-manager,这样才可以访问到mod_cluster-manager管理页面
<Location /mod_cluster-manager>
SetHandler mod_cluster-manager
Order Deny,Allow
Deny from all
Allow from all
</Location>
5.3安装server-side components
http://www.jboss.org/mod_cluster/downloads/1-1-0.html下载最新java mod_cluster 1.1.0.Final,解压后将JBossWeb-Tomcat下所有jar包拷贝至tomcat_home/lib下。
5.4配置server-side
修改tomcat_home/conf/server.xml:
<Listener className="org.jboss.modcluster.catalina.ModClusterListener" advertise="true"/> //添加此行配置
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1"> //在此行配置中添加jvmRoute属性
5.5访问mod_cluster-manager查看配置结果
按照5.3、5.4说明,在多个tomcat下安装配置server-side components,注意jvmRoute须配置成不同标识。启动所有Tomcat Server及httpd,访问apache的mod_cluster-manager页面:http://ip:port/mod_cluster-manager ,<!--@import url(scrollbar.css); -->页面将显示mod_cluster一些状态信息,并且显示所有监测到的web服务器,以及各服务器下存在的应用,并可以对这些应用进行 Disable和Enable操作,并且web服务器的启停和web-app部署/卸载都能在该页面动态更新。如下图所示:
注:如果页面没有显示mod_cluster的状态信息,请检查一下是否在<VirtualHost></VirtualHost>中设置了AllowDisplay On
5.6 load-demo.war测试
http://www.jboss.org/mod_cluster/downloads/1-0-3-GA下载java mod_cluster 1.0.3.GA后解压出,将解压出的demo目录下的demo/server/load-demo.war部署至各个Tomcat Server,执行demo\client\run-demo.bat,会弹出一个类似于LoadRunner的图形界面小工具(具体使用参见官方文档http://docs.jboss.org/mod_cluster/1.1.0/html/demo.html),从测试结果看,apache将模拟的请求均匀的转发至各个Tomcat Server了。如下图:
特别注意:这里不要使用java mod_cluster 1.1.0.Final下的load-demo.war,这个版本的load-demo.war有bug,用不了,花了我不少时间,建议使用java mod_cluster 1.0.3.GA版本的demo。
6.某app-server与mod_cluster集成需要做的工作
1.配置一个Listerner组件
mod_cluster为web服务器和httpd服务器之间提供后台通道,该后台通道需要在web server服务器端安插一个Listerner组件(如tomcat server需要一个ModClusterListener组件)。该组件负责与httpd服务器进行交互:比如将计算出的负载权重因子、web-app 生命周期状态等信息推送至http服务器。现在tomcat和jboss都提供在server.xml中配置这个Listener:
<Listener className="org.jboss.modcluster.catalina.ModClusterListener" advertise="true"/>
现在TongWeb配置文件和管理控制台没有提供配置这个Listener的地方,但是com.tongweb.web.core.core.StandardServer中提供了addLifecycleListener()方法可以添加生命周期Listener。
2. 改造mod_cluster提供的server-side components
简单查看了一下mod_cluster提供的server-side components 的jar包源码,里面部分源码依赖于tomcat或jboss的一些源码,比如说ModClusterListener就具有一些依赖关系:
import org.apache.catalina.Lifecycle;
import org.apache.catalina.LifecycleEvent;
import org.apache.catalina.LifecycleListener;
import org.apache.catalina.Server;
import org.apache.tomcat.util.IntrospectionUtils;
import org.apache.tomcat.util.modeler.Registry;
当然,这里有依赖关系的不止这一个类。
这里有个疑问:某些类依赖另外一些类,我在tomcat源码里也没找到这些依赖类,但是server-side components却能正常运行,不知是不是没有用到这些类。
- 大小: 129.1 KB
- 大小: 62.3 KB
分享到:
相关推荐
在进行Xilinx硬核的可行性预研时,了解AXI3和AXI4之间的差异至关重要。 AXI3和AXI4的主要区别体现在以下几个方面: 1. ** Burst Length**:AXI3的最大Burst Length通常为16 beats(传输单元),而AXI4则可以达到...
iSCSI高可用和负载均衡预研验收测试用例.xlsx
5.4节则可能涉及到Web服务器的高级配置,比如通过mod_proxy模块进行负载均衡。 5.6节提到了JBoss集群配置,这可能意味着Apache集群不仅要处理静态内容,还要与Java应用服务器(如JBoss)集成,实现应用层面的集群。...
产品预研主要在市场需求不明朗或技术难度大的情况下进行,旨在验证或引导客户需求,为公司未来的市场方向提供指导。这种类型的项目具有以下特点: 1. 着重于验证市场潜力,寻找新的增长点。 2. 关注未来市场,短期内...
《软件技术预研方案》是软件开发过程中至关重要的一步,它是对新技术或新方法进行探索和研究的蓝图,旨在确保项目的技术可行性,并为后续的软件开发阶段奠定基础。以下是基于提供的文档部分内容对软件技术预研方案的...
《XXX 技术预研报告》是一份详细记录企业对新技术进行探索和研究的文档,旨在为公司的技术创新和未来市场定位提供科学依据。预研项目是企业为了应对未来的不确定性,尤其是面对潜在市场和技术发展趋势,而进行的一种...
软件项目技术预研模板知识点 技术预研是软件项目中一个重要的过程,它涉及到技术的评估、选择和实施。技术预研模板是指在软件项目中,用于指导技术预研活动的文档模板。 技术预研的目的 技术预研的目的是为了评估...
《项目管理技术预研报告模板》是一份针对项目管理中技术预研阶段的重要参考资料,它旨在为项目团队提供一个清晰、规范的框架,以便于系统地进行技术预研工作,确保项目的顺利启动和实施。这份报告通常包含了项目背景...
国家重点研发计划“HCAL GEM电子学初步设计方案201710171”是一项针对高能物理实验中探测器电子学系统的研究项目。该项目旨在解决关键问题,包括验证半数字化读出ASIC(Application Specific Integrated Circuit)的...
《XXX技术预研计划》是项目管理中的一个重要文档模板,主要针对即将进行的技术探索和研究活动进行规划和安排。这份文档通常包含以下几个关键部分: 1. **技术预研目标**: - 这一部分需要清晰地定义技术预研的目标...
【企业管理项目预研】是企业或组织在开展大型项目前进行的一种重要准备工作,旨在降低风险、提高项目的成功率。预研管理涉及多个层面,包括技术、财务、人力资源等多个方面,尤其在国防项目中,预研更显得至关重要。...
XX集团技术发展处的预研管理工作是其技术创新与研发的核心环节,旨在确保技术研究的高效进行,提升企业的竞争力。预研管理绩效指标是衡量这一工作成效的重要标准,它涵盖了任务绩效、经费管理、技术质量控制、成果...
在IT行业中,预研产品测试数据是至关重要的一个环节,特别是在硬件产品的开发过程中。这个阶段主要目的是在产品正式推出之前,对产品性能进行评估和优化,确保产品在实际应用中的稳定性和可靠性。以下是对"预研产品...
本资源包——"IT项目管理表单大全-技术预研篇(10个文档)"提供了全面的工具和模板,帮助项目经理和团队高效地进行技术预研工作。 首先,技术预研是项目启动阶段的核心活动,通过这个过程,团队可以对新技术、新...
通过上述方法,项目管理者能够对预研项目进行科学、客观的评估,以决定是否值得投入资源进行进一步研发。有效的预研管理不仅可以提高项目的成功率,还能为未来的国防科技发展注入活力,确保国家的技术领先地位。因此...
IMS(IP Multimedia Subsystem,IP多媒体子系统)是电信领域中的一个关键标准,它旨在提供融合的通信服务,包括语音、视频、数据等多媒体业务,通过IP网络进行传输。LTE(Long Term Evolution)是4G移动通信技术,与...
### SpringCloud微服务预研知识点整理 #### 一、微服务概述 微服务架构是一种将单个应用程序开发成一套小型服务的方法,每项服务都运行在其独立的进程中,并且使用轻量级通信机制(通常是HTTP资源API)进行交互。...
AJP主要用于减少HTTP协议的开销,特别是在负载均衡和反向代理场景中。 通过这些步骤,开发者可以有效地在Tomcat中配置多端口发布,实现不同应用实例的隔离,同时在Eclipse环境中进行便捷的调试。这对于开发和测试...
企业管理技术预研是企业在进行技术创新、技术改进或技术引进时所进行的一系列活动的集合。其目的是为了确保技术的可行性、可靠性和安全性,从而提高企业的竞争力和市场份额。 技术预研规程是企业管理技术预研的核心...
预研项目总结报告(模板).pdf