ibm-mq - Websphere MQ 和高可用性

标签 ibm-mq high-availability

当我阅读有关 Websphere MQ 中的 HA 的内容时,我总是说到重点,最佳实践是创建两个处理同一队列的队列管理器并使用开箱即用的负载平衡。因此,当一个人倒下时,另一个人就会接替他的工作。

嗯,这很好,但是属于队列管理器的队列中已关闭的消息怎么办?我的意思是这些消息是否驻留在那里(当然,当队列是持久的时)直到 QM 再次启动并运行?

此外,是否可以为这个双倍的队列管理器创建一个公共(public)存储?那么没有消息会等待 QM 启动。每条消息都将以正确的顺序传递。这是正确的吗?

最佳答案

WebSphere MQ 根据您的需求提供不同的 HA 功能。 WebSphere MQ 集群使用并行性在队列的多个实例之间分配负载。这提供了服务的可用性,但不提供传输中的消息。

硬件集群和多实例队列管理器 (MIQM) 都是使用队列管理器的多个实例的设计,这些实例可以查看该队列管理器状态的单个磁盘镜像。这些提供了传输中消息的可用性,但在集群故障转移时该服务会短暂不可用。

结合使用这些功能,可以提供传输中消息的恢复以及跨多个队列实例的服务可用性。

在硬件集群模型中,磁盘仅安装到一台服务器,集群软件监视故障并将磁盘、IP 地址和可能的其他资源交换到辅助节点。这需要一个硬件集群监视器(例如 PowerHA)来管理集群。

多实例 QMgr 完全在 WebSphere MQ 中实现,不需要其他软件。它的工作原理是让两个正在运行的 QMgr 实例指向同一个 NFS 4 共享磁盘安装。两个实例都会竞争文件上的锁。第一个获取锁的 QMgr 成为事件的 QMgr。由于没有硬件集群监视器来执行 IP 地址接管,此类集群将具有多个 IP 地址。任何现代版本的 WMQ 都允许使用多实例 CONNAME 来实现此目的,您可以在其中提供以逗号分隔的 IP 或 DNS 名称列表。以前使用客户端 channel 定义表 (CCDT) 来管理跨多个 QMgrs 的故障转移的客户端应用程序将继续工作,并且当前版本的 WMQ 继续支持 CCDT。

请参阅信息中心主题 Using WebSphere MQ with high availability configurations了解硬件集群和 MIQM 支持的详细信息。

客户端 channel 定义表文件在信息中心主题 Client Channel Definition Table file 中讨论。 .

关于ibm-mq - Websphere MQ 和高可用性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12597140/

相关文章:

java - 高可用性 Web 应用程序 - 如何升级?

mysql - Tomcat 7 JDBC 池在故障转移期间耗尽并且无法恢复

java - 如何向 MQ 服务器运行消息并获取输出消息

linux - IBM MQ : command to check remote queue managers on remote servers

python - 将 Redis 与 Sentinel 和 redis-py 一起使用时如何故障转移到新的主节点?

kubernetes - 是否有任何现有的自动化工具来部署Kubernetes HA集群?

api - 在 PUT API 导出中获取队列名称 (MQ_PUT_EXIT)

asp.net - 连接到 MQ 时出现错误 '2035' ('MQRC_NOT_AUTHORIZED'

java - WebSphere MQ SHARECNV 参数是否会导致重复消息?

design-patterns - 可扩展性的设计模式(或技术)