How to Register Dll in Windows Server 2016
First published on MSDN on Jan 16, 2019
Over the years, we have been asked about what some of the Failover Cluster resources/resource types are and what they do. There are several resources that have been asked about on multiple occasions and we haven't really had a good definition to point you to. Well, not anymore.
What I want to do with this blog is define what they are, what they do, and when they were added (or removed). I am only going to cover the in-box resource types that come with Failover Clustering. But first, I wanted to explain what a cluster "resource" and "resource types" are.
Cluster resources are physical or logical entities, such as a file share, disk, or IP Address managed by the Cluster Service. The operating system does not distinguish between cluster and local resources. Resources may provide a service to clients or be an integral part of the cluster. Examples of resources would be physical hardware devices such as disk drives, or logical items such as IP addresses, network names, applications, and services. They are the basic and smallest configurable unit managed by the Cluster Service. A resource can only run on a single node in a cluster at a time.
Cluster resource types are dynamic library plug-ins. These Resource DLLs are responsible for carrying out most operations on cluster resources. A resource DLL is characterized as follows:
- It contains the resource-specific code necessary to provide high availability for instances of one or more resource types.
- It exposes this code through a standard interface consisting of a set of entry point functions .
- It is registered with the Cluster service to associate one or more resource type names with the name of the DLL.
- It is always loaded into a Resource Monitor's process when in use.
When the Cluster service needs to perform an operation on a resource, it sends the request to the Resource Monitor assigned to the resource. If the Resource Monitor does not have a DLL in its process that can handle that type of resource, it uses the registration information to load the DLL associated with the resource type. It then passes the Cluster service's request to one of the DLL's entry point functions. The resource DLL handles the details of the operation so as to meet the specific needs of the resource.
You can define your own resource types to provide customized support for cluster-unaware applications, enhanced support for cluster-aware applications, or specialized support for new kinds of devices. For more information, see Creating Resource Types .
All resource types that are available in a Failover Cluster can be seen by right-mouse clicking on the name of the Cluster, choosing Properties, and selecting the Resource Types tab ( shown below ).
You can also get a list from running the PowerShell command Get-ClusterResourceType . Please keep in mind that all resource types may not show up or have access to. For example, if the Hyper-V role is not installed, the virtual machine resource types will not be available.
So enough about this, let's get to the resource types, when they were available and, for some, when they were last seen.
Since there are multiple versions of Windows Clustering, this blog will only focus on the two latest versions (Windows Server 2016 and 2019).
Windows Server 2016 / 2019
Cloud Witness (clusres.dll): Cloud Witness is a quorum witness that leverages Microsoft Azure as the arbitration point. It uses Azure Blob Storage to read/write a blob file which is then used as an arbitration point in case of split-brain resolution.
DFS Replicated Folder (dfsrclus.dll): Manages a Distributed File System (DFS) replicated folder. When creating a DFS, this resource type is configured to ensure proper replication occurs. For more information regarding this, please refer to the 3-part blog series on the topic.
DHCP Service (clnetres.dll): The DHCP Service resource type supports the Dynamic Host Configuration Protocol (DHCP) Service as a cluster resource. There can be only one instance of a resource of this type in the cluster (that is, a cluster can support only one DHCP Service). Dynamic Host Configuration Protocol (DHCP) is a client/server protocol that automatically provides an Internet Protocol (IP) host with its IP address and other related configuration information such as the subnet mask and default gateway. RFCs 2131 and 2132 define DHCP as an Internet Engineering Task Force (IETF) standard based on Bootstrap Protocol (BOOTP), a protocol with which DHCP shares many implementation details. DHCP allows hosts to obtain required TCP/IP configuration information from a DHCP server.
Disjoint IPv4 Address (clusres.dll): IPv4 Resource type that can be used if setting up a site to site VPN Gateway. It can only be configured by PowerShell, not by the Failover Cluster Manager, the GUI tool on Windows Server. We added two IP addresses of this resource type, one for the internal network and one for the external network.
- The internal address is plumbed down for the cluster network that is identified by Routing Domain ID and VLAN number. Remember, we mapped them to the internal network adapters on the Hyper-V hosts earlier. It should be noted that this address is the default gateway address for all machines on the internal network that need to connect to Azure.
- The external address is plumbed down for the cluster network that is identified by the network adapter name. Remember, we renamed the external network adapter to "Internet" on both virtual machines.
Disjoint IPv6 Address (clusres.dll): IPv6 Resource type that can be used if setting up a site to site VPN Gateway. It can only be configured by PowerShell, not by the Failover Cluster Manager, the GUI tool on Windows Server. We added two IP addresses of this resource type, one for the internal network and one for the external network.
- The internal address is plumbed down for the cluster network that is identified by Routing Domain ID and VLAN number. Remember, we mapped them to the internal network adapters on the Hyper-V hosts earlier. It should be noted that this address is the default gateway address for all machines on the internal network that need to connect to Azure.
- The external address is plumbed down for the cluster network that is identified by the network adapter name. Remember, we renamed the external network adapter to "Internet" on both virtual machines.
Ras Cluster Resource (rasclusterres.dll): This resource object specifies where the site-to-site VPN configuration is stored. The file share can be anywhere the two virtual machines have read / write access to. It can only be configured by PowerShell, not by the Failover Cluster Manager, the GUI tool on Windows Server. This resource type is only available after installing the VPN Roles in Windows Server.
Distributed File System (clusres2.dll): Manages a Distributed File System (DFS) as a cluster resource. When creating a DFS, this resource type is configured to ensure proper replication occurs. For more information regarding this, please refer to the 3-part blog series on the topic.
Distributed Transaction Coordinator (mtxclu.dll): The Distributed Transaction Coordinator (DTC) resource type supports the Microsoft Distributed Transaction Coordinator (MSDTC). MSDTC is a Windows service providing transaction infrastructure for distributed systems, such as SQL Server. In this case, a transaction means a general way of structuring the interactions between autonomous agents in a distributed system.
File Server (clusres2.dll): Manages the shares that are created as highly available. A file share is a location on the network where clients connect to access data, including documents, programs, images, etc.
File Share Witness (clusres.dll): A File Share Witness is a witness (quorum) resource and is simply a file share created on a completely separate server from the cluster for tie-breaker scenarios when quorum needs to be established. A File Share Witness does not store cluster configuration data like a disk. It does, however, contain information about which version of the cluster configuration database is most recent.
Generic Application (clusres2.dll): The Generic Application resource type manages cluster-unaware applications as cluster resources, as well as cluster-aware applications that are not associated with custom resource types. The Generic Application resource DLL provides only very basic application control. For example, it checks for application failure by determining whether the application's process still exists and takes the application offline by terminating the process.
Generic Script (clusres2.dll): The Generic Script resource type works in conjunction with a script that you must provide to manage an application or service as a highly available cluster resource. In effect, the Generic Script resource type allows you to script your own resource DLL. For more information on how to use the Generic Script resource type, see Using the Generic Script Resource Type .
Generic Service (clusres2.dll): The Generic Service resource type manages services as cluster resources. Similar to the Generic Application resource type, the Generic Service resource type provides only the most basic functionality. For example, the failure of a Generic Service resource is determined by a query of the Service Control Manager (SCM). If the service is running, it is presumed to be online. To provide greater functionality, you can define a custom resource type (for information, see Creating Resource Types ).
A generic service resource type is usually used to manage a stateless service as a cluster resource, which can be failed over. However, generic services don't provide much state information other than their online state, so if they have an issue that doesn't cause the resource to go offline, it is more difficult to detect a service failure.
Generic services should only be used when all of the following conditions are true; otherwise, you should create a resource DLL.
- The resource is not a device. The generic resource types are not designed to manage hardware.
- The resource is stateless.
- The resource is not dependent on other resources.
- The resource does not have unique attributes that should be managed with private properties.
- The resource does not have special functionality that should be exposed through control codes.
- The resource can be started and stopped easily without using special procedures.
Health Service (healthres.dll): The Health Service constantly monitors your Storage Spaces Direct cluster to detect problems and generate "faults". Through either Windows Admin Center or PowerShell, it displays any current faults, allowing you to easily verify the health of your deployment without looking at every entity or feature in turn. Faults are designed to be precise, easy to understand, and actionable.
Each fault contains five important fields:
- Severity
- Description of the problem
- Recommended next step(s) to address the problem
- Identifying information for the faulting entity
- Its physical location (if applicable)
IP Address (clusres.dll): The IP Address resource type is used to manage Internet Protocol (IP) network addresses. When an IP Address resource is included in a group with a Network Name resource, the group can be accessed by network clients as a failover cluster instance (formerly known as a virtual server).
IPv6 Address (clusres.dll): The IPv6 Address resource type is used to manage Internet Protocol version 6 (IPv6) network addresses. When an IPv6 Address resource is included in a group with a Network Name resource, the group can be accessed by network clients as a failover cluster instance (formerly known as a virtual server).
IPv6 Tunnel Address (clusres2.dll): The IPv6 Tunnel Address resource type is used to manage Internet Protocol version 6 (IPv6) network tunnel addresses. When an IPv6 Tunnel Address resource is included in a group with a Network Name resource, the group can be accessed by network clients as a failover cluster instance (formerly known as a virtual server).
iSCSI Target Server (wtclusres.dll): Creates a highly available ISCSI Target server for machines to connect to for drives.
Microsoft iSNS (isnsclusres.dll): Manages an Internet Storage Name Service (iSNS) server. iSNS provides discovery services for Internet Small Computer System Interface (ISCSI) storage area networks. iSNS processes registration requests, deregistration requests, and queries from iSNS clients. We would recommend not using this resource type moving forward as it is being removed from the product.
MSMQ (mqclus.dll): Message Queuing (MSMQ) technology enables applications running at different times to communicate across heterogeneous networks and systems that may be temporarily offline. Applications send messages to queues and read messages from queues.
MSMQTriggers (mqtgclus.dll): Message Queuing triggers allow you to associate the arrival of incoming messages at a destination queue with the functionality of one or more COM components or stand-alone executable programs. These triggers can be used to define business rules that can be invoked when a message arrives at the queue without doing any additional programming. Application developers no longer must write any infrastructure code to provide this kind of message-handling functionality.
Network File System (nfsres.dll): NFS cluster resource has dependency on one Network Name resource and can also depend on one or more disk resources in a resource group. For a give network name resource there can be only one NFS resource in a resource group. The dependent disk resource hosts one or more of NFS shared paths. The shares hosted on a NFS resource are scoped to the dependent network name resources. Shares scoped to one network name are not visible to clients that mount using other network names or node names residing on the same cluster.
Network Name (clusres.dll): The Network Name resource type is used to provide an alternate computer name for an entity that exists on a network. When included in a group with an IP Address resource, a Network Name resource provides an identity to the role, allowing the role to be accessed by network clients as a Failover Cluster instance.
Distributed Network Name (clusres.dll): A Distributed Network Name is a name in the Cluster that does not use a clustered IP Address. It is a name that is published in DNS using the IP Addresses of all the nodes in the Cluster. Client connectivity to this type name is reliant on DNS round robin. In Azure, this type name can be used in leiu of having the need for an Internal Load Balancer (ILB) address. The predominant usage of a Distributed Network Name is with a Scale-Out File Server (discussed next). In Windows Server 2019, we added the ability for the Cluster Name Object (CNO) to use a DNN. For more information on the CNO usage as a Distinguished Network Name, please refer to the Windows Server 2019 Failover Clustering New Features blog.
Scale Out File Server (clusres.dll): A Scale Out File Server (SOFS) is a clustered file share that can be accessed by any of the nodes. It uses the Distributed Network Name as the client access point and does not use a clustered IP Address. The Distributed Network Name is discussed previously.
Physical Disk (clusres.dll): The Physical Disk resource type manages a disk on a shared bus connected to two or more cluster nodes. Some groups may contain one or more Physical Disk resources as dependencies for other resources in the group. On a Storage Spaces Direct cluster, the disks are local to each of the nodes.
Hyper-V Network Virtualization Provider Address (provideraddressresource.dll): The IP address assigned by the hosting provider or the datacenter administrators based on their physical network infrastructure. The PA appears in the packets on the network that are exchanged with the server running Hyper-V that is hosting network virtualized virtual machine(s). The PA is visible on the physical network, but not to the virtual machines.
Storage Pool (clusres.dll): Manages a storage pool resource. It allows for the creation and deletion of storage spaces virtual disks.
Storage QoS Policy Manager (clusres.dll): A resource type for the Policy Manger that collects the performance of storage resources allocated to the individual highly available virtual machines. It monitors the activity to help ensure storage is used fairly within I/O performance established through any policies that may be configured.
Storage Replica (wvrres.dll): Storage Replica is Windows Server technology that enables replication of volumes between servers or clusters for disaster recovery. This resource type enables you to create stretch failover clusters that span two sites, with all nodes staying in sync. A Stretch Cluster allows configuration of computers and storage in a single cluster, where some nodes share one set of asymmetric storage and some nodes share another, then synchronously or asynchronously replicate with site awareness. By stretching clusters, workloads can be run in multiple datacenters for quicker data access by local proximity users and applications, as well as better load distribution and use of compute resources.
Task Scheduler (clusres.dll): Task Scheduler is a resource that is tied to tasks you wish to run against the Cluster. Clustered tasks are not created or shown in Failover Cluster Manager. To create or view a Clustered Scheduled Task, you would need to use PowerShell.
- Set-ClusteredScheduledTask
- Register-ClusteredScheduledTask
- Get-ClusteredScheduledTask
- Unregister-ClusteredScheduledTask
Virtual Machine (vmclusres.dll): The Virtual Machine resource type is used to control the state of a virtual machine (VM). The following table shows the mapping between the state of the VM (indicated by the EnabledState property of the Msvm_ComputerSystem instance representing the VM) and the state of the Virtual Machine resource (indicated by the State property of the MSCluster_Resource class or the return of GetClusterResourceState function).
VM State | Virtual Machine resource state |
Disabled | 3 |
Offline | 3 |
Suspended | 32769 |
Starting | 32770 |
Online Pending | 129 |
Online | 2 |
Stopping | 32774 |
Offline Pending | 130 |
Saving | 32773 |
Enabled | 2 |
Paused | 32768 |
Pausing | 32776 |
Resuming | 32777 |
Virtual Machine Cluster WMI (vmclusres.dll): The Virtual Machine Cluster WMI resource type is one used when virtual machine grouping (also known as virtual machine sets) has been configured. By grouping virtual machines together, managing the "group" is much easier than all of the virtual machines individually. VM Groups enable checkpoints, backup and replication of VMs that form a guest-cluster and that use a Shared VHDX.
Virtual Machine Configuration (vmclusres.dll): The Virtual Machine Configuration resource type is used to control the state of a virtual machine configuration.
Virtual Machine Replication Broker (vmclusres.dll): Replication broker is a prerequisite if you are replicating clusters using Hyper-V replica. It acts the point of contact for any replication requests, and can query into the associated cluster database to decide which node is the correct one to redirect VM specific events such as Live Migration requests etc. The broker also handles authentication requests on behalf of the VMs. A new node can be added or removed from a cluster at any point, without the need to reconfigure the replication as the communication between the primary and recovery clusters is directed to the respective brokers.
Virtual Machine Replication Coordinator (vmclusres.dll): Coordinator comes into picture when we use the concept of "collection" in Hyper-V replica . This was introduced in Windows Server 2016 and is a prerequisite if you are using few of the latest features for eg: shared virtual hard disks. When VMs are replicated as part of a collection, the replication broker coordinates actions/ events that affect VM group – for eg:, to take a point in time snapshot which is app consistent, applying the replication settings, modifying the interval for replication etc. and propagating the change across all the VMs in the collection.
WINS Service (clnetres.dll): The WINS Service resource type supports the Windows Internet Name Service (WINS) as a cluster resource. There can be only one instance of a resource of this type in the cluster; in other words, a cluster can support only one WINS Service. Windows Internet Name Service (WINS) is a legacy computer name registration and resolution service that maps computer NetBIOS names to IP addresses.
Windows Server 2016 only
Cross Cluster Dependency Orchestrator (clusres.dll): This is a resource type that you can ignore and does not do anything. This was to be a new feature to be introduced. However, it never came to fruition, but the resource type was not removed. It is removed in Windows Server 2019.
Windows Server 2019 only
SDDC Management (sddcres.dll): SDDC Management is installed when the cluster is enabled for Storage Spaces Direct. It is the management API that Windows Admin Center uses to connect/manage your Storage Spaces Direct. It is an in-box resource type with Windows Server 2019 and is a download and manual addition to Windows Server 2016. For information regarding this, please refer to the Manage Hyper-Converged Infrastructure with Windows Admin Center document.
Scaleout Worker (scaleout.dll): This is used for Cluster Sets. In a Cluster Set deployment, the CS-Master interacts with a new cluster resource on the member Clusters called "Cluster Set Worker" (CS-Worker). CS-Worker acts as the only liaison on the cluster to orchestrate the local cluster interactions as requested by the CS-Master. Examples of such interactions include VM placement and cluster-local resource inventorying. There is only one CS-Worker instance for each of the member clusters in a Cluster Set.
Scaleout Master (scaleout.dll): This is used when In a Cluster Set, the communication between the member clusters is loosely coupled, and is coordinated by a new cluster resource called "Cluster Set Master" (CS-Master). Like any other cluster resource, CS-Master is highly available and resilient to individual member cluster failures and/or the management cluster node failures. Through a new Cluster Set WMI provider, CS-Master provides the management endpoint for all Cluster Set manageability interactions.
Infrastructure File Server (clusres.dll): In hyper-converged configurations, an Infrastructure SOFS allows an SMB client (Hyper-V host) to communicate with guaranteed Continuous Availability (CA) to the Infrastructure SOFS SMB server. This hyper-converged SMB loopback CA is achieved via VMs accessing their virtual disk (VHDx) files where the owning VM identity is forwarded between the client and server. This identity forwarding allows ACL-ing VHDx files just as in standard hyper-converged cluster configurations as before. There can be at most only one Infrastructure SOFS cluster role on a Failover Cluster. Each CSV volume created in the failover automatically triggers the creation of an SMB Share with an auto-generated name based on the CSV volume name. An administrator cannot directly create or modify SMB shares under an Infra SOFS role, other than via CSV volume create/modify operations. This role is commonly used with Cluster Sets.
Thanks
John Marlin
Senior Program Manager
High Availability and Storage
Follow me on Twitter @JohnMarlin_MSFT
How to Register Dll in Windows Server 2016
Source: https://techcommunity.microsoft.com/t5/failover-clustering/windows-server-2016-2019-cluster-resource-resource-types/ba-p/372163