我有一个Windows服务,它应该在(Windows Server 2012 R2)故障转移集群中作为专用角色的通用服务运行,也就是说,在故障转移集群管理器中为该服务配置了主机名和IP地址。(我认为在早期的Windows服务器版本中,"角色"曾经被称为"组")。
一个要求是服务必须知道/提供它所运行的角色的主机名。System.Net.Dns.GetHostName()
返回当前服务处于活动状态的物理服务器的名称,但需要的是角色的配置主机名。
我已经在dns APi方向和MS文档中搜索了系统。ServiceProcesses命名空间,但是无法从这些资源中找出这个。
是否有一个。net API能够检索这个,或者这是完全错误的方法?(也就是说,这些信息应该在安装期间写入配置数据库并从中检索)。
有一个用于故障转移群集的。net API。请参考此处-
- https://msdn.microsoft.com/en-us/library/aa372876 (v = vs.85) . aspx
至于你的问题,我相信每个角色都有一个OwnerNode属性,这个WMI类应该可以帮助你。
<MSCluster_Node类/strong>
[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
如果你深入到方法,还有一个-
- executenodeconcontrol方法,甚至有一个CLUSCTL_NODE_GET_ID
https://msdn.microsoft.com/en-us/library/cc512216 (v = vs.85) . aspx
如果上面没有帮助你,你也可以尝试下面的参考。
MSCluster_ResourceToPossibleOwner类是一个动态关联WMI类,它表示资源及其可能的所有者节点的列表。
- https://msdn.microsoft.com/en-us/library/aa371478 (v = vs.85) . aspx
希望这有帮助,我对用故障转移集群和c#做事情很陌生。我希望我也能从这篇文章中学到东西。