获取.Net中的故障转移群集角色的主机名

时间:2014-07-22 11:12:12

标签: c# .net dns failover failovercluster

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

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

我在dns APi directionMS documentation for the System.ServiceProcesses命名空间中都进行了搜索,但无法从这些资源中找到答案。

是否有.Net API可以检索到这个,或者这是一个错误的方法? (即,在安装期间将此信息写入配置数据库并从那里检索)。

1 个答案:

答案 0 :(得分:0)

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

至于你的qeustion,我相信每个Role都有一个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

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

  • ExecuteNodeControl方法,即使有CLUSCTL_NODE_GET_ID

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

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

  

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

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