LinuxLII · High Availability FundamentalsFailure domains
Failure domains - what fails together
What you'll learn
- Define failure domains
- Identify common failure domains
- Design across failure domains
- Test failure domain isolation
Prerequisites
Verified against Ubuntu 24.04 LTS · Debian 12 (Bookworm) · RHEL 9.x · Rocky Linux 9.x · AlmaLinux 9.x · Linux kernel 6.1 LTS / 6.6 LTS · systemd 255+ · OpenSSH 8.7p1 (RHEL 9) / 9.6p1 (Ubuntu 24.04) · nftables 1.0.x · chrony 4.x · Pacemaker 2.1.x · Corosync 3.1.x · 2026-08-09
A failure domain is a set of components that fail together. Designing across failure domains is the key to high availability. This lesson covers the common failure domains and how to design for them.
What is a failure domain
A failure domain is a unit of failure. Components within a failure domain share a risk; components across failure domains have independent risks.
Examples:
- All servers in one rack share the same power and network switch.
- All servers in one data centre share the same grid and cooling.
- All servers in one region share the same metro network.
- All instances of one application share the same code and config.
- All services behind one load balancer share the same load balancer.
Common failure domains
| Failure domain | What fails together |
|---|---|
| Power circuit | Power outage on that circuit |
| Rack | Power, network, cooling |
| Data centre | Everything in that DC |
| Region | Metro network, control plane |
| Cloud account | API access, billing, IAM |
| Application | Bug, deploy, config |
| Team | Human error, communication failure |
| Software version | Bug in that version |
Design across failure domains
Redundancy must be across failure domains:
- Two servers in the same rack: not redundant (same power and network).
- Two servers in different racks: redundant for rack-level failure.
- Two servers in different data centres: redundant for site-level failure.
- Two services with the same code: not redundant (same bug).
- Two services with different code (e.g. primary and DR script): redundant for code-level failure.
The standard: separate the redundant components by at least one failure domain.
Test failure domain isolation
For each failure domain:
- Identify what could fail.
- Verify the redundant component takes over.
- Document the test.
Examples:
- Power failure: kill the primary’s PDU. Verify the secondary takes over.
- Rack failure: simulate a rack loss. Verify the service continues.
- Application failure: deploy a known-broken version. Verify the load balancer removes it.
Without testing, the redundancy is theoretical.
Knowledge check
Knowledge check · 3 questions
Q1. What is a failure domain?
Q2. Two servers in the same rack are redundant.
Q3. Which of the following are common failure domains? Select all that apply.
Passing score: 75%. Answers are checked in this browser.