Skip to main content
Version: 2604 (Preview)

Task 02: Cluster Quorum Configuration

Implementation Cluster Deployment

DOCUMENT CATEGORY: Implementation Runbook
SCOPE: Azure Local, WSFC (S2D / SAN), and standalone Hyper-V clusters
PURPOSE: Validate the witness storage account exists (create if absent), then configure cluster quorum MASTER REFERENCE: Cluster Quorum Configuration

Status: Active

Configure cluster quorum for high availability and split-brain prevention. Cloud Witness is the recommended type for all cluster scenarios — the orchestrated and standalone scripts validate the witness storage account in Azure and create it automatically when missing before configuring quorum.


Quorum Options​

Quorum TypeBest ForRequirements
Cloud WitnessAzure Local, WSFC (S2D/SAN), Hyper-V — recommendedAzure Storage Account, internet access
File Share WitnessAir-gapped or on-premises environmentsDomain-joined file server — not a cluster node
Disk WitnessLegacy WSFC/SAN onlyShared disk visible to all nodes; incompatible with S2D and Azure Local
Recommended Configuration

Cloud Witness is the recommended quorum type for all cluster scenarios. It requires an Azure Storage Account — the scripts below validate the account exists and create it automatically if missing before setting quorum.


Variables from variables.yml​

PathTypeDescription
storage_accounts.storage_accounts.cluster_witness.namestringWitness storage account name
storage_accounts.storage_accounts.cluster_witness.resource_groupstringWitness resource group
storage_accounts.storage_accounts.cluster_witness.skustringStorage SKU (ZRS/LRS)
azure_platform.regionstringAzure region
compute.cluster_nodes[].management_ipstringNode management IPs

Execution Options​

Failover Cluster Manager​

When to use: Single cluster, prefer GUI-based configuration, or verifying an existing quorum setting

Step 1 — Verify or Create the Cloud Witness Storage Account​

Before configuring quorum, ensure the storage account exists in Azure.

  1. Open Azure Portal → search for Storage accounts

  2. Verify storage_accounts.storage_accounts.cluster_witness.name exists in the correct resource group

  3. If absent, create it: | Field | Value | Source | |-------|-------|--------| | Subscription | (deployment subscription) | storage_accounts.storage_accounts.cluster_witness.subscription | | Resource group | (cluster resource group) | storage_accounts.storage_accounts.cluster_witness.resource_group | | Name | (witness SA name) | storage_accounts.storage_accounts.cluster_witness.name | | Region | (cluster region) | azure_platform.region | | Redundancy | Standard ZRS or LRS | storage_accounts.storage_accounts.cluster_witness.sku |

  4. After creation, navigate to the storage account → Security + networking → Access keys

  5. Copy key1 — you will need it for the quorum configuration below

Step 2 — Configure Quorum via Failover Cluster Manager​

Cloud Witness (recommended):

  1. Open Failover Cluster Manager on a management server or cluster node
  2. Connect to the cluster
  3. Right-click the cluster name → More Actions → Configure Cluster Quorum Settings...
  4. Click Next on the wizard welcome screen
  5. Select Select the quorum witness → Next
  6. Select Configure a cloud witness → Next
  7. Enter:
  • Azure storage account name: <cluster_witness.name from variables.yml>
  • Azure storage account key: (key1 from Azure Portal)
  • Azure service endpoint: leave default (core.windows.net)
  1. Click Next → Next → Finish

File Share Witness (air-gapped / alternative):

  1. On a domain-joined file server (not a cluster node), create a shared folder
  2. Grant the cluster computer account Full Control on the share
  3. In Failover Cluster Manager: More Actions → Configure Cluster Quorum Settings...
  4. Select Configure a file share witness
  5. Enter the UNC path: \\<file-server>\<share-name>
  6. Click Next → Finish

Validation​

  • Quorum witness shown in Failover Cluster Manager under the cluster summary
  • Cluster Events show no quorum-related warnings or errors
  • Get-ClusterQuorum returns expected QuorumType and QuorumResource

Validation Summary​

CheckCommandExpected Result
Quorum typeGet-ClusterQuorum | Select QuorumTypeNodeAndCloudWitness or NodeAndFileShareMajority
Quorum state(Get-Cluster).QuorumStateNormal
Witness resourceGet-ClusterResource | Where-Object ResourceType -match "Witness"State: Online
Storage accountGet-AzStorageAccount -Name <name> -ResourceGroupName <rg>ProvisioningState: Succeeded

Troubleshooting​

IssueCauseResolution
Set-ClusterQuorum fails with access deniedInsufficient permissions on cluster or storage accountRun as cluster administrator; verify SPN has Storage Account Key Operator Service Role on the witness storage account
Quorum state shows NotConfiguredCloud witness storage account key is incorrect or rotatedRe-configure with fresh key: Set-ClusterQuorum -CloudWitness -AccountName <name> -AccessKey <newkey>
Witness resource shows FailedStorage account firewall blocking cluster node IPsAdd cluster node public IPs to the storage account firewall allow list or enable Allow trusted Microsoft services


Alternatives​

The procedures in this task use the scripted methods shown in the tabs above. Additional deployment methods including Azure CLI and Bash scripts are available in the azurelocal-toolkit repository under scripts/deploy/.

MethodDescription
Azure CLIPowerShell-based Azure CLI scripts for Azure resource operations
BashLinux/macOS compatible shell scripts for pipeline environments
PreviousUpNext
Task 01: Deploy SDNPhase 06 IndexTask 03: Security Groups

Version Control​

VersionDateAuthorChanges
1.0.02025-03-25Azure Local CloudInitial release