我们正在迁移到 Windows 2008 R2 Standard,并将使用 Microsoft 集群(主动-被动)配置。我们的应用程序严重依赖于 MSMQ 专用队列,并且我们的安装使用以下 C# 代码创建了 100 多个专用队列。
MessageQueue.Create(".\private$\myqueue", false);
由于安装不在集群上下文中运行,因此队列是在本地节点上创建的,而不是在集群中创建的。
然后我们尝试将代码更改为:
MessageQueue.Create("MYCLUSTERNAME\private$\myqueue", false);
但是,您无法在不同的服务器(在本例中为集群服务器上下文)上创建专用队列,并且您会收到错误“队列路径名无效”。
我的两个问题是:
1)有没有一种方法可以在集群上下文中运行安装,以便在创建专用队列时,它实际上会在集群中创建队列?
2)如果没有,通过.NET 在集群中创建队列的最佳方法是什么?我读过一些博客,其中人们创建了一个驻留在集群内的中间人 Windows 服务,然后他们的安装使用进程间通信来告诉服务要创建哪些队列。这看起来像是一种黑客攻击,但如果这是唯一的方法,那么这是可行的。
以下是如何在集群实例上手动执行此操作。 (不通过代码)
仅在活动节点上创建必要的 MSMQ 队列。
A。单击“开始”,右键单击“命令提示符”,然后单击“以管理员身份运行”。
b.在命令提示符中输入以下命令(其中 {virtualname} 是实例的名称。)
i. SET _CLUSTER_NETWORK_HOSTNAME_={virtualname}
ii. SET _CLUSTER_NETWORK_NAME_={virtualname}
iii. Compmgmt.msc
C。现在,计算机管理已从与变量相同的命令提示符启动,看起来您是在本地进行更改,但实际上是在集群实例中更改它们。
d.扩展服务和应用程序。
e.展开消息队列。
F。右键单击专用队列,然后单击新建专用队列。
G。验证 Create in: 是否是虚拟名称。
H。在队列名称:private$\ 字段中输入队列名称,然后单击确定按钮。
我。关闭计算机管理。
这适用于 Windows 2008 R2
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)