0

我有一个 Windows 服务,它应该在(Windows Server 2012 R2)故障转移集群中作为通用服务以专用角色运行,也就是说,在故障转移集群管理器中为此服务配置了主机名和 IP 地址。(我认为在早期的 Windows 服务器版本中,“角色”曾经被称为“组”)。

一个要求是服务必须知道/提供它正在运行的角色的主机名。System.Net.Dns.GetHostName()返回服务当前处于活动状态的物理服务器的名称,但需要的是角色的配置主机名。

我已经在dns APi 方向MS 文档中搜索了 System.ServiceProcesses命名空间,但无法从这些资源中弄清楚这一点。

是否有能够检索此内容的 .Net API,或者这完全是错误的方法?(即是否应该在安装期间将此信息写入配置数据库并从那里检索)。

4

1 回答 1

0

有一个用于故障转移群集的 .NET API。请参考这里 -

至于你的问题,我相信每个角色都有一个 OwnerNode 属性,这个 WMI 类应该可以帮助你。

MSCluster_Node 类

[Dynamic, Provider ("MS_CLUSTER_PROVIDER"), UUID ("{C306EBED-0654-4360-AA70-DE912C5FC364}")]class MSCluster_Node : CIM_UnitaryComputerSystem
{   
 string             Roles[];
}

https://msdn.microsoft.com/en-us/library/aa371446(v=vs.85).aspx

如果您深入研究这些方法,还有一个 -

  • 甚至具有 CLUSCTL_NODE_GET_ID 的 ExecuteNodeControl 方法

https://msdn.microsoft.com/en-us/library/cc512216(v=vs.85).aspx

如果以上对您没有帮助,您也可以尝试以下参考。

MSCluster_ResourceToPossibleOwner 类是一个动态关联 WMI 类,它表示资源列表及其可能的所有者节点。

希望这会有所帮助,我对使用故障转移集群和 C# 做一些事情还是很陌生。我希望我也可以从这篇文章中学习。

于 2015-03-18T17:04:01.633 回答