Testing Failover: Runbooks, States, and Rollback Paths

Failover is only reliable when failure, switchover, and return are reproducibly tested. A good failover runbook describes expected health check states, routing and DNS behavior, observation points, and a controlled rollback path. The key is not the configured rule, but the demonstrable operational behavior.

Post Image

TL;DR

Failover is only reliable when failure, switchover, and return are reproducibly tested. A good failover runbook describes expected health check states, routing and DNS behavior, observation points, and a controlled rollback path. The key is not the configured rule, but the demonstrable operational behavior.

Introduction

Many failover architectures are configured once but never tested under realistic conditions. This is where an operational error lies: A backend can be removed from load balancing, while DNS caches, existing connections, health check intervals, or unclear rollback logic continue to produce different behavior. Testing failover means not only shutting down a server. It means validating states, timelines, and responsibilities. For publicly accessible services, routing, DNS, health checks, and the return to the primary system must be considered together.

1. The Failover Runbook Describes States, Not Just Commands

A useful failover runbook begins with the expected state model. It should distinguish between "healthy," "degraded," "unhealthy," "failed over," and "recovered." For each state, triggers, technical impacts, and permissible next steps should be documented.

In the event of a backend failure, it must be specified when a health check is considered failed, how many consecutive errors trigger the switchover, and which target subsequently takes over traffic. Equally important is the question of what happens to existing connections. Layer-4 and Layer-7 behavior can differ: New requests can be handled differently from already established sessions.

The runbook should also define roles and approvals. Who initiates the test? Who monitors metrics and logs? Who decides on abort or rollback? Clear responsibilities reduce the time between technical insight and operational decision. A runbook that only contains a sequence of commands is incomplete for complex failures.

2. Health Checks Must Be Observed as a State Machine

Health checks are not a neutral yes-no test. Their behavior depends on endpoint, timeout, interval, error thresholds, and restart conditions. A test must therefore document when a backend is first recognized as faulty, when it is removed from traffic, and when it is considered available again.

During the test, at least the backend state, request distribution, error rates, response times, and active connections should be observed. Additionally, it should be checked whether the expected backup backend actually takes over requests. A green health check alone does not prove that the entire failover path works.

The transition from "unhealthy" to "healthy" is particularly critical. A backend may be technically reachable again but not yet stable enough for full traffic. Therefore, a failover runbook needs criteria for a controlled resumption. In the context of an edge platform like the ayedo Edge Cloud, these state transitions are relevant because backend health checks and failover directly influence public routing.

3. Test Routing and DNS Separately but Together

Routing failover and DNS failover solve different problems. An Anycast Layer-4 or Layer-7 routing can redirect traffic at the edge to another backend without changing the public DNS entry. DNS failover, on the other hand, changes the resolution and is subject to caches, TTLs, and resolver behavior. Those who combine both mechanisms must measure their temporal effects separately.

A test should therefore first clarify which path actually fails. If a single backend is removed, the DNS resolution should not change unnecessarily. If, on the other hand, an entire edge or routing path fails, it must be checked whether Anycast DNS or Multi-Provider DNS reacts as intended. Measurements from multiple networks are useful because recursive resolvers and local caches can deliver different results.

The ayedo Edge Cloud combines Anycast DNS, Multi-Provider DNS, and Layer-4 and Layer-7 load balancing in one edge platform. For tests, however, the separation of responsibilities remains important: DNS resolution, edge routing, and backend reachability must each be validated individually and then evaluated in conjunction.

4. Control Rollback and Secure Evidence

Rollback is not an automatic follow-up to failover but its own operational state. A previously failed backend should only receive traffic again when cause, stability, and capacity have been checked. Otherwise, an unstable system can immediately generate errors again or be overloaded by a sudden traffic increase.

The runbook should therefore provide for a staged return: Check recovery, observe health check state, gradually increase traffic, and compare error rates. If a gradual distribution is not possible, at least a defined time window and clear abort criteria are needed. The rollback must also document whether sessions, caches, or connections are affected.

A disaster recovery test is only meaningful when evidence is secured: timestamps of state changes, routing decisions, DNS responses, metrics, and relevant logs. This can reveal whether the architecture reacted as planned or only appeared to be available. These proofs are also crucial for later improvements to the runbook.

Practical Scenario: Backend Failure with Controlled Return

A publicly accessible API service runs on two backends. In the test, the primary backend is deactivated so that health checks fail. The team first measures the time to detection and checks whether new requests are distributed to the secondary backend. DNS remains unchanged; this allows the routing failover to be evaluated in isolation.

After the primary backend is restored, it initially remains out of productive traffic. The team checks logs, response times, and health check stability. Only then is the rollback approved. If an increased error rate occurs again, the documented rollback path takes effect: The primary backend is excluded again, and operations continue on the secondary target.

FAQ

How often should failover be tested?

After relevant architecture or configuration changes and regularly in operation. The frequency depends on the criticality, change rate, and restart requirements of the service.

What belongs in a failover runbook?

Triggers, expected states, observation points, responsibilities, abort criteria, switchover logic, rollback, and the necessary evidence.

Why is a successful switchover test not enough?

Because a service can switch to the backup backend, but the rollback, DNS caches, sessions, or the stability of the original backend can still be faulty.

Conclusion

Failover quality does not arise from a single configuration but from repeatable processes. Those who test health check states, routing, DNS, and rollback as an interconnected operational process recognize deviations before they become critical in the event of a disruption. The ayedo Edge Cloud offers a unified edge layer with Anycast routing, DNS, health checks, and failover. However, its effectiveness must be demonstrated in the specific operational model through runbooks and tests.