Ibm mq 如何将IBM MQ配置为HA群集?
我想创建一个高可用性集群。但是我在IBM文档中找不到创建一个的任何步骤 我按照指南创建集群 这两个QM都是使用docker compose部署的: 版本:“3.7” 服务: 伦敦: 建造: 上下文:./config/london 环境: 许可证:接受 MQ_QMGR_名称:QM1 MQ_启用_度量:true 端口: -9443:9443网络视图 -9157:9157度量 纽约: 建造: 上下文:./config/newyork 环境: 许可证:接受 MQ_QMGR_名称:QM2 MQ_启用_度量:true 端口: -9553:9443网络视图 -9158:9157指标 取决于: -伦敦 两个图像的Dockerfile:Ibm mq 如何将IBM MQ配置为HA群集?,ibm-mq,Ibm Mq,我想创建一个高可用性集群。但是我在IBM文档中找不到创建一个的任何步骤 我按照指南创建集群 这两个QM都是使用docker compose部署的: 版本:“3.7” 服务: 伦敦: 建造: 上下文:./config/london 环境: 许可证:接受 MQ_QMGR_名称:QM1 MQ_启用_度量:true 端口: -9443:9443网络视图 -9157:9157度量 纽约: 建造: 上下文:./config/newyork 环境: 许可证:接受 MQ_QMGR_名称:QM2 MQ_启用_度量
FROM ibmcom/mq
COPY init.mqsc /etc/mqm/20-init.mqsc
以下是伦敦MQ实例的配置:
* cluster config
ALTER QMGR +
REPOS(INVENTORY) +
PSCLUS(ENABLED)
DEFINE LISTENER(LONDON_LS) +
TRPTYPE(TCP) +
CONTROL(QMGR)
DEFINE CHANNEL(INVENTORY.LONDON) +
CHLTYPE(CLUSRCVR) +
TRPTYPE(TCP) +
CONNAME('london(1414)') +
CLUSTER(INVENTORY) +
DESCR('TCP Cluster-receiver channel for queue manager LONDON')
DEFINE CHANNEL(INVENTORY.NEWYORK) +
CHLTYPE(CLUSSDR) +
TRPTYPE(TCP) +
CONNAME('newyork(1414)') +
CLUSTER(INVENTORY) +
DESCR('TCP Cluster-sender channel from LONDON to repository at NEWYORK')
SET CHLAUTH('INVENTORY.LONDON') +
TYPE(QMGRMAP) +
QMNAME(QM2) +
USERSRC(CHANNEL) +
ADDRESS('*')
* cluster config
ALTER QMGR +
REPOS(INVENTORY) +
PSCLUS(ENABLED)
DEFINE LISTENER(NEWYORK_LS) +
TRPTYPE(TCP) +
CONTROL(QMGR)
DEFINE CHANNEL(INVENTORY.NEWYORK) +
CHLTYPE(CLUSRCVR) +
TRPTYPE(TCP) +
CONNAME('newyork(1414)') +
CLUSTER(INVENTORY) +
DESCR('TCP Cluster-receiver channel for queue manager NEWYORK')
DEFINE CHANNEL(INVENTORY.LONDON) +
CHLTYPE(CLUSSDR) +
TRPTYPE(TCP) +
CONNAME('london(1414)') +
CLUSTER(INVENTORY) +
DESCR('TCP Cluster-sender channel from NEWYORK to repository at LONDON')
SET CHLAUTH('INVENTORY.NEWYORK') +
TYPE (QMGRMAP) +
QMNAME(QM1) +
USERSRC(CHANNEL) +
ADDRESS('*')
这里是纽约的例子:
* cluster config
ALTER QMGR +
REPOS(INVENTORY) +
PSCLUS(ENABLED)
DEFINE LISTENER(LONDON_LS) +
TRPTYPE(TCP) +
CONTROL(QMGR)
DEFINE CHANNEL(INVENTORY.LONDON) +
CHLTYPE(CLUSRCVR) +
TRPTYPE(TCP) +
CONNAME('london(1414)') +
CLUSTER(INVENTORY) +
DESCR('TCP Cluster-receiver channel for queue manager LONDON')
DEFINE CHANNEL(INVENTORY.NEWYORK) +
CHLTYPE(CLUSSDR) +
TRPTYPE(TCP) +
CONNAME('newyork(1414)') +
CLUSTER(INVENTORY) +
DESCR('TCP Cluster-sender channel from LONDON to repository at NEWYORK')
SET CHLAUTH('INVENTORY.LONDON') +
TYPE(QMGRMAP) +
QMNAME(QM2) +
USERSRC(CHANNEL) +
ADDRESS('*')
* cluster config
ALTER QMGR +
REPOS(INVENTORY) +
PSCLUS(ENABLED)
DEFINE LISTENER(NEWYORK_LS) +
TRPTYPE(TCP) +
CONTROL(QMGR)
DEFINE CHANNEL(INVENTORY.NEWYORK) +
CHLTYPE(CLUSRCVR) +
TRPTYPE(TCP) +
CONNAME('newyork(1414)') +
CLUSTER(INVENTORY) +
DESCR('TCP Cluster-receiver channel for queue manager NEWYORK')
DEFINE CHANNEL(INVENTORY.LONDON) +
CHLTYPE(CLUSSDR) +
TRPTYPE(TCP) +
CONNAME('london(1414)') +
CLUSTER(INVENTORY) +
DESCR('TCP Cluster-sender channel from NEWYORK to repository at LONDON')
SET CHLAUTH('INVENTORY.NEWYORK') +
TYPE (QMGRMAP) +
QMNAME(QM1) +
USERSRC(CHANNEL) +
ADDRESS('*')
我希望有一个主题,在这个主题中,我的应用程序可以从中写入/读取,而不管它们连接到哪个QM。
这是否可能?如果可能,您是否可以共享MQSC命令或到示例设置的链接。MQ群集是关于队列管理器之间的负载平衡连接 例如,您可以有一个在伦敦和纽约定义的集群队列,这可以在hot/hot上启用,并且集群成员发送到该队列的消息通常在两个实例之间进行循环。 如果您希望它是热/热的,那么您将禁用两个实例中的一个,例如伦敦,然后您将引导您的应用程序连接并从纽约读取,如果纽约宕机,您可以将队列放置在伦敦,从该点开始的消息将转到伦敦,您可以将应用程序定向到伦敦。请注意,纽约队列上的任何消息只有在纽约恢复后才可用。MQ不会将消息复制到两个队列管理器。 对于pub/sub,它略有不同,因为集群中的所有队列管理器都知道集群主题,如果集群中任何QM上的任何订阅者订阅了该主题,订阅者QM将进行代理订阅,如果该主题在任何队列管理器上发生任何发布,则副本将定向到每个本地订阅者以及具有代理订阅的任何QMs,订阅者QM随后将向其本地的任何订阅者传递消息,因此即使同一QM上有多个订阅者,也只会有一个代理子订阅者 如果您有非持久订阅者,那么他们可以订阅任何QM上的主题,并在创建订阅后(而不是之前)接收发布的消息。 如果您要求在订阅服务器未连接时接收消息,则需要持久订阅,该订阅将绑定到在其上创建的特定队列管理器。
您可能想看看RDQM,它确实提供了节点之间的复制,但与容器不兼容。如果您创建了集群,那么您就没有发布/订阅集群。现在,您已经可以在这两个队列管理器上订阅,以读取其中任何一个队列管理器上发布的消息。但您将收到两条消息,一条来自伦敦,另一条来自纽约在其中一个QM上创建一个主题共享该主题,但这些消息不共享。这就是我想要达到的目标。你的评论澄清了一些事情。感谢您的时间,这将是完美的添加到一个答案的评论中的所有信息。如果你还有其他问题,请告诉我。