大纲:ios
1、 什么是集群
集群就是Websphere MQ 队列管理的逻辑分组,它能够帮助你:
减小了系统管理-因为更少的通道、远程队列、传输队列的定义
增长了高可用性和负载均衡-因为能够在集群中定义同名的队列实例和多个队列管理器以及在他们之间的分布式的消息
2、创建基本的集群
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. 架构描述:web
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. 解决问题的一些技巧算法
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
缓存