我有一个Windows服务,应该在(Windows Server 2012 R2)故障转移群集中作为专用角色的通用服务运行,也就是说,在故障转移群集中为此服务配置了主机名和IP地址经理。 (我认为'角色'曾经在早期的Windows服务器版本中被称为'组')。
一个要求是服务必须知道/提供其运行的角色的主机名。System.Net.Dns.GetHostName()
返回服务当前处于活动状态的物理服务器的名称,但需要的是配置角色的主机名。
我在dns APi direction和MS documentation for the System.ServiceProcesses命名空间中都进行了搜索,但无法从这些资源中找到答案。
是否有.Net API可以检索到这个,或者这是一个错误的方法? (即,在安装期间将此信息写入配置数据库并从那里检索)。
答案 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
如果深入研究这些方法,还有一个 -
https://msdn.microsoft.com/en-us/library/cc512216(v=vs.85).aspx
如果以上内容对您没有帮助,您也可以尝试以下参考。
MSCluster_ResourceToPossibleOwner类是一个动态关联WMI类,表示资源列表及其可能的所有者节点。
希望这会有所帮助,我对使用故障转移群集和C#做一些事情很陌生。我希望我也可以从这篇文章中学习。