Category Archives: 6576

Exchange Server 2007 CCR on Windows Server 2008 Failover Cluster

I did a one day workshop on March 15 in Orlando at the Exchange Connections conference. As usual, it was a great deal of fun. However, for some reason, I never posted this blog entry until today.
Anyways, I decided to put some of the key bits of information out here for others to enjoy. I hope it helps everyone.
First off, we need to understand that putting up a CCR cluster requires several steps, which can be combined into four categories.
  1. Configure the Hardware
  2. Install and Configure the Operating System
  3. Install and Configure the Failover Cluster Feature
  4. Install and Configure Exchange Server 2007 on the Cluster
Configuring the hardware really isn’t difficult since we are talking about CCR. There is no need for a Storage Array Network (SAN) with all of the issues around creating, presenting, and securing Logical Unit Numbers (LUNs) for cluster storage. What we need to do here is just purchase our servers with two Network Interface Cards (NICs) and two internal disks.
Installing and configuring the operating system is also pretty straight forward. We need to use either the Enterprise or Datacenter version of Windows Server 2008 on each node. Once the OS is installed, each node needs to be joined to the domain.
One of the most important steps is to configure the operating system on each node with the proper role and features that are prerequisites for clustering and supporting Exchange Server 2007.
The prerequisites include:
  • Web Server (IIS) and its Required Features
  • Web Server (IIS) Role Services which includes:
    • ISAPI Extensions
    • Basic Authentication
    • Windows Authentication
    • IIS 6 Management Compatibility
  • Windows Powershell

These prerequisites can be installed through the GUI or through the command line. For command line, run the following commands:

  • ServerManagerCMD -i Web-Server
  • ServerManagerCMD -i Web-ISAPI-Ext
  • ServerManagerCMD -i Web-Metabase
  • ServerManagerCMD -i Web-Lgcy-Mgmt-Console
  • ServerManagerCMD -i Web-Basic-Auth
  • ServerManagerCMD -i Web-Windows-Auth
  • ServerManagerCMD -i PowerShell

The Web Server prerequisites are demonstrated in this IISPrerequisites recording, while the Windows Powershell install is shown in this Powershell recording using the GUI to install them.

The next step for the operating system configuration includes setting up the networks. The public network, also referred to as the client access point (CAP), is configured just like any other server. The network used for intracluster communications should be configured so that each NIC (one per node) uses a private IP address range and should not have a default gateway. It is a good practice to rename the networks so there is no confusion regarding their use.

Many cluster administrators will tune the intracluster communication network (also known as the private network or heartbeat network) so it is not configured with unnecessary services. For example, the private network should be configured as follows and as shown in this network clip:

  • Clear the checkbox for Client for Microsoft Networks
  • Clear the checkbox for QoS Packet Scheduler
  • Clear the checkbox for File and Printer Sharing for Microsoft Networks
  • Clear the checkboxes for the Link-Layer Topology options
  • Clear the checkbox for Register this connection’s address in DNS
  • Clear the checkbox for Enable LMHOSTS Lookup
  • Select the radio button for Disable NetBIOS over TCP/IP

Install and configure the failover cluster feature is the third major step in configuring our CCR cluster. This step is pretty easy. All we need to do here is add the Failover Cluster feature to each of our nodes so that they can be part of a cluster. The clip shows the steps of installing this feature. Actually, the feature is already installed in the clip, but it is easy to see from the clip how the feature would be installed on each node. You can also run the feature installation from the command line by running:

  • ServerManagerCMD -i Failover-Clustering

Now that the feature is installed, we can take the next step and actually create our cluster. The Create Cluster link can be used in a couple of different locations to create the cluster and configure it as shown in this Failover Cluster clip.

Once we have created the cluster, we need to change the quorum type to support CCR. The recommended quorum type is Node Majority with File Share Witness. This clip shows the process of configuring the File Share Witness.

Installing Exchange Server 2007 on the Cluster is the second to last step. In this step, we run the setup program from the Exchange Server 2007 installation media. During the installation, we will select the custom installation option and select Active Clustered Mailbox Role. The option to select either Cluster Continuous Replication or Single Copy Cluster is next. The process is seen here in this CCR Installation clip.

The last step is to run the setup program from the Exchange Server 2007 installation media on the other node and select the Passive Clustered Mailbox Role. The steps are the same for the passive node as for the active node with the exception of selecting the passive installation option.

PowerShell and Windows Server 2008 Failover Clusters

