群集中的MSMQ

时间:2018-07-02 10:52:49

标签: msmq windows-clustering

我将MSMQ配置为在群集中运行。群集由两个Hyper-V虚拟机组成,并在第三个虚拟机上使用公共存储(所有虚拟机共享Windows域,并且它们可以通过网络相互查看)。故障转移群集管理器管理单元显示MSMQ服务正在运行。机器上属于群集成员的非群集MSMQ服务显示为在服务管理单元中运行。现在,我尝试从远程计算机(从第三个虚拟机)向群集MSMQ服务和非群集MSMQ服务发送消息。我使用以下队列名称:

  • FormatName:Direct = OS:{clustered-msmq-netbios-name} \ private $ \ {queueName}
  • FormatName:Direct = TCP:{clustered-msmq-ip-address} \ private $ \ {queueName}
  • FormatName:Direct = TCP:{非群集msmq-ip地址} \ private $ \ {queueName}

当指定了非群集msmq ip地址时,邮件将传递到非群集msmq实例。但是,当我尝试访问群集msmq实例时,已发送的消息保留在传出消息队列中,并显示“正在等待连接”(无法连接Winsock套接字)。并且群集msmq实例上的队列为空。

我尝试使用telnet连接到群集msmq服务。对于连接,我指定了群集的msmq ip地址和端口1801。它显示“无法打开与主机的连接,端口1801:连接失败”。

有什么主意吗?

其他信息。当两个群集服务器都在线时,单击“管理消息队列”菜单项时,在管理单元中树中没有消息队列项。当我暂停一台服务器(第二台)时,树中会出现“消息队列”项。并且当树中有一个消息队列项时,消息就开始被处理(我看到它们从发送服务器上的传出消息队列中消失了,但是我没有看到它们出现在接收服务器上)。

1 个答案:

答案 0 :(得分:0)

似乎您只能从该群集节点(现在是角色所有者)管理群集消息队列。在现在不处于活动状态的群集节点上,没有“管理消息队列”菜单项。

考虑到消息未传递到群集msmq实例的问题,我只是在群集节点之一上重新安装了msmq Windows功能,并重新创建了msmq群集角色。经过这些操作后,传递消息才开始工作。