MCSA 70-412: 1.2 Configure Failover Clustering
A failover cluster is a group of independent servers that run a highly available service or application (called a clustered role). If one or more nodes fail, the other nodes begin to provide the services in their place. there is service reliability as well: if a cluster role becomes unresponsive for any reason, it can be restarted or brought up on another node.
Unlike the Network Load Balancer feature, a Windows Failover Cluster is designed to provide true high availability to mission critical applications. There are important differences between NLB clusters and failover clusters; where nodes in an NLB are all running the same application and load balancing between them, a Windows failover cluster has only one server running the role with the remaining cluster members waiting to take over if needed.
Additionally, failover cluster introduce shared storage amongst the cluster nodes- this is ideal for application and data consistency. Although not limited to these roles, you will traditionally find Windows failover clusters protecting database server, mail servers and file servers.
Looking over the Exam objectives, I’m somewhat surprised that the exam (allegedly) doesn’t include the initial set up of a Failover Cluster. I’m including a full walkthrough as an addendum.
1. Configure quorum
2. Configure cluster networking
3. Configure cluster storage
4. Configure storage spaces
5. Configure and optimize clustered shared volumes
6. Implement Cluster-Aware Updating
7. Configure clusters without network names
8. Upgrade a cluster
9. Restore single node or cluster configuration
1. Configure Quorum
The quorum for a cluster is determined by the number of voting elements that must be part of active cluster membership for that cluster to start properly or continue running. By default, every node in the cluster has a single quorum vote. In addition, a quorum witness (when configured) has an additional single quorum vote. You can configure one quorum witness for each cluster. A quorum witness can be a designated disk resource or a file share resource. Each element can cast one “vote” to determine whether the cluster can run. Whether a cluster has quorum to function properly is determined by the majority of the voting elements in the active cluster membership.
Above all, remember for the test that the Quorum configuration determines how many nodes in a cluster can fail before the cluster stops running.
If the cluster is made up of an even number of nodes you should choose a Quorum configuration with a tiebreaker element called a witness. A witness is a shared disk or file share accessible by all nodes in the cluster and that contains a copy of the failover cluster database. When you configure Node and File Share Majority or Node and Disk Majority as your Quorum configuration, the failover cluster can reach Quorum when only half of the nodes remain online (as opposed to a clear majority), as long as they can also communicate with the disk witness or file share witness.
- In Windows Failover Cluster Manager:
The main Powershell cmdlet for Quorum configuration is:
- Configure Cluster Quorum Wizard
Quorum Configuration Options:
- Use default quorum configuration-Default configuration for odd-number of nodes: Node Majority- This mode can survive the failure of half the nodes -1 (In a 3 node cluster, 1 can fail)Default configuration for even-number of nodes: Node and Disk Majority- Can survive loss of half the nodes if the witness disk remains available- otherwise half the nodes -1.
- Select the quorum witness-
– Disk Witness – A cluster disk common to all nodes. One node will have exclusive access to this disk
– File Share Witness – A file share (Can be outside of the cluster). This is most often used when there isn’t storage common to all the nodes.
- Advanced quorum configuration
– Go it alone. The only real difference is that you get to manually configure what nodes get votes:
2. Configure cluster networking
- The cluster networking settings are accessed by going to ‘Networks’ in the left navigation tree. Right-click on the network thats getting its network connections modified and click properties.
The properties screen determines how this network is utilized by the cluster:
- Options that can be changed:
- Cluster Network Name:You can change the name to something more useful and descriptive – Storage, Heartbeat, and Local are common names.
- Allow Cluster Network Communication On This Network: Internal cluster communication and CSV traffic can be sent over this network.
- Allow clients to connect through this network: Cluster IP Address resources can be created on this network for clients to connect to.
- Do not allow cluster network communication on this network: No cluster communication of any kind sent over this network. Traditionally used for backup and storage networks.
- Options that can be changed:
3. Configure cluster storage
Cluster storage is a pretty complicated endeavor in an environment, requiring configuration from the Storage, network and Server teams (Or the SuperAdmin if those roles aren’t siloed). For the purposes of the exam however, we only need to focus on adding new disks, configuring storage pools and configuring cluster-shared volumes.
- Adding new disks to a cluster
Standard clustered disk: A volume is able to be accessed by only one cluster node at a time. Only
during a failover event can the volume be accessed by another single node. This event will failover
the entire volume and impact every other resource on the shared disk.Traditionally, this storage has already been provisioned by the SAN Administrator and zoned for cluster use. Open Server Manager and initialize the new volume and bring the disk online. NOW it can be used for our fledgling cluster!
Expand storage from the tree and right-click ‘Disks’. Click Add Disk.
4. Configure and optimize clustered shared volumes
CSVs are able to be accessed by all cluster nodes simultaneously. This is not normally possible with shared storage. In fact, two cluster nodes cannot normally use even two separate volumes residing on the same logical disk or LUN. CSVs are formatted with NTFS, but to distinguish them from normal NTFS volumes, the Windows Server 2012 or Windows Server 2012 R2 interface displays them as formatted with “CSVFS”, or the Cluster Shared Volume File System.Clustered Shared volumes are used for HyperV VMs, Scale-out Fileservers and apparently SQL 2014. A CSV cannot be used as a quorum witness disk.
To add a disk to CSV, you must add a disk to the Available Storage group of the cluster (if it is not already added), and then add the disk to CSV on the cluster.
NOTE: I don’t have the ability to illustrate this in my test cluster, so I apologize for the wall of text….
- To add a disk in Available Storage to CSV
In Failover Cluster Manager, in the console tree, expand the name of the cluster, expand Storage, and then click Disks. Select one or more disks that are assigned to Available Storage, right-click the selection, and then click Add to Cluster Shared Volumes.
- Optimize Cluster Shared Volumes
Clustered Shared Volumes feature a block-level read cache and RAM-based write-through cacheThis can improve performance for applications such as Hyper-V, which conducts unbuffered I/O operations when accessing a VHD. The CSV cache can boost the performance of read requests without caching write requests. Enabling the CSV cache is also useful for Scale-Out File Servers.
Note: The CSV cache is disabled by default in Windows Server 2012. It’s enabled by default in Windows Server 2012r2.
To configure the CSV cache
Start Windows PowerShell as an administrator.
To define a cache of 512 MB to be reserved on each node, type the following:
5. Configure cluster storage pools
The basic building block of a clustered storage spaces deployment is a small collection of servers, typically two to four, and a set of shared Serial Attached SCSI (SAS) just-a-bunch-of-disks (JBOD) enclosures. The JBOD enclosures should be connected to all the servers, where each server has redundant paths to all the disks in each JBOD enclosure. The following figure shows an example of the basic building block.
Clustered storage spaces can help protect against the following risks:
- Physical disk failures When you deploy a clustered storage space, protection against physical disk failures is provided by creating storage spaces with the mirror or parity resiliency types. Additionally, mirror spaces use dirty region tracking (DRT) to track modifications to the disks in the pool. When the system resumes from a power fault or a hard reset event and the spaces are brought back online, DRT makes disks in the pool consistent with each other.
- Data access failures If you have redundancy at all levels, you can protect against failed components, such as a failed cable from the enclosure to the server, a failed SAS adapter, power faults or failure of a JBOD backplane. For example, in an enterprise deployment, you should have redundant SAS adapters, SAS I/O modules, and power supplies. To protect against complete disk enclosure failure, you can use redundant JBOD enclosures.
- Data corruptions and volume unavailability Both the NTFS file system and the Resilient File System (ReFS) help protect against corruption. For NTFS, improvements to the Chkdsk tool in Windows Server 2012 can greatly improve availability. For more information, see NTFS Health and Chkdsk. For more information about ReFS, seeResilient File System Overview.
- Server node failures Through the Failover Clustering feature, you can provide high availability for the underlying storage and workloads. This helps protect against server failure and enables you to take a server offline for maintenance without service interruption.
Note the following requirements for failover cluster storage pools:
- A minimum of three physical drives, with at least 4 gigabytes (GB) capacity each.
- Only SAS connected physical disks are allowed. No additional layer of RAID (or any disk subsystem) is supported, whether internal or external.
- Fixed provisioning only for virtual disks. No thin provisioning.
- When creating virtual disks from a clustered storage pool, only simple and mirror storage layouts are supported. Parity layouts are not supported.
- The physical disks used for a clustered pool must be dedicated to that one pool. Boot disks should not be added to a clustered pool.
Setting up a Storage Pool
6. Implement Cluster-Aware Updating
Cluster Aware Updating (CAU) addresses the difficulty of performing software updates on failover cluster nodes. This difficulty stems from the fact that updating software normally requires a system restart.
In Windows Server 2008 clusters, I have to manually migrate roles off of a node prior to performing Windows Updates, and then repeat for every cluster node until they were all at the same update level. Since Windows Server 2008 R2 could have 16 nodes in a cluster, this could be a lengthy ordeal.
In Windows Server 2012 and Windows Server 2012 R2, failover clusters can scale up to 64 nodes. At this point, the manual method of updating software on failover clusters is simply no longer a practical option- enter Cluster Aware Updating!
- To initiate the process of updating a failover cluster, right-click the cluster in the list of servers in Server Manager and then click Update Cluster from the shortcut menu:
- I’m unsure of what depth the exam will go into regarding this feature, but here is the CAU screen:
- You can Preview Windows Updates to get a list of what would be applied:
- Everything here is pretty self-explanatory. You can schedule an update schedule by clicking “Configure cluster self-updating options”
7. Configure clusters without network names
In Windows Server 2012 R2, we can now configure Failover Clusters without name dependencies in Active Directory, nor needing to configure the cluster services with special permissions in AD.This can only be done in Powershell, so close Failover Cluster Manager.
To create the failover cluster, start Windows PowerShell as an administrator, and then use the New-Cluster cmdlet with the
–AdministrativeAccessPoint parameter set to a value of DNS.
The following example creates a failover cluster (Cluster1) from two nodes (Node1 and Node2), with an administrative access point of type DNS.
New-Cluster Cluster1 –Node Node1,Node2 –StaticAddress 192.168.1.16 -NoStorage –AdministrativeAccessPoint Dns
8. Upgrade a Cluster
This TechNet War Room post has a pretty thorough walkthrough of migrating clusters from 2008 to 2012:
9. Restore single node or cluster configuration
I couldn’t find anything specific to Windows Server 2012 in any of my books or through a Google Search. Here’s a post specific to Server 2008:
Yes this is a cop-out 🙂
Addendum: Full installation
- Open server manager, and click ‘Add roles and features’
- Select Role-based or Feature-based installation:
- For the purpose of this example, install to the local server:
- Skip over the “Server Roles” section as the Failover Cluster is a windows Feature.
- On the Features page, tick the box for Failover Clustering:
- Look over your selections on the confirmation page and select install when satisfied:
- Once installed, open the Failover Cluster Manager:
- If your test server that you’re using for screenshots is not joined to the domain (Or if you’re logged in as a local administrator) you get this dialog:
- After joining the domain, you’ll see the failover cluster manager:
- Click ‘Create cluster’. Add the local server for a one-node screenshot producing cluster:
- Your selection will need to pass the cluster validation wizard:
- Once successfully tested, you can move on to actually building your Windows Failover cluster:
- Enter the DNS name and IP address of the cluster on this page:
- After this screen, confirm your selections and click install.
- Congratulations, you have a failover cluster!
Addendum: Powershell cmdlets for Failover Clusters
This addendum provides cmdlet descriptions and syntax for all failover cluster-specific cmdlets. It lists the cmdlets in alphabetical order based on the verb at the beginning of the cmdlet.
|Add-ClusterCheckpoint||Adds a cryptographic or registry checkpoint for a resource.|
|Add-ClusterDisk||Makes a new disk available for use in a failover cluster.|
|Add-ClusterFileServerRole||Creates a clustered file server resource group that includes one or more disks, on which shared folders can be created for users.|
|Add-ClusterGenericApplicationRole||Configures high availability for an application that was not originally designed to run in a failover cluster.|
|Add-ClusterGenericScriptRole||Configures an application controlled by a script that runs in Windows Script Host, within a failover cluster.|
|Add-ClusterGenericServiceRole||Configures high availability for a service that was not originally designed to run in a failover cluster.|
|Add-ClusterGroup||Adds an empty resource group to the failover cluster configuration, in preparation for adding clustered resources to the group.|
|Add-ClusteriSCSITargetServerRole||Creates a highly available iSCSI Target server.|
|Add-ClusterNode||Adds a node, or server, to a failover cluster.|
|Add-ClusterPrintServerRole||Creates a clustered print server, a resource group that includes a printer and a disk for storing print job information and printer drivers.|
|Add-ClusterResource||Adds a resource to a clustered role, resource group, in a failover cluster.|
|Add-ClusterResourceDependency||Adds a resource to the list of resources on which a particular resource depends, using AND as the connector, within a failover cluster.|
|Add-ClusterResourceType||Adds a resource type to a failover cluster, and specifies information such as the dynamic-link library (DLL) to be used with that resource type.|
|Add-ClusterScaleOutFileServerRole||Creates a clustered file server for scale-out application data.|
|Add-ClusterServerRole||Creates a highly available basic server.|
|Add-ClusterSharedVolume||Makes a volume available in Cluster Shared Volumes (CSVs) in a failover cluster.|
|Add-ClusterVirtualMachineRole||Creates a clustered virtual machine, that is, a virtual machine that can be failed over if necessary to a different server in the failover cluster.|
|Add-ClusterVMMonitoredItem||Configures monitoring for a service or Event Tracing for Windows (ETW) event in a virtual machine.|
|Block-ClusterAccess||Prevents the specified user or users from accessing a failover cluster.|
|Clear-ClusterDiskReservation||Clears the persistent reservation on a disk in a failover cluster.|
|Clear-ClusterNode||Clears the cluster configuration from a node that was evicted from a failover cluster.|
|Get-Cluster||Gets information about one or more failover clusters in a given domain.|
|Get-ClusterAccess||Gets information about permissions that control access to a failover cluster.|
|Get-ClusterAvailableDisk||Gets information about the disks that can support failover clustering and are visible to all nodes, but are not yet part of the set of clustered disks.|
|Get-ClusterCheckpoint||Retrieves a cryptographic or registry checkpoint for a resource in a failover cluster.|
|Get-ClusterGroup||Gets information about one or more clustered roles, or resource groups, in a failover cluster.|
|Get-ClusterLog||Creates a log file for all nodes, or a specific node in a failover cluster.|
|Get-ClusterNetwork||Gets information about one or more networks in a failover cluster.|
|Get-ClusterNetworkInterface||Gets information about one or more network adapters in a failover cluster.|
|Get-ClusterNode||Gets information about one or more nodes, or servers, in a failover cluster.|
|Get-ClusterOwnerNode||Gets information about which nodes can own a resource in a failover cluster or information about the order of preference among owner nodes for a clustered role.|
|Get-ClusterParameter||Gets detailed information about an object in a failover cluster, such as a cluster resource.|
|Get-ClusterQuorum||Gets information about the quorum configuration of a failover cluster.|
|Get-ClusterResource||Gets information about one or more resources in a failover cluster.|
|Get-ClusterResourceDependency||Gets information about the dependencies that have been configured between clustered resources in a failover cluster.|
|Get-ClusterResourceDependencyReport||Generates a report that lists the dependencies between resources in a failover cluster.|
|Get-ClusterResourceType||Gets information about one or more resource types in a failover cluster.|
|Get-ClusterSharedVolume||Gets information about Cluster Shared Volumes (CSVs) in a failover cluster.|
|Get-ClusterVMMonitoredItem||Retrieves the list of services and events currently being monitored in the virtual machine.|
|Grant-ClusterAccess||Grants access to a failover cluster, either full access or read-only access.|
|Move-ClusterGroup||Moves a clustered role, a resource group, from one node to another in a failover cluster.|
|Move-ClusterResource||Moves a clustered resource from one clustered role to another within a failover cluster.|
|Move-ClusterSharedVolume||Moves a Cluster Shared Volume (CSV) to ownership by a different node in a failover cluster.|
|Get-ClusterSharedVolumeState||Gets the state of Cluster Shared Volumes in a cluster.|
|Move-ClusterVirtualMachineRole||Moves the ownership of a clustered virtual machine to a different node.|
|New-Cluster||Creates a new failover cluster.|
|Remove-Cluster||Destroys an existing failover cluster.|
|Remove-ClusterAccess||Removes a user from the access list on the cluster.|
|Remove-ClusterCheckpoint||Removes a cryptographic or registry checkpoint for a resource in a failover cluster.|
|Remove-ClusterGroup||Removes a clustered role, also called a resource group, from a failover cluster.|
|Remove-ClusterNode||Removes a node from a failover cluster.|
|Remove-ClusterResource||Removes a clustered resource from the failover cluster.|
|Remove-ClusterResourceDependency||Removes a dependency between two resources in a clustered role within a failover cluster.|
|Remove-ClusterResourceType||Removes a resource type from a failover cluster.|
|Remove-ClusterSharedVolume||Removes a volume from the Cluster Shared Volumes (CSVs) in a failover cluster, and places it in Available Storage in the cluster.|
|Remove-ClusterVMMonitoredItem||Removes monitoring of a service or custom event that is currently being monitored.|
|Repair-ClusterSharedVolume||Runs repair tools on a Cluster Shared Volume (CSV) locally on a cluster node.|
|Reset-ClusterVMMonitoredState||Resets the Application Critical state of a virtual machine, so that the virtual machine is no longer marked as being in a critical state in the cluster.|
|Resume-ClusterNode||Resumes activity on a failover cluster node after it has suspended it, or paused.|
|Resume-ClusterResource||Turns off maintenance for a disk resource or Cluster Shared Volume (CSV) within a failover cluster.|
|Set-ClusterLog||Sets the size and level of detail for the cluster log.|
|Set-ClusterOwnerNode||Specifies which nodes can own a resource in a failover cluster or specifies the order of preference among owner nodes for a clustered role, or a resource group.|
|Set-ClusterParameter||Controls specific properties of an object in a failover cluster, such as a resource, a group, or a network.|
|Set-ClusterQuorum||Configures quorum options for a failover cluster.|
|Set-ClusterResourceDependency||Specifies the resources that a particular resource depends on within a failover cluster.|
|Start-Cluster||Starts the Cluster service on all nodes of the cluster on which it is not yet started.|
|Start-ClusterGroup||Brings one or more clustered services and applications, also known as resource groups, online on a failover cluster.|
|Start-ClusterNode||Starts the Cluster service on a node in a failover cluster.|
|Start-ClusterResource||Brings a resource online in a failover cluster.|
|Stop-Cluster||Stops the Cluster service on all nodes in a failover cluster, which will stop all services and applications configured in the cluster.|
|Stop-ClusterGroup||Takes one or more clustered services and applications, also known as resource groups, offline on a failover cluster.|
|Stop-ClusterNode||Stops the Cluster service on a node in a failover cluster.|
|Stop-ClusterResource||Takes a resource offline in a failover cluster.|
|Suspend-ClusterNode||Suspends activity on a failover cluster node, that is, pause the node.|
|Suspend-ClusterResource||Turns on maintenance for a disk resource or Cluster Shared Volume so that you can run a disk maintenance tool without triggering failover.|
|Test-Cluster||Runs validation tests for failover cluster hardware and settings.|
|Test-ClusterResourceFailure||Simulates a failure of a cluster resource.|
|Update-ClusterIPResource||Renews or releases the DHCP lease for an IP address resource in a failover cluster.|
|Update-ClusterNetworkNameResource||Registers existing Network Name resources with a DNS server in a way that does not interrupt cluster availability.|
|Update-ClusterVirtualMachineConfiguration||Refreshes the configuration of a clustered virtual machine within a failover cluster.|