This article shows you how to configure Windows Server 2022 Failover Clustering (WSFC). Failover Clustering, also known as Windows Server Failover Clustering (WSFC), is a feature in the Windows Server Operating System. It is used to provide high availability and fault tolerance for critical applications and services. It allows multiple servers/cluster nodes, to work together to realize a highly reliable and continuously available environment.
The main reason for setting up a Failover Clustering is to ensure that if a server in the cluster fails or experiences an issue, another server automatically steps up and takes its workload without interrupting the service. This seamless transition is called failover. The active workload is transferred from the failed node to a healthy node within the cluster.
Failover Clustering is so important as it helps ensure business continuity and reduce downtime for applications and services that cannot afford to go offline. By deploying a cluster, organizations achieve high availability and fault tolerance, minimizing the impact of hardware failures, scheduled maintenance, or any software issues. The main areas where Failover Clustering is commonly used are:
- Database Systems: when databases are clustered continuous availability is guaranteed, minimising data loss in case of a server failure. It is often employed for critical database platforms like Microsoft SQL Server
- File and Print Services: It also allows uninterrupted access to shared files and printers, ensuring that users can always access their resources even if a server fails.
- Web Applications: web servers can also be clustered to ensure that websites and web applications remain available even if one or more servers encounter problems. This is particularly important for e-commerce sites, online services, and other web-based applications that require continuous availability.
- Virtualization: this ensures hosts are high available for virtual machines (VMs). If a physical host fails, the VMs can be automatically migrated to another healthy host, minimizing downtime and preserving service continuity.
- Messaging and Collaboration: It is also often used for email servers, collaboration platforms, and messaging systems such as Microsoft Exchange Server, ensuring uninterrupted communication and collaboration.
Let us learn how we can configure Windows Server 2022 Failover Clustering (WSFC).
Prepare Your Environment
To demonstrate how o configure a Failover Clustering (WSFC), I will use the three Windows server 2022 nodes below:
TASK | IP ADDRESS | HOSTNAME |
iSCSI Target/AD DS/DNS | 192.168.200.55 | win-server.geeksforgeeks.org |
Cluster Node1 | 192.168.200.70 | node1.geeksforgeeks.org |
Cluster Node2 | 192.168.200.71 | node2.geeksforgeeks.org |
You also need to have a DNS server set up to provide DNS resolution. You can either use:
- Active directory(recommended) and add the servers to it.
- DNS server and add the hostnames in A record with PTR.
Step 1: Install and Configure iSCSI Target Server
For Failover Clustering (WSFC), we need to configure shared storage for the cluster nodes. For this guide, we will use iSCSI as the shared storage.
Install and configure iSCSI Target on Windows Server 2022 using the below guide:
Once the Target has been installed, you need to make some configurations before it can be used in WSFC. Create a New Target disk that will be used as the Quorum disk in the Cluster.
This can be done using the PowerShell as shown:
New-IscsiServerTarget -TargetName "iSCSITarget01" -InitiatorId @("IPAddress:192.168.200.70","IPAddress:192.168.200.71")
In the above command, 192.168.200.70 and 192.168.200.71 are the IP addresses of the cluster nodes.
Next, set the disk size for the shared storage:
New-IscsiVirtualDisk -Path "C:\iSCSIstorage\Quorum01.vhdx" -SizeBytes 512MB
Now assign the created disk to the Target:
Add-IscsiVirtualDiskTargetMapping -TargetName "iSCSITarget01" -Path "C:\iSCSIstorage\Quorum01.vhdx"
Enable CHAP authentication for Target. Set a username and password to be used to access the storage:
Set-IscsiServerTarget `
-TargetName "iSCSITarget01" `
-EnableChap $True `
-Chap (New-Object PSCredential("user1", (ConvertTo-SecureString -AsPlainText "StrongPassw0rd!" -Force)))`
-PassThru
View the made configurations:
Get-IscsiServerTarget -TargetName "iSCSITarget01"
Sample Output:
Restart the service:
Restart-Service -Name WinTarget
a. Configure iSCSI Initiator on the Cluster Nodes
Now all the cluster nodes need to be configured to access the shared storage. We need to configure the iSCSI initiator on them.
On all the nodes you intend to be in the cluster, run the commands below.
Start-Service -Name MSiSCSI
Set-Service -Name MSiSCSI -StartupType Automatic
New-IscsiTargetPortal -TargetPortalAddress "192.168.200.55"
Get the information:
Get-IscsiTarget
Now connect to the iSCSI Target:
Connect-IscsiTarget `
-NodeAddress iqn.1991-05.com.microsoft:win-server-iscsitarget01-target `
-AuthenticationType ONEWAYCHAP `
-ChapUsername "user1" `
-ChapSecret "StrongPassw0rd!" `
-IsPersistent $True
Verify if the nodes have connected to the cluster:
Get-IscsiConnection
Sample Output:
b. Format the Shared Disk to NTFS
Now on one of the cluster nodes, we need to format the iSCSI disk to NTFS. First, identify the disk number
Get-Disk | Format-Table -AutoSize -Wrap
Sample Output:
Once the disk number has been identified, use the number in the below step. Initialize the disk and set the GPT partition:
Set-Disk -Number 1 -IsOffline $False
Initialize-Disk -Number 1 -PartitionStyle GPT
Create a partition and assign the disk a letter:
New-Partition -DiskNumber 1 -UseMaximumSize -AssignDriveLetter
Format the disk to NTFS:
Format-Volume -DriveLetter E -FileSystem NTFS -Force
Replace the drive letter as assigned on your system.
Step 2: Install Windows Server Failover Clustering (WSFC)
To be able to configure the Windows Server Failover Clustering, we need to have the package installed on all the cluster nodes. This can be done using both the PowerShell and GUI.
a. Install Windows Server Failover Clustering (WSFC) on PowerShell
For the PowerShell, execute the below commands with admin privileges:
Install-WindowsFeature Failover-Clustering -IncludeManagementTools
Sample Output:
b. Install Windows Server Failover Clustering (WSFC) on GUI
You can also install the WSFC package for the Windows Server 2022 GUI. First, access the Server Manager and click on Add roles and features
Select the Role-based or feature-based installation option and proceed.
Select the destination host:
On this tab, just click next.
On the features tab, select Failover Clustering
Proceed and install the feature, once complete, click close and restart your computer.
Step 3: Configure Windows Server Failover Clustering (WSFC)
Once the package has been installed on all the desired cluster nodes, we can then proceed and configure Failover Clustering. This can also be done through both the GUI and PowerShell.
Choose one of the options below that best works for you.
Option a: Configure Windows Server Failover Clustering using PowerShell
On one of the nodes, run PowerShell with elevated privileges and execute the below commands.
First, specify your nodes and test if they are accessible:
##Without AD
Test-Cluster -Node "192.168.200.70", "192.168.200.71"
#With AD
Test-Cluster -Node "node1", "node2"
Sample Output:
The above report shows that you are safe to proceed with the configuration.
Now configure the cluster. Here, you set the nodes, the Administrative Access Point and the IP address of the cluster
For DNS server
New-Cluster -Name Cluster01 -Node "192.168.200.70", "192.168.200.71" `
-AdministrativeAccessPoint DNS `
-StaticAddress 192.168.200.73
Alternatively, if you have AD and the nodes joined, you can use
New-Cluster -Name Cluster01 -Node "node1", "node2" `
-AdministrativeAccessPoint ActiveDirectoryAndDns `
-StaticAddress 192.168.200.73
Sample Output:
View the made settings:
Get-Cluster | Format-List -Property *
Sample Output:
Verify if you can access the cluster:
Option b: Configure Windows Server Failover Clustering using GUI
It is also possible to run all the above activities from the GUI. On one of the nodes, navigate to the Server Manager->Tools->Failover Cluster Manager.
Right-click on the Failover Cluster Manager and select Create Cluster.
Click Next.
Provide the hostname or IP address of all the nodes you need to add to the cluster.
You can then run tests if you wish, to know if everything is okay:
Proceed as directed:
After skipping or doing the tests, set the name and static IP address of the cluster.
Now confirm the made settings and proceed if they are okay.
Once created, you will see this:
Now you can manage the cluster here.
Step 4: Add Shared Storage to Windows Server Failover Clustering (WSFC)
Now we need to create and add a new disk to store the data for the cluster. This disk can be created using both the GUI and Shell.
Our iSCSI Target has the previous quorum disk created. We can see the information using the below command on the iSCSI Target shell:
Get-IscsiServerTarget
Now we will also add another disk:
New-IscsiVirtualDisk -Path "C:\iSCSIstorage\DataDisk01.vhdx" -SizeBytes 30GB
Assign the created disk to the iSCSI Target:
Add-IscsiVirtualDiskTargetMapping -TargetName "iSCSITarget01" -Path "C:\iSCSIstorage\DataDisk01.vhdx"
Validate the settings with the command:
Get-IscsiServerTarget -TargetName "iSCSITarget01"
Sample Output:
a. Format the Disk on the Primary Node
Once the disk has been created on the iSCSI Target, we need to format it to NTFS on the primary node of the cluster. Get the disk number:
Get-Disk | Format-Table -AutoSize -Wrap
Sample Output:
Initialize the disk and set the GPT partition on it:
Set-Disk -Number 2 -IsOffline $False
Initialize-Disk -Number 2 -PartitionStyle GPT
Create a partition and assign it a letter.
New-Partition -DiskNumber 2 -UseMaximumSize -AssignDriveLetter
Using the obtained letter, format the drive to NTFS:
Format-Volume -DriveLetter F -FileSystem NTFS -Force
Sample output:
b. Add the Disk to the Cluster
Once the disk has been created and formatted, we can add it to the cluster. This can be done in two ways as shown below:
Method 1: Using PowerShell
On the Primary node, you can add the disk to the cluster using the command below:
Get-Disk -Number 2 | Add-ClusterDisk
View the made changes:
Get-ClusterResource
Sample Output:
Method 2: Using GUI
The disk can also be added using the GUI. On the primary node, after formatting the disk to NTFS, access the Failover Cluster Manager->Storage-> Add Disk
Select the disk you want to attach:
The disk will be added as shown:
Step 5: Add Nodes to Windows Server Failover Clustering (WSFC)
To add a node to the Windows Server Failover Clustering (WSFC), first, ensure that it is joined to the AD or added to the DNS server for proper name resolution.
Also, allow it to access and log in to ISCSI Target. Use the command below on the iSCSI Target:
Set-IscsiServerTarget -TargetName "iSCSITarget01" -InitiatorId @("IPAddress:192.168.200.70","IPAddress:192.168.200.71","IPAddress:192.168.200.72")
Restart the service for the changes to take effect:
Restart-Service -Name WinTarget
Install Failover Clustering on the node as we did in step 2.
Once installed, join the cluster by executing the command:
Add-ClusterNode -Cluster "Cluster01" -Name "node3"
Verify the changes:
Get-ClusterNode
Sample output:
On the GUI, to add a node, right-click on the cluster:
Provide the domain name of the node.
Now follow the similar steps we did earlier when creating the cluster.
Once added, the node will appear as shown:
Step 6: Remove Nodes in Windows Server Failover Clustering (WSFC)
To remove a node from the cluster, access the node with Cluster Administrative tools and issue the command with the below syntax:
Remove-ClusterNode -Cluster "<cluster-name>" -Name "<node-name>"
For example:
Remove-ClusterNode -Cluster "Cluster01" -Name "node3"
Sample Output:
You can also do this from the GUI. Just right-click on the node to delete select remove ->Evict
Proceed as shown below:
Step 7: Test Windows Server Failover Clustering (WSFC)
Now we can test and see if the Windows Server Failover Clustering (WSFC) is working as desired. For this demo, we will use SSH. Ensure that SSH is enabled on the cluster nodes using the guide below:
Now test if you can SSH to any of the cluster nodes with the cluster IP.
For example:
ssh [email protected]
Once connected, run the below commands:
powershell
Get-ClusterNode
Get the hostname and volume
hostname
Get-Volume
Sample Output:
Once here, reboot this node:
Restart-Computer -Force
While still rebooting, try SSH again.
ssh [email protected]
Get the hostname and volume:
powershell
Get-ClusterNode
hostname
Get-Volume
Sample Output:
From the above output, we have logged in to another system. This is a simple demonstration of how high availability can be achieved with this setup. You can now make the desired HA for your databases, web apps etc.
Verdict
Today we have learned how to configure Windows Server 2022 Failover Clustering (WSFC). This can play a critical role in ensuring the availability, resilience, and continuous operation of important applications and services in various domains. I hope this was significant to you.
See more:
Deploy Highly Available Kubernetes Cluster on CentOS 7 using Kubespray