The cluster loses quorum
Use this page when a majority of the cluster's database members is down.
Incus keeps its cluster state in a replicated database. Members with the database role vote,
and a majority of them must be reachable. Losing the majority (two of three voters) stops every
change to the cluster; the instances keep running.
What you see
- Instances keep running and serving. Service addresses (OVN load balancers) keep forwarding.
- Apelora reports Incus as unavailable instead of guessing: API calls that read Incus fail
with HTTP 502 (
incus_api_error"context deadline exceeded" after about 5 s, orincus_unreachableafter about 20 s). The Fabric Console and the Studio show the error, not stale data. Queued deployments wait: the worker's jobs fail and are retried with back-off. The replica supervisor skips its passes (it never acts on an inventory it cannot read). incus cluster liston a surviving member hangs.
Temporary loss (the members come back)
- Find out why the voters are down (power, network between members, disk) and bring them back. Do not remove members or force recovery while they may return.
- The database regains quorum as soon as a majority is back. Expect the API to answer again, and every member to be Online with the same roles as before, within seconds of the members booting.
- Check: Fabric Console → Servers → Members lists every member Online and the cluster database as Majority safe; Preflight passes; Operations shows queued jobs completing. The supervisor resumes on its next pass.
Permanent loss (the members will not come back)
Only when a majority of voters is lost for good. This changes the cluster's database
membership. First take a backup of /var/lib/incus/database on the surviving members.
- Stop the Apelora worker, so nothing is queued against a cluster being repaired.
- On every surviving member, stop the Incus daemon.
- On one surviving voter, run
incus admin cluster recover-from-quorum-loss(see the Incus documentation for the version inupstream.lock.yaml), then start its daemon, then the others. - Remove the lost members (
incus cluster remove --force <name>); their instances are gone with them. The supervisor recreates stateless replicas once the worker runs again. Singleton and stateful modules need their data restored. - Add new members through Apelora's enrolment (member-join.md) to get back to three voters.
Prevention: keep three or more voters in separate failure domains, and keep their clocks and network healthy. Losing one voter is survivable; losing two at once is not.
Before you rely on it
- A temporary loss has been tried. Recovering from a permanent loss has not: it rewrites the cluster's database membership. Read the Incus documentation for your version before you start.
This page is a copy of docs/runbooks/quorum-loss.md in the repository, which is the source of truth. Suggest a change.