Newer
Older
openstack-caracal-ipv4 / docs / dc-dc-replication-DR-seed.md

SEED: DC-DC cross-DC replication / DR design (Tier A)

Status: SEED / DRAFT for the DC-DC planning chat. Authored by the main-chat stream during DC-DC planning. This is a settled decision to formalize, not a committed record. The planning chat files the D-entry: assign next-free via ledger-scan at commit -- note D-076 is already claimed by the PINNED dashboard workstream (draft in a worktree), so the DR decision is the next free after that; confirm and coordinate before consuming.

Governing constraint: minimize delta to Roosevelt.


Decision (settled with the operator)

Two independent clouds (separate Keystones), so RBD-mirror is a data primitive, not service failover. DR posture = Tier A: data recoverability, bidirectional (each DC protects the other), operator-runbook failover.

Mechanism, per data class:

  • Cinder volumes -> cinder-backup to a cross-DC-replicated object store. This is the honest cross-independent-cloud path: a restore reconstitutes the volume with its Cinder metadata in the peer cloud, which raw RBD-mirror cannot. Low delta -- cinder already exposes the backup-backend endpoint (bound metal-internal) and ceph-radosgw is present as the S3 target.
  • Glance images -> snapshot-based RBD-mirror of the Glance pool, two-way, with a re-register step in the failover runbook.
  • Nova ephemeral -> NOT replicated. Ephemeral root disks are cattle; recovering them would also need the un-mirrored Nova instance records. Instances are rebuilt from image + volume on failover.

Parameters:

  • RPO = replication/backup interval; start ~15 min, tunable.
  • RTO = a measured output of the failover drill, not a pre-committed SLA.
  • Staging: prove one-way (single mechanism, single direction) + a clean failover/failback drill FIRST, then enable two-way.
  • Carrier: the replication plane (10.12.36.0/22) with an explicit inter-DC route + bandwidth budget -- distinct from intra-DC OSD cluster traffic that already uses this plane.
  • Not replicated: Neutron state (ports, FIPs, security groups) -- recovered workloads land on the peer's networks with new addresses; the runbook re-creates this.

Options considered

  • Tier A (CHOSEN): mirror/backup + operator rehydration runbook. RPO minutes, RTO hours/measured. Lowest complexity, most robust, delta-minimal.
  • Tier B (folded in for volumes): cinder-backup/restore -- adopted as the Cinder path because it crosses the independent-cloud boundary cleanly.
  • Tier C (deferred): orchestrated workload failover via control-plane metadata replay. Low RTO, high build cost, brittle (no first-class cross-independent-cloud OpenStack DR). Revisit only if a hard minutes-RTO requirement emerges.

Failover / failback runbook -- SKELETON (planning chat to flesh out against the live env)

Failover (DC1 lost, recover at DC2):

  1. Confirm DC1 truly down (avoid split-brain from a transient partition).
  2. Glance: promote the mirrored Glance pool at DC2 (force-promote if DC1 unreachable); re-register images into DC2 Glance.
  3. Cinder: restore required volumes into DC2 Cinder from the replicated backups.
  4. Rebuild instances from image + restored volume; re-create Neutron ports/FIPs/SGs.
  5. Record RTO/RPO actuals.

Failback (DC1 recovered) -- split-brain-safe ordering for two-way:

  1. Do NOT let recovered DC1 resume as primary automatically.
  2. Demote DC1's Glance pool; resync from DC2 (now primary).
  3. Reconcile Cinder: back up any DC2-side changes; restore into DC1.
  4. In a controlled window, optionally flip primary back (demote DC2, promote DC1).
  5. Verify both directions healthy; record the drill.

Open sub-items for the planning chat

  • radosgw multisite vs. a mirrored backup bucket as the replicated backup target.
  • Exact mirrored pools; consistency groups for multi-volume apps.
  • Inter-DC replication route + bandwidth budget on the simulated WAN (MTU-aware).
  • Interaction with the D-071 controller-HA decision (backup/restore of per-DC control planes).
  • ceph-rbd-mirror charm topology + daemon HA; peer bootstrap on the replication plane.