One of the major changes moving forward into Windows Server 2008 R2 is that some of the tools are being deprecated (I love that word) in favor of PowerShell.

Some people just screamed, “Wooo hooo, fantastic!” while others screamed, “Great, now I have to learn another tool after investing all of those years in the tools of the past!”

I, personally, take the first view point in that this is great news. It now forces me to start using PowerShell more than just in Exchange Server 2007. PowerShell will be the main tool in the future, so it is important to learn it now.

So, this is the perfect time to start talking about the differences and how we will now use PowerShell in Windows Server 2008 R2 failover clustering. Let’s start from the beginning.

Get-WindowsFeature in PowerShell will provide a list of all features and a checkbox will show whether they are installed or not.

Add-WindowsFeature Failover-Clustering will add the failover clustering feature along with the Remote Server Administrative Tools (RSAT) for Failover Clustering Tools.

From here on, it is all down hill. We have the feature installed, and the PowerShell module is imported. Like all PowerShell commands, the list can be broken down into Add, Block, Clear, Get, Grant, Move, New, Remove, Resume, Set, Start, Stop, Suspend, Test, and Update verbs. If you want to see a setting, you will generally use a Get verb combined with the noun describing what you want to find. For example, the Get-Cluster cmdlet will provide information about the cluster such as the domain name, the name of the cluster, and the description of the cluster along with several other bits of information. The various cmdlets related to failover clustering can be found by using the Get-Command –module FailoverClusters cmdlet. The resulting cmdlets are broken out by verb below.

Add cmdlets include the following:

  • Add-ClusterDisk
  • Add-ClusterFileServerRole
  • Add-ClusterGenericApplicationRole
  • Add-ClusterGenericScriptRole
  • Add-ClusterGenericServiceRole
  • Add-ClusterGroup
  • Add-ClusterNode
  • Add-ClusterPrintServerRole
  • Add-ClusterResource
  • Add-ClusterResourceDependency
  • Add-ClusterResourceType
  • Add-ClusterServerRole
  • Add-ClusterSharedVolume
  • Add-ClusterVirtualMachineRole

There is only one block cmdlet for failover clustering, and it is used to block users from accessing the failover cluster.

  • Block-ClusterAccess

There are two Clear cmdlets for failover clustering. Clear-ClusterDiskReservation is used to clear the persistent reservation on a disk. The Clear-ClusterNode is used to forcibly remove the failover cluster feature from a node.

  • Clear-ClusterDiskReservation
  • Clear-ClusterNode

The Get cmdlets are probably the most used. Get verbs allow for the easy retrieval of information about a failover cluster

  • Get-Cluster
  • Get-ClusterAccess
  • Get-ClusterAvailableDisk
  • Get-ClusterGroup
  • Get-ClusterLog
  • Get-ClusterNetwork
  • Get-ClusterNetworkInterface
  • Get-ClusterNode
  • Get-ClusterOwnerNode
  • Get-ClusterParameter
  • Get-ClusterQuorum
  • Get-ClusterResource
  • Get-ClusterResourceDependency
  • Get-ClusterResourceDependencyReport
  • Get-ClusterResourceType
  • Get-ClusterSharedVolume

The Grant verb is basically the reverse of the block verb. With the Grant-ClusterAccess cmdlet, you can provide full access to the failover cluster, and with the –readonly parameter, read only access can be provided.

  • Grant-ClusterAccess

The Move verb can be used to move resources between failover cluster nodes.

  • Move-ClusterGroup
  • Move-ClusterResource
  • Move-ClusterSharedVolume
  • Move-ClusterVirtualMachineRole

The New-Cluster cmdlet does just what it says it does. It creates new failover clusters.

  • New-Cluster

The Remove verb is used to delete resources or to completely destroy the cluster by using the Remove-Cluster cmdlet.

  • Remove-Cluster
  • Remove-ClusterAccess
  • Remove-ClusterGroup
  • Remove-ClusterNode
  • Remove-ClusterResource
  • Remove-ClusterResourceDependency
  • Remove-ClusterResourceType
  • Remove-ClusterSharedVolume

The Resume verb is used to resume either the activity on a node after it has been suspended or to take a cluster disk or cluster shared volume out of maintenance mode.

  • Resume-ClusterNode
  • Resume-ClusterResource

The Set cmdlets are extremely powerful in that they can be used to make changes to the cluster resources and the cluster itself.

  • Set-ClusterLog
  • Set-ClusterOwnerNode
  • Set-ClusterParameter
  • Set-ClusterQuorum
  • Set-ClusterResourceDependency

