Skip to main content
RunBook Academy

← All runbooks in Linux

critical riskcluster affecting~60 min

Runbook: Disaster recovery - full cluster loss

1 · Prerequisites

Confirm every item is in place before any state change.

2 · Pre-checks

Read-only diagnostic commands. If any of these don't match expected output, stop and investigate further.

  • · Verify the recovery site is reachable
  • · Verify backups are accessible from the recovery site
  • · Verify vault access from the recovery site
  • · Confirm an NTP/chrony source is reachable from the recovery site (local appliance, cloud endpoint, or an unblocked pool on UDP/123)
  • · Confirm you can reach the offline escrow copy of the backup repository key, in case the vault is part of the loss
  • · Confirm communication channels (war room, on-call)
  • · Lower the DNS TTL on the failover records to 60s at least one full TTL period before cutover
  • · Confirm you hold a working method to fence the failed region (cloud API credentials, LB admin, database credential revocation)

3 · Procedure

Execute each step in order. Verify the expected output of a step before moving to the next.

  1. 1Communicate: notify incident management, war room
  2. 2Provision: new instances in recovery site
  3. 3Provision: verify a reachable time source and confirm chronyc tracking is clean on every host, before identity or TLS
  4. 4Restore: bare-metal recovery procedure per host
  5. 5Restore: data from backup
  6. 6Restore: secrets from vault
  7. 7Restore: central identity
  8. 8Validate: smoke tests, monitoring
  9. 9Isolate: fence the original region so it cannot serve traffic or accept writes; record the timestamp
  10. 10Cutover: DNS to new region (only after isolation is confirmed)
  11. 11Monitor: watch for issues, and watch for any write reaching the fenced region
  12. 12Document: timeline, decisions, post-mortem

4 · Verification

Confirm the procedure actually fixed the problem.

  • The original region is confirmed offline or write-disabled, and the confirmation is timestamped in the incident log
  • All services are up
  • Monitoring shows the new region as healthy
  • Data integrity verified
  • Customer-facing workflows work
  • DNS points to new region
  • No writes have been observed in the original region since the isolation timestamp

5 · Rollback

If verification fails, undo the procedure in reverse order.

  • Rollback is valid ONLY if no writes have been accepted in the recovery region
  • If no writes have landed: unfence the original region, restore DNS, and confirm a single active write path
  • If writes have landed: do NOT point DNS back. A revert at that point creates two divergent datasets. Escalate to the data team for reconciliation and keep the recovery region authoritative
  • Never unfence a region isolated for a security reason (ransomware, compromise) without security sign-off
  • Investigate the failure
  • Document in the incident

6 · Escalation

When the runbook isn't enough, contact:

  • · If the original region cannot be positively fenced, escalate to the incident commander BEFORE cutover
  • · If writes are observed in both regions, stop, freeze both write paths, and escalate to the data team
  • · If recovery is not on track within RTO, escalate
  • · If data is missing from backup, escalate to backup team
  • · If the repository key or passphrase is missing from the vault, do NOT wait on an escalation: retrieve the escrowed copy from the offline escrow location named in the DR contact sheet (the off-site sealed envelope / safe-deposit box holding the borg key export). Escalate to security only if that copy is also unavailable, and treat it as a business-continuity incident
  • · If the failure has security implications, escalate to security

This runbook covers the worst-case DR scenario: total cluster loss. The procedure is detailed; the discipline is quarterly testing.

When to use this runbook

Use this runbook when:

  • An entire cluster or region is down.
  • Recovery from a single host or service is not possible.
  • A major event (data centre loss, ransomware) requires a full rebuild.

Inputs

Gather before starting:

  • The recovery site (cloud region, alternate data centre).
  • Access to backups (offsite, immutable).
  • Access to vault or secrets manager.
  • Communication channels (war room, on-call).
  • Decision authority (who can authorise the cutover).

Procedure

Phase 1: Communicate (0-15 min)

- Page on-call incident manager
- Open war room (video + chat)
- Notify: security, operations, business stakeholders
- Identify scope:
  - Which hosts are down
  - Which services are affected
  - What data is at risk
- Estimate RTO impact
- Communicate to customers (status page)

Phase 2: Provision (15-60 min)

- Verify recovery site reachable
- Provision instances per host (terraform, ansible, etc.)
- Configure networking:
  - VPC, subnets, routing
  - Security groups
  - DNS resolvers
- Set up bastion access
- Verify backup access
- Verify time sync (chronyc tracking) on every provisioned host

