Postgres

Shared writer is HA for dhcpd. Backup the database, not a lease file on the box.

Lease state is Postgres. dhcpd has no ISC-style failover peer database.

Community install: random Postgres password in /etc/lattice/cluster.env (0600), sslmode=require, same DSN style as HA. Roles: lattice_api, lattice_dhcpd, lattice_worker, lattice_dns, lattice_maint. Owner lattice migrates and pg_dumps. Each process uses its own role — dhcpd does not have access to API tokens or the install key.

Paid HA: bundled Patroni (three nodes, one writer) or lattice-install --mode byo-postgres. Optional PgBouncer — session pool for api/worker; dhcpd keeps a direct DSN because of LISTEN.

Backup the cluster with your normal Postgres tool. Restore is a new cluster (including a DR DC): point LATTICE_PG_DSN there and restart api/worker/dhcpd, then cut relays/DNS/VIP. /readyz is 503 until ping works. Do not stretch the three bundled HA VMs across DCs — HA — Active / passive DC.

Do not replay WAL and restore a dump onto the same instance. Do not replay a dump onto a live writer that dhcpd is still using.