Websphere MQ Cluster
大纲:
- 1、什么是集群
- 2、建立一个基本的集群
- 3、DISPLAY命令
- 4、负载均衡
- 5、高级配置和管理
- 6、答疑
- 7、关于文章、红宝书等
一、 什么是集群
集群就是Websphere MQ 队列管理的逻辑分组,它可以帮助你:
减少了系统管理-由于更少的通道、远程队列、传输队列的定义
增加了高可用性和负载均衡-由于可以在集群中定义同名的队列实例和多个队列管理器以及在他们之间的分布式的消息
二、建立基本的集群
1. 定义集群的组织和它的名字 如果需要获得更多关于集群的信息,请参考-《WebSphere MQ Queue Manager Clusters》
2. 决定那个队列管理器是完全的存储库。你至少需要一个完全存储库,一般来说,最好是两个。完全的存储库包含了在集群中每个队列管理器和对象的 完整的信息。如果你需要多于两个的完全存储库,请参考-《 WebSphere MQ Queue Manager Clusters》中的第7章- Designing clusters。
3. 更改队列管理器的定义,添加存储库定义。
ALTER QMGR REPOS(cluster_name)
对于需要配置为完全存储库的队列管理器都可以用这个命令来定义。
4. 定义集群接受通道:CLUSRCVR
在集群中的每个队列都需要个接受方通道和一个指向它自己的连接名。
DEFINE CHANNEL(channel_name)
CHLTYPE(CLUSRCVR) TRTYPE(TCP)
CONNAME(‘my_ip_name_or_address(port)’)
CLUSTER(cluster_name)
5. 定义集群发送方通道:CLUSSDR
对完全存储库定义发送方通道。通道的名字必须和完全存储库的CLUSRCVR相匹配,不要定义CLUSSDR 指向部分存储库。
DEFINE CHANNEL(channel_name)
CHLTYPE(CLUSSDR) TRPTYP(TCP)
CONNAME(‘remote_ip_name_or_address(port)’)
CLUSTER(cluster_name)
6. 定义集群队列
在集群中的其他队列管理可以发送给它而不需要定义对它的远程队列。
只有本地队列管理器才可以从集群队列实例中读取信息。
DEFINE QLOCAL(qname)
CLUSTER(cluster_name)
7. 验证和测试集群
看下面的 display命令
使用Sample程序放入消息到集群队列中,例如:
- amqsput for distributed platforms
- CSQ4BCK1 or CSQ4BVK1 for z/OS
8. 集群架构图:
9. 架构描述:
- QM1和QM2是完全存储库
- 实线呈现了手工定义的 CLUSRCVR和 CLUSSDR通道
- 两条虚线表示自动创建的集群发送通道
- QM2和QM3主管了一些集群队列,它可以放入在集群中任何其他队列管理器中
- 所有的队列管理器都有 SYSTEM.CLUSTER.TRANSMIT.QUEUE,它可以发送信息给集群中任何其他队列管理器
10. DISPLAY QMGR
DISPLAY QMGR REPOS REPOSNL QMID
AMQ8408: Display Queue Manager details.
QMNAME(QM1) QMID(QM1_2005-07-12_17.14.38)
REPOS(QMCLUS)REPOSNL( )
QMID是一个内在创建的唯一名称,它包含了队列管理器的名字和创建队列管理器的时间。对z/OS ,时间是用16进制来表示:RTPH.BDA2D50C17934846
11. DISPLAY CLUSQMGR
DISPLAY CLUSQMGR(*) ALL
[The following output is partial—it is only for one cluster queue manager of several]
AMQ8441: Display Cluster Queue Manager details.
CLUSQMGR(QM2) ALTDATE( )
ALTTIME( ) BATCHHB(0)
BATCHINT(0) BATCHSZ(50)
CHANNEL(TO.QM2) CLUSDATE(2007-01-09)
CLUSTER(QMCLUS) CLUSTIME(13.59.18)
CLWLPRTY(0) CLWLRANK(0)
CLWLWGHT(50) COMPHDR(NONE)
COMPMSG(NONE)
CONNAME(craigbev.dyn.webahead.ibm.com(1516))
CONVERT(NO) DEFTYPE(CLUSSDRB)
DESCR( ) DISCINT(6000)
HBINT(300) KAINT(AUTO)
LOCLADDR( ) LONGRTY(999999999)
LONGTMR(1200) MAXMSGL(4194304)
MCANAME( ) MCATYPE(THREAD)
… (continued on next slide)
(continuation of previous slide)
MCAUSER( ) MODENAME( )
MRDATA( ) MREXIT( )
MRRTY(10) MRTMR(1000)
MSGDATA( ) MSGEXIT( )
NETPRTY(0) NPMSPEED(FAST)
PASSWORD( ) PUTAUT(DEF)
QMID(QM2_2005-07-12_17.22.29) QMTYPE(REPOS)
RCVDATA( ) RCVEXIT( )
SCYDATA( ) SCYEXIT( )
SENDDATA( ) SENDEXIT( )
SEQWRAP(999999999) SHORTRTY(10)
SHORTTMR(60) SSLCAUTH(REQUIRED)
SSLCIPH( ) SSLPEER( )
STATUS(RUNNING) SUSPEND(NO)
TPNAME( ) TRPTYPE(TCP)
USERID( )
…
11. DISPLAY CLUSQMGR 备注
DEFTYPE 可以是以下任意一种类型:
CLUSSDR - 显示定义集群发送通道
CLUSSDRA - 自动定义集群发送通道 (A=auto)
CLUSSDRB - 定义集群发送通道,显示的和自动的 (B=both)
CLUSRCVR - 定义集群接受通道
自动定义的集群发送通道获取它们的属性从那些被指定在接受集群队列管理器上通信的集群接受通道的定义。你 不能直接修改一个自动定义的CLUSSDR,你不能看见它们经过DISPLAY CHANNEL。
QMTYPE 可以是REPOS(完全存储库) 或者 NORMAL(部分存储库),你不可以用DISPLAY CHSTATUS查看CLUSRCVR的状态
12. DISPLAY CHSTATUS
dis chstatus(*) all
AMQ8417: Display Channel Status details.
CHANNEL(TO.QM2) CHLTYPE(CLUSSDR)
CONNAME(craigbev.dyn.webahead.ibm.com(1516))
CURRENT RQMNAME(QM2)
STATUS(RUNNING) SUBSTATE(MQGET)
XMITQ(SYSTEM.CLUSTER.TRANSMIT.QUEUE)
AMQ8417: Display Channel Status details.
CHANNEL(TO.QM1) CHLTYPE(CLUSRCVR)
CONNAME( ) CURRENT
RQMNAME(QM3) STATUS(RUNNING)
SUBSTATE(RECEIVE) XMITQ( )
AMQ8417: Display Channel Status details.
CHANNEL(TO.QM3) CHLTYPE(CLUSSDR)
CONNAME(craigbev.dyn.webahead.ibm.com(1517))
CURRENT RQMNAME(QM3)
STATUS(RUNNING) SUBSTATE(MQGET)
XMITQ(SYSTEM.CLUSTER.TRANSMIT.QUEUE)
AMQ8417: Display Channel Status details.
CHANNEL(TO.QM1) CHLTYPE(CLUSRCVR)
CONNAME( ) CURRENT
RQMNAME(QM2) STATUS(RUNNING)
SUBSTATE(RECEIVE) XMITQ( )
13. DISPLAY QCLUSTER
DISPLAY QCLUSTER(*) ALL
AMQ8409: Display Queue details.
QUEUE(INQUIRY) TYPE(QCLUSTER)
ALTDATE(2007-01-09) ALTTIME(15.30.25)
CLUSDATE(2007-01-09) CLUSTER(QMCLUS)
CLUSQMGR(QM2) CLUSQT(QLOCAL)
CLUSTIME(15.30.25) CLWLPRTY(0)
CLWLRANK(0) DEFBIND(NOTFIXED)
DEFPRTY(0) DEFPSIST(NO)
DESCR( ) PUT(ENABLED)
QMID(QM2_2005-07-12_17.22.29)
AMQ8409: Display Queue details.
QUEUE(INQUIRY) TYPE(QCLUSTER)
ALTDATE(2007-01-09) ALTTIME(15.30.03)
CLUSDATE(2007-01-09) CLUSTER(QMCLUS)
CLUSQMGR(QM1) CLUSQT(QLOCAL)
CLUSTIME(15.30.03) CLWLPRTY(0)
CLWLRANK(0) DEFBIND(NOTFIXED)
DEFPRTY(0) DEFPSIST(NO)
DESCR( ) PUT(ENABLED)
QMID(QM1_2005-07-12_17.14.38)
14. DISPLAY QCLUSTER 说明
它仅仅显示了关于集群队列的信息。一个集群队列将不能被显示在一个部分存储库,除非应用已经打开了它。DEFBIND(NOTFIXED|OPEN) 选项影响了负载均衡,如果应用使用了MQOPEN选项MQOO_BIND_AS_Q_DEF.
15. DISPLAY QUEUE(*) CLUSINFO
DISPLAY QUEUE(*) CLUSINFO
[The following output is partial]
AMQ8409: Display Queue details.
QUEUE(SYSTEM.CLUSTER.COMMAND.QUEUE) TYPE(QLOCAL)
AMQ8409: Display Queue details.
QUEUE(SYSTEM.CLUSTER.REPOSITORY.QUEUE) TYPE(QLOCAL)
AMQ8409: Display Queue details.
QUEUE(SYSTEM.CLUSTER.TRANSMIT.QUEUE) TYPE(QLOCAL)
AMQ8409: Display Queue details.
QUEUE(TESTCLUS) TYPE(QLOCAL)
AMQ8409: Display Queue details.
QUEUE(INQUIRY) TYPE(QCLUSTER)
AMQ8409: Display Queue details.
QUEUE(INQUIRY) TYPE(QCLUSTER)
这个命令显示了关于集群类型(QCLUSTER)的信息,i.e. 集群队列,此外使用QLOCAL,QALIAS,QREMOTE,和QMODEL类型。
对于集群队列,信息从队列管理器的存储库获得。部分存储库不会知道集群队列直到它已经被队列管理器打开。在z/OS,你不能从CSQINP2处命令。
16. 负载均衡
当一个集群包含一个更多的同名队列实例,负载均衡决定了最佳队列去路由消息。
考虑到:
- 可用通道,队列管理器和队列
- 如何去对了本地队列的复制(CLWLUSEQ 在V6)
在它最简洁模式,负载管理影响循环DNS效果。
MQ V6 有一个额外的参数可以被用来影响运算法则的结果。
- 队列:CLWLPRTY, CLWLRANK, CLWLUSEQ
- 队列管理器: CLWLUSEQ, CLWLMRUC
- 通道: CLWLPRTY, CLWLRANK,CLWLWGHT, NETPRTY
你可以自己编写负载均衡的出口。
当负载均衡发生的时候:
- 打开队列
MQOO_BIND_NOT_FIXED 打开选项,或者
- 使用缺省打开方式MQOO_BIND_AS_Q_DEF 和 DEFBIND(NOTFIXED) 在队列定义中设置. DEFBIND(OPEN) 是默认的。
- 把MQMD.ObjectQMgrName留为空可以允许队列管理器去选择队列实例。为了强制消息给指定的集群队列实例,在ObjectQmgrName中指定队列管理器的名字。
17. 中间配置
队列管理器可以是一个或多个集群的成员。列出这些集群用NAMELIST。你可以有多于一个的namelist去完成交叠的集群。
你可以使用REPOSNL(namelist)去更改一个完全存储库QMGR而不是用REPOS。对于通道和队列,你可以指定CLUSNL(namelist)而不是指定CLUSTER参数。
18. 涉及到的一些高级任务
Queue Manager Clusters手册的第四章描述了你如何去使用队列管理器别名,回复队列别名,队列别名允许更复杂的操作。
你可以从集群外的队列管理器输入或者使用这些配置选项从集群外的队列管理器输入。手册提供了一些示例的定义。
Queue Manager Clusters手册的第九章描述了高级任务,包括:
- 从队列管理器中删除一个集群队列
- 移动完全存储库到另外一个队列管理
- 从一个集群中删除一个队列管理器
- 删除一个集群网络
跟随以下手册的步骤执行这些任务。否则,你可能最后在集群中碰见问题。
19. 解决问题的一些技巧
- 存储库管理器是否在运行?检查AMQERRxx.log或者CHINjoblog
- 通道可以双向运行吗?Display CLUSQMGR和 CHSTATUS信息
- SYSTEM.CLUSTER队列是否可用?命令 DISPLAY QUEUE(SYSTEM.C)ALL
- SYSTEM.CLUSTER.COMMAND.QUEUE 或者SYSTEM.CLUSTER.TRANSMIT.QUEUE 消息在吗?
- 有QMIDs的副本给QMGR吗?命令 DISPLAY CLUSQMGR(*) QMID
20. 解决问题的情况
DISPLAY CLUSQMGR 可以显示 CLUSQMGR使用SYSTEM.TEMP启动的名字。队列管理器仍然没有接受到完全存储库中的所有必要信息。
集群缓存在z/OS上。查看 technote 1240731 针对由于集群分布式队列管理器引起的问题。在MQ V6,你可以设置CLCACHE(DYNAMIC)给动态的增加缓存存储。对于z/OS,CSQXRRMF模块在当前级别上吗?
21. 解决问题-刷新和重设
刷新集群和重设集群不需要在正常环境下命令。当有错误的配置或者缺乏连接性,这个连接性在这样的情况下更坏,它们将不能修复集群。
刷新:
刷新集群移出和重建关于集群的本地信息。
REFRESH CLUSTER(clustername) REPOS(NO)
REFRESH CLUSTER(clustername) REPOS(YES)
同样刷新关于完全存储库管理器的信息,它不能从完全存储库执行命令。
REFRESH CLUSTER(*)
重设:
重设集群是从完全存储库队列管理器执行的。它强制的移出了集群中的队列管理器和指定的QMID。The
- RESET CLUSTER(clustername)
QMNAME(qmname) ACTION(FORCEREMOVE) QUEUES(NO)
- RESET CLUSTER(clustername) QMID(qmid)
ACTION(FORCEREMOVE) QUEUES(NO)
22. Web支持和手册
WebSpere MQ 产品支持页面:
http://www-306.ibm.com/software/integration/wmq/support/.
The MQ Library:
http://www-306.ibm.com/software/integration/wmq/library/
WebSphere MQ Queue Manager Clusters manual:
- SC34-6061-02 for MQ 5.3.x
- SC34-6589-00 for MQ 6.0
- “Appendix A. Troubleshooting” lists common error
symptoms and causes plus some problem scenarios with
their resolutions
Websphere MQ Cluster的更多相关文章
- WebSphere MQ Explorer的sqlserver的jdbc
一.IBM WebSphere MQ7.0的jdbc支持数据库有: DB2 Informix Informix_With_Date_Format Microsoft_SQL_Server Oracle ...
- IBM WebSphere MQ的oracle的jdbc
一.IBM WebSphere MQ7.0的jdbc支持数据库有: DB2 Informix Informix_With_Date_Format Microsoft_SQL_Server Oracle ...
- IBM WebSphere MQ 7.5基本用法
一.下载7.5 Trial版本 http://www.ibm.com/developerworks/downloads/ws/wmq/ 这是下载网址,下载前先必须注册IBM ID,下载完成后一路Nex ...
- WebSphere MQ 入门指南
WebSphere MQ 入门指南这是一篇入门指南.我们从最基本的概念说起: 基础概念 对于MQ,我们需要知道4个名词:队列管理器.队列.消息.通道:对于编程设计人员,通常更关心消息和队列,对于维护管 ...
- IBM WebSphere MQ 通道类型配置
IBM WebSphere MQ 通道类型配置 初学MQ,四种常见通道,windows下操作 目录 Sender--Receiver Server-Receiver Server-Requester ...
- WebSphere MQ 入门指南【转】
WebSphere MQ 入门指南 转自 WebSphere MQ 入门指南 - 大CC - 博客园http://www.cnblogs.com/me115/p/3456407.html 这是一篇入门 ...
- (转)WebSphere MQ基础命令
--查看MQ版本-- dspmqver --查看队列状态--dspmq --创建队列管理器--crtmqm -q ECIS_QM --删除队列管理器--dltmqm ECIS_QM --启动队列管理器 ...
- IBM的websphere MQ的c#使用
1.关于websphere MQ的常用名词(针对Websphere MQ7.5版本) 队列管理器:为应用程序提供消息传递服务的程序.使用消息队列接口(MQI)的应用程序可以将消息放置到队列并可从队列中 ...
- 命令查看WebSphere MQ运行状态
参考:https://wenku.baidu.com/view/34e40e2ffd0a79563c1e72b9.html 一.查看队列管理器运行状态 # dspmq 显示结果中QMNAME表示MQ队 ...
随机推荐
- 【AGC014E】Blue and Red Tree
Description 给定一棵\(n\)个节点的蓝边树,再给定一棵\(n\)个节点的红边树.请通过若干次操作将蓝树变成红树.操作要求和过程如下: 1.选定一条边全为蓝色的路径: 2.将路径上的一条蓝 ...
- 【codeforces 175D】 Plane of Tanks: Duel
http://codeforces.com/problemset/problem/175/D (题目链接) 题意 A,B两人玩坦克大战,坦克有生命值,射击间隔,伤害范围,未命中的概率.问A赢的概率是多 ...
- Android 自定义ImageView支持缩放,拖拽,方便复用
今天刚发了一篇关于ImageView的缩放和拖拽的博客,然后我想了下,将他自定义下,方便我们来复用这个imageView,效果我就不多说了,http://blog.csdn.net/xiaanming ...
- git 线上回滚问题纪要
1. git revert 作用 revert 用来取消置顶的提交的内容 2. 前提说明 当讨论 revert 时,需要分两种情况,因为 commit 分为两种: 一种是常规的 commit,也就是使 ...
- js动画最佳实现——requestAnimationFrame
我们经常用setInterval来实现动画,其实这种做法不是太好,因为不同浏览器的刷新频率也不一样(一般认为设置16为最佳,按每秒60帧算,1000/60≍16.67) var dis = 0,tim ...
- 函数和常用模块【day06】:subprocess模块(十)
本节内容 1.概述 2.前言 3.subprocess模块 4.subprocess.Popen() 一.概述 我们在实际的工作中,需要跟操作系统的命令做交互,但我们如何用python去跟操作系统之间 ...
- Linux命令之grep
grep命令 用处:文本搜索工具 用法:grep + ‘查找关键字的名字’ + 文件名 示例: 还在profile里面查找then 干净利落强大,有关then的信息显示
- 在 github 新建一个文件夹
创建新文件的时候名字后面加个斜杠(/)就可以了.
- fastjson基本使用 (待继续完善)【原】
参考: http://blog.csdn.net/wx_962464/article/details/37612861 maven库下载 fastjson基本样例1 Cat.java package ...
- 阿里巴巴为什么不用 ZooKeeper 做服务发现?
阿里巴巴为什么不用 ZooKeeper 做服务发现? http://jm.taobao.org/2018/06/13/%E5%81%9A%E6%9C%8D%E5%8A%A1%E5%8F%91%E7%8 ...