中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> IBM专区 > WebSphere > WebSphere综合
实现非对称环境下Message Broker集群负载均衡
作者:段 永红 时间:2006-08-27 01:37 出处:IBM 责编:月夜寒箫
              摘要:实现非对称环境下Message Broker集群负载均衡
本文讲述了如何利用WebSphere MQ集群实现Message Broker集群。并讨论了如何利用WebSphere MQ V6的新功能,实现非对称硬件环境下Message Broker集群的负载均衡。

1 引言

众所周知,Message Broker可以通过配置多个流程实例以及多个执行组实现纵向扩展-即增加系统CPU个数,WMB系统处理能力将会相应提升。

在横向扩展方面,Message Broker可以利用WebSphere MQ集群实现Broker集群,从而可以通过增加新机器,实现Message Broker应用系统的平滑扩容。

本文详细介绍了如何实现Message Broker集群以及在非对称环境下如何实现系统的负载均衡。并通过在两台硬件配置不同的AIX系统上的性能测试,分析了Message Broker集群的扩展能力。





回页首


2 软件要求

  • WebSphere Message Broker V6
  • WebSphere MQ V6
  • 压力发生程序:WBI Message Broker V6 - Message display, test and performance utilities(MB support pac IH03)




回页首


3 测试硬件环境


表格1




回页首


4 测试环境拓扑结构

WebSphere Message Broker集群是建立在WMQ集群基础上的。本文实现的Message Broker集群如下图所示:


图1

三个队列管理器BRK1_QM, BRK2_QM以及APP_QM共同组成MQ集群环境,其中BRK1_QM和BRK2_QM分别用做WMB代理BRK1和BRK2的队列管理器。而压力发生程序通过APP_QM接入到MQ集群中。通过MQ集群的负载均衡功能,实现Message Broker集群的负载均衡。





回页首


5 配置MQ集群

1. 在AIX01上创建队列管理器BRK1_QM和APP_QM,在AIX02上创建队列管理器BRK2_QM。

2. 在BRK1_QM上执行如下命令,创建MQ对象。


ALTER QMGR REPOS(MBCLUST)
            DEFINE LISTENER(BRK1_LSR) TRPTYPE(TCP) CONTROL(QMGR) PORT(1616)
            START LISTENER(BRK1_LSR)
            DEFINE CHANNEL ('TO.BRK2_QM') CHLTYPE(CLUSSDR) CLUSTER('MBCLUST')
            CONNAME('192.168.0.2(1616)') REPLACE
            DEFINE CHANNEL ('TO.BRK1_QM') CHLTYPE(CLUSRCVR) CLUSTER('MBCLUST')
            CONNAME('192.168.0.1(1616)') REPLACE
            DEFINE QLOCAL ('IN') CLWLUSEQ(ANY) CLUSTER('MBCLUST') REPLACE
            

3. 在BRK2_QM上执行如下命令,创建MQ对象。


ALTER QMGR REPOS(MBCLUST)
            DEFINE LISTENER(BRK2_LSR) TRPTYPE(TCP) CONTROL(QMGR) PORT(1616)
            START LISTENER(BRK2_LSR)
            DEFINE CHANNEL ('TO.BRK1_QM') CHLTYPE(CLUSSDR) CLUSTER('MBCLUST')
            CONNAME('192.168.0.1(1616)') REPLACE
            DEFINE CHANNEL ('TO.BRK2_QM') CHLTYPE(CLUSRCVR) CLUSTER('MBCLUST')
            CONNAME('192.168.0.2(1616)') REPLACE
            DEFINE QLOCAL ('IN') CLWLUSEQ(ANY) CLUSTER('MBCLUST') REPLACE
            

4. 在APP_QM上执行如下命令,创建MQ对象。
DEFINE LISTENER(APP_LSR) TRPTYPE(TCP) CONTROL(QMGR) PORT(1818)
            START LISTENER(APP_LSR)
            DEFINE CHANNEL ('TO.BRK1_QM') CHLTYPE(CLUSSDR) CLUSTER('MBCLUST')
            CONNAME('192.168.0.1(1616)') REPLACE
            DEFINE CHANNEL ('TO.BRK2_QM') CHLTYPE(CLUSSDR) CLUSTER('MBCLUST')
            CONNAME('192.168.0.2(1616)') REPLACE
            DEFINE CHANNEL ('TO.APP_QM') CHLTYPE(CLUSRCVR) CLUSTER('MBCLUST')
            CONNAME('192.168.0.1(1818)') REPLACE
            DEFINE QLOCAL ('OUT') CLUSTER('MBCLUST') REPLACE
            

5. 确保所有发送方通道均已经启动。





