Skip to main content
Version: 0.x (legacy)

Witness configuration

Ballast never reimplements cluster quorum. Quorum, vote counting and witness communication all belong to Windows Failover Clustering — Ballast's role is to declare which witness a cluster should use and reconcile the cluster to that declaration via Set-ClusterQuorum, the same as an operator would by hand. Declaring a witness is coordination; counting votes ourselves would not be.

Witness types​

TypeNotes
File share witnessA single SMB share reachable by every cluster member. Simplest option for a single site or a small ROBO deployment.
Cloud witnessAn Azure Storage account used as the witness, avoiding a dependency on any one site. Fully supported as declared desired state, the same as file share and disk witnesses.
Disk witnessA shared disk dedicated to quorum. Requires shared storage already provisioned.

Declaring a witness​

A witness is part of a ClusterSpec's quorum configuration. On apply, the centre drives the cluster's designated node to run Set-ClusterQuorum against the declared witness; the agent does not invent a witness choice on its own.

A cluster's Summary tab shows this as declared, live state — not just an API field:

Ballast console cluster configuration panel showing status Healthy, functional level 12 (Server 2025), quorum Majority, a file share witness at a UNC path, desired generation 7, and a note that Failover Clustering owns every quorum decision while Ballast only declares and reconciles to the witness via Set-ClusterQuorum

Quorum and Ballast's autonomy story​

Quorum and the centre-offline autonomy story are deliberately separate concerns. A cluster keeps deciding failover and ownership via its own quorum even if the Ballast centre is unreachable — that is Windows Failover Clustering's job, unaffected by Ballast. What the centre being offline changes is only whether new desired state can be declared; each agent keeps enforcing what it already has, cluster membership and quorum notwithstanding.

Changing a witness later​

Changing the declared witness (e.g. moving from a file share to a cloud witness) is the same reconcile pattern as any other desired-state change: update the ClusterSpec, and the designated node's agent drives Set-ClusterQuorum again. Because witness config affects quorum, it is held for explicit operator approval rather than applied automatically — see Auto-revert vs approval-gated.