Intelligent Message Filter, Content Filter, can do more...

WinDeveloper IMF Tune
WinDeveloper IMF Tune

Exchange Cluster Resource DLLs and the Failover Process (Part 1)

Nirmal Sharma [Microsoft MVP, MCSEx3]

Nirmal Sharma [Microsoft MVP, MCSEx3] Photo

Nirmal is a Microsoft MVP in Directory Service. He has been involved in Microsoft Technologies since 1994 and followed the progression of Microsoft Operating System and software. He is specialised in writing “internal” technical articles, white papers and tips on various Microsoft technologies.

Cast your Vote
Poor Excellent

This article explains the internal process behind Exchange clustering and the functions used to interact with cluster components.

This article explains the internal process behind Exchange clustering and the functions used to interact with cluster components.

Most of the article talks about Exchange Server 2003 unless otherwise specified. It doesn't really show how to cluster an Exchange Server. It also doesn't talk much about Exchange Resources and their functionality in a clustered environment. Exchange resources work the same as in a standard environment (i.e. without clustering in effect). Instead the article focuses more on the Exchange Server clustering Resource DLLs.


Before we move ahead let define some important terms that we will be using.

Cluster Service - The Cluster Service is the main component of the Clustering Software which handles the communication between Resource Monitor and its managers. All the clustering managers run under the Cluster Service.

Resource Monitor - The Resource Monitor is part of the Clustering Software. This runs under the Cluster Service (Clussvc.exe) to handle the communications between the Resource DLL and the Clustering Software.

Resource DLL - The Resource DLL ships with cluster-aware applications. The functions executed by the Clustering Software are supported by the Resource DLL. The main function of the Resource DLL is to report the status of the application resources to the Clustering Software.

Cluster Configuration Database - The Cluster Configuration Database is a registry hive that contains the state of the cluster. It is located at HKLM\Cluster at registry.

Resources - A resource is an entity that can provide a service to a client and can be taken offline and brought online by the Clustering Software. A resource must have its associated Resource DLL so that the Resource Monitor can communicate with the resources using this DLL.

Windows Clustering and Exchange Server

Microsoft introduced its first version of clustering software in Windows NT 4.0 Enterprise Edition. Microsoft has significantly improved the clustering software in Windows 2000, Windows Server 2003 and Windows Server 2008. There are two types of clustering technologies: Server Cluster (formerly known as MSCS) and Network Load Balancing Cluster (NLB). MSCS or Server Cluster is basically used for High Availability. NLB is of course used to load balance the TCP/IP traffic. The MSCS or Server Cluster is also known as Failover Clustering.

Exchange Server supports Failover Clustering. It can also be installed on an NLB cluster however this is out of the article's scope. Exchange clustering was first introduced in Exchange Server Version 5.5 Enterprise Edition and continued in the versions that followed.

Windows Clustering includes many components such as Cluster Service, Resource Monitors, Node Manager, Membership Manager, Event Log Processor, Failover Manager, and Cluster Database Manager. The whole purpose of Failover clustering is to provide high availability of application resources. Clustering doesn't really need to decide how much CPU and Memory should be utilized by an application.

An application running in the clustering environment must be cluster-aware. A cluster-aware application supports the functions executed by the cluster service or its components as shown in Figure 1.1. There is no way for Cluster Service to know about the availability of resources of an application in the cluster unless the application is cluster-aware. For example, if a node holding the application resources fails, the Cluster Service running on that node must be notified in order to start the failover process for the application resources. Cluster Service does this by receiving the responses from the Resource Monitor. The Resource Monitor tracks the application resources with the help of Resource DLLs provided by cluster-aware applications. The Resource DLL for Exchange Server is EXRES.DLL.

Exchange Server Version 5.5 was not fully cluster-aware because it didn't include its own resource DLL. Instead it used a generic resource DLL provided by the Windows Clustering software. On the other hand, Exchange Server 2000 and 2003 are fully cluster-aware applications, supporting/responding to all functions executed by the cluster service. The main Resource DLL of Exchange Server, which supports all the functions, is EXRES.DLL. There are other Exchange Resource DLLs as well. We will discuss them in detail in this article.

Note: A Resource DLL is a separate application component that is specifically written to support cluster functions (for example, Open, Terminate, Online, Offline, Retry and so on).

Every cluster-aware application uses its own resource DLL to expose the status of its resources. If an application is not cluster-aware then it can't respond to the functions executed by the clustering software. For example, the Clustering Software Resource Monitor tracks Exchange Resources through EXRES.dll by performing two checks: IsAlive and LooksAlive. Implementing these tests is application specific and hence why cluster-aware applications are expected to provide their resource DLL. The Cluster Server doesn't need to know about application-specific functions. It just executes the functions provided by the Resource DLLs. Exchange implements many other functions in its Resource DLL (EXRES.DLL). The functions are shown in Figure 1.1. These functions are Exchange application-specific and not related to clustering in anyway.

The two basic checks (IsAlive and LooksAlive) are supported by every Resource DLL or cluster-aware application.

Resource DLLs

FIGURE 1.1-Cluster Components and Exchange Resource DLLs.

In Figure 1.1 you can see the relationship between clustering components and the Exchange Resource DLLs. There are three Resource DLLs shown in the above figure which control the Exchange Resources:


These DLLs are installed when the Exchange setup realizes that it is going to operate in a clustered environment. EXRES.DLL is the core Resource DLL which controls all the Exchange Resources except MSSearch resource. The MSSearch resource is controlled by the GATHERCL.DLL. The GATHERCL.DLL also supports the same functions as supported by the EXRES.DLL but it is alienated to run in a separate Resource monitor. If you don't plan to use full-text searching, you can delete the MSSearch resource from the Exchange Resources list. Because MSSerach resource runs in a separate Resource Monitor, if MSSearch resource fails for any reason the impact would be limited to MSSearch resource only.

The next DLL is EXCLAUADM.DLL. This DLL works as a proxy between the Cluster Administrator and the Exchange Resources. The main function of this DLL is to provide interfaces to configure and control Exchange-specific configuration parameters and screens. If this DLL is missing or corrupted you can't access Exchange resources or modify them. EXCLAUADM.DLL doesn't implement any cluster-specific control functions. As an example, when you right click on Exchange Virtual Server resource, you will get "Remove Exchange Virtual Server" option to remove the ESV from the cluster.

The EXRES.DLL which sits between Resource Monitor and Exchange Resources plays an important role in the failover process. Without this Exchange cannot function as a cluster-aware application. If EXRES.DLL is missing, you need to re-run the Exchange Setup.


Today we introduced the components that transform Exchange into a cluster aware application. In the second part we will see how the Cluster Service interacts with the Resource DLLs in order to monitor and manage the Exchange resources.

User Comments - Page 1 of 1

Darren Miller 1 Oct 2011 07:50

Can we approach you for some consulting?


Aamir .UK 6 Aug 2008 04:48

Not a bad article, simply explained!
Nirmal 21 Jul 2008 06:42

What exactly do you want to know about Failover Cluster Resource Monitor RHS?

T. Pham (Germany) 17 Jul 2008 15:04
Thanks for the very good article.

How about the new 2008 Failover Cluster Resource Monitor RHS?
chala 1 Jul 2008 00:34
This article is excellent
Darren 9 Jun 2008 08:54
Thank You! Nice article.
Copyright © 2005 - 2024 All rights reserved. is not affiliated with Microsoft Corporation