Skip to content

cluster:ha service

Places a module's guest under Proxmox HA and keeps its node-affinity and replication in line with the module's declaration. Most of what it repairs has no module field behind it — an absent HA resource, a missing rule, a guest on the wrong node — which is why it owns only two declared fields but does considerably more than two things.

Why this service owns only two fields

Most of what cluster:ha repairs has no module field behind it — the HA resource absent, the affinity rule missing, the guest running on the wrong node. None of those can be expressed in a field-keyed drift record, because there is no field whose declared value disagrees with reality. The reconcile finds and fixes them anyway; the manifest only covers the two things an operator actually declares.

HANode is also where guest placement is decided for an HA module. cluster:vm node explicitly refuses to migrate an HA guest and defers to this service — see node and HANode today.

Fields

cluster:ha owns 2 declared field(s). Each table below carries the field's full definition and, where the service applies it, its ADR-020 change semantics.

HANode

Secondary node for High Availability. Defaults to the first node in configuration.json that differs from 'node'. Must be different from 'node' and have the same storage defined. HA is only active when 'cluster:ha' is in dependsOn.

Attribute Value
Type string
Default (none)
Used by cluster:ha
Change class in-place
Apply mode reconcile

Why this change class. The failover node. Changing it re-points the node-affinity rule and recreates the ZFS replication job against the new target — which means a full initial re-sync, so it is IO-heavy and can take a long time. It is still in-place: the running guest is not moved, not rebooted, and stays served throughout. The move that DOES relocate a guest is cluster:vm's node, which defers to this service for an HA module.

replicationSchedule

Cron-style schedule for HA replication interval

Attribute Value
Type string
Default */15
Example */15
Required by (none)
Used by cluster:ha
Change class in-place
Apply mode reconcile

About the field. Default is every 15 minutes

Why this change class. How often the guest's disk is replicated to the failover node — the bound on how much is lost if the primary dies. A pvesr update: it changes when the next run happens, nothing else.