The Start verb is used to start the cluster service, for example with the Start-Cluster cmdlet, or to start groups or resources.

  • Start-Cluster
  • Start-ClusterGroup
  • Start-ClusterNode
  • Start-ClusterResource

If there is a Start verb, then it makes sense that there is a Stop verb that does the exact opposite. For example, you can shut down the cluster by using the Stop-Cluster cmdlet or you can stop entire groups or individual resources by using the Stop cmdlets below.

  • Stop-Cluster
  • Stop-ClusterGroup
  • Stop-ClusterNode
  • Stop-ClusterResource

The Suspend verb does the opposite of the Resume verb. The Suspend verb is used to pause a node by using the Suspend-ClusterNode cmdlet, and the Suspend-ClusterResource cmdlet will turn on maintenance mode for a disk resource or a cluster shared volume.

  • Suspend-ClusterNode
  • Suspend-ClusterResource

The Test-Cluster cmdlet is used to run the Validate tool. At first glace, you would think it would have been named something like Validate-Cluster, but to make the cmdlet consistent with other features and applications, the Test verb is used.

  • Test-Cluster

Update-ClusterIPResource is used to release the DHCP lease for IP Address resources and Update-ClusterVirtualMachineConfiguration is used to refresh the configuration settings when adding a new network adapter or to refresh other settings such as the virtual memory configuration for VMs running in the failover cluster.

  • Update-ClusterIPResource
  • Update-ClusterVirtualMachineConfiguration

To learn more about each command, use the help that is built into PowerShell. You will find that a simple command like, Get-Help CmdletName will retrieve some basic information, but if you extend it with the –full parameter or the –example parameter, and you can get an easy grasp of what you can do with the Cmdlet.

Exchange Server 2007 and Virtualization

During my booth duty at the Failover Clustering booth, I must have heard questions regarding this topic about once per hour if not more.

The official stance: Microsoft does not support the virtualization of Exchange Server 2007 roles at this time. Why not? Well, Microsoft does not have a virtualization platform capable of supporting 64-bit virtual machines at this time. Hyper-V is not an RTM product. Whether Microsoft will change the stance once Hyper-V RTMs is another question, and I don’t have an answer. Also, keep in mind, Microsoft is not about to support a third party’s virtualization platform because they don’t have the control over it to properly support it and fix problems that might be discovered.

My point of view: Why would you ever want to do that anyways? Exchange and SQL are two services that really do require top-notch resources and sharing them on a server with other virtualized servers just seems counter productive to providing the best performance possible for two key business services.

OK, now that I am off my soap box, can you virtualize Exchange Server 2007? Yes, you can. It make perfect sense to me for development and testing environments. It makes perfect sense for a proof of concept, too. It even make perfect sense in small organizations that won’t push their Exchange implementation very hard.

Recently, I worked with a client that has a nice virtualization platform running Hyper-V RC1. They hosted mailbox servers, hub transport servers, and client access servers for their test environment. It ran wonderfully. They are considering doing it when Hyper-V RTMs because their expected load for 35 users isn’t very large. 

UPDATED: Scott Schnoll posted the official stance in his blog post, Exchange Server 2007 and Hyper-V.

Microsoft Official Cluster Team Blog

The cluster team at Microsoft has restarted their blog with a new dedication focused on Windows Server 2008 Failover Clustering and Network Load Balancing.

I have been promised, by some of the powers that be, that they will do their best to provide responses to all appropriate comments posted to their blog entries.

Also, from my experience, these are some really wonderful people and they really want to help everyone understand what failover clustering is all about and how your organization can benefit from implmenting failover clustering.

Anyways, I recommend that you visit them.

While I am at it, I would like to recommend the other blogs that contain clustering posts on a regular basis, to include:

  • John Toner’s Blog – John has been a clustering MVP for ages. John tends to specialize in Multisite clusters. John is US based.

  • Nail Own’s Website/Blog – Nail is a fairly new MVP in cluster. Nail resides in Germany.

  • Rodney R. Fournier – Rod used to be a clustering MVP but is now a Premier Field Engineer with Microsoft based in Arkansas.

  • Exchange Team Blog – The Exchange team often posts great information about clustering Exchange Server 2003 and Exchange Server 2007.

  • Windows Server Core Team – This group has recently started posting about several different scenarios with clustering.

  • Windows Server Division Weblog – This is the OS team and they post about a variety of High Availabilty scenarios.

 I hope you find these other blogs as helpful as I find them.