Time is a Phase 2 item, not a Phase 3 one. Kerberos tickets and TLS notBefore/notAfter windows are evaluated against the local clock, so restoring identity onto a skewed host proves nothing: authentication fails fleet-wide with a generic pre-authentication error while DNS, the vault and the domain controllers all look healthy. Freshly provisioned hosts in an idle recovery site are exactly where clocks are wrong and where UDP/123 egress is commonly blocked. A large System time offset, or a Leap status other than Normal, is a blocker for that host - not a warning.

Phase 3: Restore (60-180 min)

For each host:

1. Install OS (autoinstall)
2. Apply configuration management
3. Restore /etc from backup
4. Restore data from backup
5. Restore secrets from vault
6. Start services
7. Verify

Run hosts in parallel where possible. Sequence for dependencies (e.g. database before application).

Phase 4: Validate (180-240 min)

For each service:

- Smoke test (curl /health)
- Synthetic monitoring
- Data integrity check (compare with last known good)
- Performance check (latency, throughput)

Phase 4.5: Isolate the failed region (before any cutover)

This phase is a hard gate. Do not proceed to Phase 5 until it is confirmed and timestamped.

- Disable the original region's load balancer pool / health checks
- Revoke or rotate the original region's database write credentials
- Demote the original database to read-only, or stop it
- Stop or power off the original instances via the cloud API / OOB
- Block the original region's replication and API egress
- RECORD: who confirmed isolation, by what method, at what time (UTC)

Pick whichever of these you can actually execute. A region that is unreachable is not the same as a region that is fenced: an unreachable region can come back. Power events and network partitions - the most common triggers for this runbook - very often end with the original region returning to life halfway through your cutover.

Phase 5: Cutover (240 min)

- Confirm Phase 4.5 isolation timestamp is recorded
- Update DNS to point to new region
- Update load balancer pool
- Verify traffic flows
- Watch the fenced region for any write attempt (it should see none)
- Communicate: "service restored"

Phase 6: Post-incident

Within 24-48 hours:

- Post-mortem meeting
- Timeline reconstruction
- What worked, what did not
- Update the runbook
- Improve the backup / DR

Rollback

Rollback in this runbook is not “put DNS back”. The scope of this runbook is a lost region: by definition there is usually no serviceable region to go back to. Decide with one question.

Has the recovery region accepted a single write?

  • No - rollback is available. Unfence the original region, restore DNS, and confirm there is exactly one active write path before you announce recovery.
  • Yes - rollback is closed. Pointing DNS back now sends clients to a dataset that is missing every write made since cutover, while the recovery region keeps taking new ones. That is not a rollback; it is the creation of a second production database. Keep the recovery region authoritative, leave the original fenced, and escalate to the data team for reconciliation.

Where the isolation was performed for a security reason - ransomware, suspected compromise - rollback is closed regardless of writes, until security signs off. Returning traffic to a compromised region is a security regression, not a recovery.

Common patterns

IssueResolution
Backup is corruptUse older backup; escalate to backup team
Key is missingEscalate to security team
Service will not startCheck logs, configuration, dependencies
DNS not updatingCheck TTL, cache, registrar
Data inconsistencyCheck replication, order of operations
Original region comes back mid-cutoverConfirm it is still fenced. If it accepted writes, treat as split brain: freeze both, escalate to the data team, do not merge by hand
Isolation cannot be performed (no API access, no LB admin)Escalate before cutover. Cutting over without isolation is a decision for the incident commander, taken explicitly and recorded

Escalation

Escalate when:

  • The original region cannot be positively fenced - escalate before cutover, not after.
  • Writes are observed in both regions. Freeze both write paths first, then escalate.
  • Recovery is not on track within RTO.
  • Data is missing or corrupt.
  • A dependency is unavailable.
  • Security implications are unclear.
  • The runbook does not cover the situation.

Bring: timeline, current state, attempted actions, blockers.

Knowledge check

Knowledge check · 5 questions

  1. Q1. What is the first phase of full cluster loss recovery?

  2. Q2. Full cluster loss recovery should be tested quarterly.

  3. Q3. Which of the following are valid phases of full cluster loss recovery? Select all that apply.

  4. Q4. The recovery region is validated and you are ready to move DNS. The original region has been unreachable for two hours; nobody has changed anything in it. What must happen first?

  5. Q5. Cutover completed 40 minutes ago and customers have been transacting in the recovery region. A latency problem appears and someone proposes restoring DNS to the original region, which has now come back. What is the correct response?

Passing score: 75%. Answers are checked in this browser.

References

  1. Pacemaker Administration - cluster recovery and troubleshooting
  2. sudoers(5)