回页首


6 配置Broker

分别在AIX01和AIX02执行如下命令分别创建代理BRK1, BRK2。具体Broker的配置方式请参考《WebSphere Message Broker Configuration, Administration, and Security》


-- 在AIX01上执行
            mqsicreatebroker BRK1 -i <ServiceUserID> -a <ServicePassWord>
            -q BRK1_QM -n <BrokerDBName> -u <DBUserID>-p <DBPassWord>
            -- 在AIX02上执行
            mqsicreatebroker BRK2 -i <ServiceUserID> -a <ServicePassWord>
            -q BRK2_QM -n <BrokerDBName> -u <DBUserID>-p <DBPassWord>
            





回页首


7 部署测试用消息流

本文测试使用的消息流如下图所示,该消息流利用Message Set解析一342字节大小的定长(FixedLength)格式报文,并将其转换成624字节大小的XML文件。初始报文从IN队列流入,经转换后的报文发送到OUT队列中。


图2

1. 在BRK1和BRK2上分别创建两个执行组。

2. 将测试消息流部署到四个执行组上。





回页首


8 非对称环境WMB集群负载均衡

由于AIX01和AIX02的CPU主频率不同(AIX01为1.9GHz,AIX02为1GHz),导致这两台机器的处理能力有很大区别。为合理配置WMB集群负载,需要先测定AIX01和AIX02的处理能力,以便合理分发消息。以下是分别在这两台机器上部署测试消息流后的处理结果。本次测试由压力工具一次性向IN队列刷入50000条消息进行WMB吞吐率分析。其中消息吞吐率用如下公式计算得出:

消息吞吐率(条/秒)= 50000 /(第一个消息放入IN队列时间 - 最后一个消息从OUT队列读出时间)

8.1 AIX01单机性能


表格2

8.2 AIX02单机性能


表格3

由测试结果可以看出,Message Broker的处理性能随CPU性能增强也相应增强,AIX01的处理性能基本上是AIX02的2倍。

得到如上数据后,就可以根据机器的相应性能,利用WebSphere MQ集群的负载均衡功能设置权重,根据机器硬件性能来分发消息了。根据以上的测试结果,本文设计按照2:1的方式分别向AIX01和AIX02发送消息,以最大化系统的吞吐率。

8.3 配置MQ集群负载均衡

1. 对BRK1_QM和BRK2_QM分别做如下设置。


runmqsc BRK1_QM
            ALTER CHANNEL(TO.BRK2_QM) CHLTYPE(CLUSRCVR)	CLWLWGHT(2)
            


runmqsc BRK2_QM
            ALTER CHANNEL(TO.BRK1_QM) CHLTYPE(CLUSRCVR)	CLWLWGHT(1)
            

2. 利用amqsput发送3条消息到APP_QM的IN对列中。


amqsput IN APP_QM
            Sample AMQSPUT0 start
            target queue is IN
            1
            2
            3
            

3. 分别在BRK1_QM和BRK2_QM上执行如下命令,查看设置是否成功。


runmqsc BRK1_QM
            DISPLAY QLOCAL(IN)  CURDEPTH
            AMQ8409: Display Queue details.
            QUEUE(Q1)                               TYPE(QLOCAL)
            CURDEPTH(2)
            


runmqsc BRK2_QM
            DISPLAY QLOCAL(IN)  CURDEPTH
            AMQ8409: Display Queue details.
            QUEUE(Q1)                               TYPE(QLOCAL)
            CURDEPTH(1)
            

好的,现在消息已经按照2:1的方式分发,启动压力测试程序,向APP_QM的IN队列中发送消息,并在APP_QM的本地队列OUT上接收消息,测试结果如下表所示:

8.4 MB集群性能


图4

比较测试结果,AIX01和AIX02的单机处理能力分别是1250和624条/秒,而实现的WMB集群的处理能力是1724条/秒。WMB集群的处理能力近似达到两台机器单机处理能力的加和。





回页首


9 结论和建议

经测试证明,WMB可以基于MQ Cluster实现Broker集群,实现系统的横向扩展。通过该测试,得到如下结论:

  • 通过配置WMB集群,基本上可以实现系统性能的近似线性增长。
  • 通过WMQ的负载均衡机制,在机器性能不一的情况下,WMB集群也可以最大化利用每台机器的资源,增加系统吞吐率。

通过测试,本文给出如下建议:

虽然WMB集群在集群中机器性能不一的情况也能较好利用各台机器的性能,但负载配比达到完全的最优化比较困难。在做WMB集群时,建议参与集群的机器硬件配置最好保持一致,以最大化利用机器硬件性能。

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有