A Windows Server Failover Cluster (WSFC) is a group of independent servers that work together to increase the availability of applications and services.
SQL Server takes advantage of WSFC services and capabilities to support Always On availability groups and SQL Server Failover Cluster Instances.
As for Microsoft Windows
The pattern identifies instances of Microsoft Cluster Server running on the Windows platform.
|Discovered Process||matches regex '(?i)\bclussvc\.exe'|
|Windows Cluster Resource Monitor||regex'(?i)\bresrcmon\.exe$'|
|Windows Cluster Service||regex'(?i)\bclussvc\.exe$'|
|Node kind||Node type||Node key||Comments|
|SoftwareInstance||Microsoft Cluster Server||<cluster_id>/<type>/<host.key>|
"Main Cluster" contains all cluster members
Microsoft Failover Group
"Sub Clusters" contains only some cluster members.
It is modelled for ClusterServices which has len(possible_owners) < len(all_cluster_members) .
|ClusterMember||<member_id>/<cluster.key>||used for modeling of MS Cluster Nodes|
|used for modeling of MS Cluster ResourceGroups|
|ClusterResource||<resource.Name>/<service_node.key>||used for modeling of MS Cluster Resources|
Purpose of "Microsoft Failover Group" is to indicate that some resources (like SQL Server) are configured to run and failover only on some subset of cluster nodes.
As Microsoft Cluster Server software is part of certain editions of Microsoft Windows Server OS, its version is tied to the version of the OS itself. The Microsoft Cluster Server pattern therefore derives the version of Cluster Server SI from the OS version as set on the scanned Host node
Cluster ID information is extracted from the registry key: 'HKEY_LOCAL_MACHINE\Cluster\ClusterInstanceID'
Cluster name is extracted from:
WMI Query: 'SELECT Name, Fqdn from MSCluster_Cluster' (namespace='root\MSCluster')
Registry query: 'HKEY_LOCAL_MACHINE\Cluster\ClusterName'
If the cluster_name attribute is not obtained then cluster_name is set to the cluster_id value
Once both the SoftwareInstance and Cluster nodes have been created the pattern then creates two different relationships.
First a SoftwareService relationship is created using the SoftwareInstance as the ServiceProvider and the Cluster as the Service.
Secondly a HostContainment relationship is created between the Cluster (HostContainer) and the Host (ContainedHost).
These two relationships allow for the Cluster service to be correctly modeled in the Discovery UI.
For BMC Discovery 11.x, cluster awareness has been incorporated into the pattern module.
After performing additional WMI queries to obtain details of MSCluster Nodes, ResourceGroups and Resources, the pattern will create a number of ClusterMember, ClusterService and ClusterResource nodes for the Microsoft Cluster Server being modelled. Note that "Available Storage" ClusterService nodes will never have ClusterResources.
The ClusterService nodes will have a specific type attribute if BMC Discovery detects they are one of the following services, otherwise they will have no type attribute:
SELECT Name, Description, State from MSCluster_Node (for os_version="Server 2003"only)
SELECT Name, Description, NodeInstanceID, State from MSCluster_Node
|SELECT Name, __RELPATH FROM MSCluster_Node|
|SELECT GroupComponent, PartComponent, __RELPATH FROM MSCluster_NodeToNetworkInterface|
|SELECT IPv4Addresses, IPv6Addresses, __RELPATH FROM MSCluster_NetworkInterface|
SELECT Name, Description, State FROM MSCluster_ResourceGroup (for os_version="Server 2003" nd 2008)
SELECT Name, Description, State, GroupType FROM MSCluster_ResourceGroup
|linkage between ClusterResources and ClusterMembers||SELECT PartComponent, GroupComponent, __RELPATH FROM MSCluster_NodeToActiveGroup|
|linkage between ClusterResources and ClusterServices||SELECT GroupComponent, PartComponent, __RELPATH FROM MSCluster_ResourceGroupToResource|
|ClusterResource nodes||SELECT Name, Description, Type, PrivateProperties, __RELPATH FROM MSCluster_Resource|
|<possible_owner> attribute||SELECT * FROM MSCluster_ResourceToPossibleOwner|