`

使用mod_cluster进行负载均衡初步预研

阅读更多
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
3
1
分享到:
评论
6 楼 Allen_J_Will 2014-11-26  
pengtyao 写道
Allen_J_Will 写道
为何按照楼主的步骤,并参考了 http://docs.jboss.org/mod_cluster/1.2.0/html_single/,
访问apache,仍然跳转不到tomcat呢


好久没弄过了,当初我就是这么一步步试成功的,你再检查检查哈


楼主,估计是你的步骤漏掉了东东,我从别人的问题中看到<IfModule manager_module>
</IfModule>

楼主的步骤中,漏掉了这块
5 楼 pengtyao 2014-11-24  
Allen_J_Will 写道
为何按照楼主的步骤,并参考了 http://docs.jboss.org/mod_cluster/1.2.0/html_single/,
访问apache,仍然跳转不到tomcat呢


好久没弄过了,当初我就是这么一步步试成功的,你再检查检查哈
4 楼 Allen_J_Will 2014-11-18  
为何按照楼主的步骤,并参考了 http://docs.jboss.org/mod_cluster/1.2.0/html_single/,
访问apache,仍然跳转不到tomcat呢
3 楼 Allen_J_Will 2014-07-03  
2 楼 pengtyao 2011-01-15  
mod_cluster的文章不多 估计我这个还在搜索结果前面
1 楼 swanky_yao 2011-01-11  
哥居然又搜到你了 冤家

相关推荐

    Xilinx_硬核使用_可行性预研.docx

    在进行Xilinx硬核的可行性预研时,了解AXI3和AXI4之间的差异至关重要。 AXI3和AXI4的主要区别体现在以下几个方面: 1. ** Burst Length**:AXI3的最大Burst Length通常为16 beats(传输单元),而AXI4则可以达到...

    iSCSI高可用和负载均衡预研验收测试用例.xlsx

    iSCSI高可用和负载均衡预研验收测试用例.xlsx

    Apache集群预研报告

    5.4节则可能涉及到Web服务器的高级配置,比如通过mod_proxy模块进行负载均衡。 5.6节提到了JBoss集群配置,这可能意味着Apache集群不仅要处理静态内容,还要与Java应用服务器(如JBoss)集成,实现应用层面的集群。...

    浅谈预研型项目管理.docx

    产品预研主要在市场需求不明朗或技术难度大的情况下进行,旨在验证或引导客户需求,为公司未来的市场方向提供指导。这种类型的项目具有以下特点: 1. 着重于验证市场潜力,寻找新的增长点。 2. 关注未来市场,短期内...

    软件技术预研方案模板.docx

    《软件技术预研方案》是软件开发过程中至关重要的一步,它是对新技术或新方法进行探索和研究的蓝图,旨在确保项目的技术可行性,并为后续的软件开发阶段奠定基础。以下是基于提供的文档部分内容对软件技术预研方案的...

    附录H-2 技术预研报告.doc

    《XXX 技术预研报告》是一份详细记录企业对新技术进行探索和研究的文档,旨在为公司的技术创新和未来市场定位提供科学依据。预研项目是企业为了应对未来的不确定性,尤其是面对潜在市场和技术发展趋势,而进行的一种...

    QM-PROC-QMP-09-软件项目技术预研模板(软件技术预研报告模板)-V4.0.pdf

    软件项目技术预研模板知识点 技术预研是软件项目中一个重要的过程,它涉及到技术的评估、选择和实施。技术预研模板是指在软件项目中,用于指导技术预研活动的文档模板。 技术预研的目的 技术预研的目的是为了评估...

    项目管理技术预研报告模板

    《项目管理技术预研报告模板》是一份针对项目管理中技术预研阶段的重要参考资料,它旨在为项目团队提供一个清晰、规范的框架,以便于系统地进行技术预研工作,确保项目的顺利启动和实施。这份报告通常包含了项目背景...

    国家重点研发计划_HCAL GEM电子学初步设计方案201710171

    国家重点研发计划“HCAL GEM电子学初步设计方案201710171”是一项针对高能物理实验中探测器电子学系统的研究项目。该项目旨在解决关键问题,包括验证半数字化读出ASIC(Application Specific Integrated Circuit)的...

    附录H-1 技术预研计划.doc

    《XXX技术预研计划》是项目管理中的一个重要文档模板,主要针对即将进行的技术探索和研究活动进行规划和安排。这份文档通常包含以下几个关键部分: 1. **技术预研目标**: - 这一部分需要清晰地定义技术预研的目标...

    企业管理项目预研.ppt

    【企业管理项目预研】是企业或组织在开展大型项目前进行的一种重要准备工作,旨在降低风险、提高项目的成功率。预研管理涉及多个层面,包括技术、财务、人力资源等多个方面,尤其在国防项目中,预研更显得至关重要。...

    XX集团技术发展处预研管理绩效指标.doc

    XX集团技术发展处的预研管理工作是其技术创新与研发的核心环节,旨在确保技术研究的高效进行,提升企业的竞争力。预研管理绩效指标是衡量这一工作成效的重要标准,它涵盖了任务绩效、经费管理、技术质量控制、成果...

    预研产品测试数据

    在IT行业中,预研产品测试数据是至关重要的一个环节,特别是在硬件产品的开发过程中。这个阶段主要目的是在产品正式推出之前,对产品性能进行评估和优化,确保产品在实际应用中的稳定性和可靠性。以下是对"预研产品...

    项目管理(项目预研.pptx

    在现代国防项目管理中,项目预研阶段的重要性不言而喻。它不仅仅是一个技术准备阶段,更是为整个项目奠定理论和实践基础的关键过程。预研的成败在很大程度上决定了后续项目的可行性和最终成果的实用性。本文将深入...

    IT项目管理表单大全-技术预研篇(10个文档)

    本资源包——"IT项目管理表单大全-技术预研篇(10个文档)"提供了全面的工具和模板,帮助项目经理和团队高效地进行技术预研工作。 首先,技术预研是项目启动阶段的核心活动,通过这个过程,团队可以对新技术、新...

    IMS终端预研,为移动终端技术论坛第一工作组就IMS终端相关功能的预研报告

    IMS(IP Multimedia Subsystem,IP多媒体子系统)是电信领域中的一个关键标准,它旨在提供融合的通信服务,包括语音、视频、数据等多媒体业务,通过IP网络进行传输。LTE(Long Term Evolution)是4G移动通信技术,与...

    SpringCloud微服务预研知识点整理

    ### SpringCloud微服务预研知识点整理 #### 一、微服务概述 微服务架构是一种将单个应用程序开发成一套小型服务的方法,每项服务都运行在其独立的进程中,并且使用轻量级通信机制(通常是HTTP资源API)进行交互。...

    Tomcat多端口下发布及eclipse运行调试预研

    AJP主要用于减少HTTP协议的开销,特别是在负载均衡和反向代理场景中。 通过这些步骤,开发者可以有效地在Tomcat中配置多端口发布,实现不同应用实例的隔离,同时在Eclipse环境中进行便捷的调试。这对于开发和测试...

    企业管理技术预研.doc

    企业管理技术预研是企业在进行技术创新、技术改进或技术引进时所进行的一系列活动的集合。其目的是为了确保技术的可行性、可靠性和安全性,从而提高企业的竞争力和市场份额。 技术预研规程是企业管理技术预研的核心...

    预研项目总结报告(模板).pdf

    预研项目总结报告(模板).pdf

Global site tag (gtag.js) - Google Analytics