我有一个Windows服务,它应该在一个(Windows 2012 R2)故障转移集群中作为一个专用角色的通用服务运行,也就是说,故障转移群集管理器中为该服务配置了一个主机名和IP地址。(我认为在早期的Windows服务器版本中,“角色”曾经被称为“组”)。
一个要求是服务必须知道/提供它正在运行的角色的主机名。System.Net.Dns.GetHostName()返回当前处于活动状态的物理服务器的名称,但需要的是角色的配置主机名。
我在dns APi方向和System.ServiceProcesses的MS文档名称空间中都进行了搜索,但是无法从这些资源中找出这一点。
是否有能够检索到此的.Net API,或者这完全是错误的方法?(也就是说,如果在安装过程中将这些信息写入配置数据库并从中检索)。
发布于 2015-03-18 17:04:01
有一个用于故障转移群集的.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
如果你钻研这些方法,也会发现-
https://msdn.microsoft.com/en-us/library/cc512216(v=vs.85).aspx
如果上面的内容对您没有帮助,您也可以尝试下面的引用。
MSCluster_ResourceToPossibleOwner类是一个动态关联WMI类,它表示资源及其可能的所有者节点的列表。
希望这会有所帮助,我对使用故障转移群集和C#非常陌生。我希望我也能从这篇文章中学到东西。
https://stackoverflow.com/questions/24885806
复制相似问题