Ahosting Logo
Knowledge Base

Understanding Single Points of Failure in a Server Setup

Redundancy is usually added at the layer that is easiest to seeDiskswhere redundancy nearly always isPower, network, the machine itselfsometimesDNS, the provider, the person who knows how it worksalmost neverListing the layers honestly is the whole exercise, and the answer is often that the single point of failure is nothardware at all.

A setup described as redundant is usually redundant in one place. Listing the layers honestly shows where the real single points are, and they are rarely the ones that were addressed.

The layers, from the inside out

Disks. Usually covered by a redundant array, and therefore the layer least likely to take the service down. It is also the layer people mean when they say "redundant".

The machine. One motherboard, one processor, one set of memory. A power supply failure, a faulty memory module or a controller fault stops everything, and the redundant array stops with it. Monitoring server health walks through detecting the failures that precede this.

Power and network into the machine. Server-class hardware often has two power supplies; whether they are fed from independent circuits is a facility question worth asking. A single network cable is a single point regardless of how good the switch is.

The rack and the facility. One room, one set of cooling, one building.

The network provider. A well-connected facility has several; a smaller one may not.

DNS. Two nameservers at one provider fail together. Secondary DNS and what happens when DNS fails explains why this outage is worse than a server one.

The registrar account. One login controls whether the domain exists at all.

The exercise

For each layer, answer two questions: what happens if it fails, and how long until service returns.

Write the answers down. The result is usually uncomfortable and useful. Most setups discover that a redundant array protects against the failure they had already survived, while a DNS provider outage or a lost registrar login takes everything offline with no recovery path at all.

Redundancy has a cost people underestimate

Two of something is not twice the reliability. It is two things to keep in step, and the synchronisation is where new failures come from.

Two web servers means shared sessions, shared uploads and a way to keep code identical. Two database servers means replication, which introduces lag, split-brain risk and a failover decision that must be made correctly under pressure.

A well-run single server with good backups is more reliable than a badly run pair. The pair is only better if somebody owns the complexity. Managing multiple servers consistently explains what that involves.

Where the cheap wins are

Two of them cost almost nothing and remove genuine single points.

DNS at two providers. Small recurring cost, and it covers a failure that otherwise takes the website and the email down together.

Backups somewhere else entirely. Different provider, different account. This does not prevent an outage and it is what turns a total loss into a restore. Backups and disaster recovery explains arranging it.

Neither adds operational complexity, which is what makes them different from the rest of this list.

Decide what the outage is worth

The honest question is not how to eliminate every single point (that is unbounded) but what an hour, a day and a week of downtime actually cost.

For many businesses a day is survivable and a week is not, which points at recovery time rather than at redundancy: a tested restore onto replacement hardware, with a known duration.

For a business where an hour matters, the spending is justified, and it should start with the layers above the disks.

Test the assumption

Redundancy that has never been exercised is a belief. Fail over deliberately, during a planned window, and find out what actually happens. Planning maintenance windows goes into having one.

The usual discovery is that failover works and something adjacent does not: a hard-coded address, a certificate only on one machine, a cron job that runs on both. Those are found in a test or during an incident, and only one of those is a good time.

Draw the actual path a request takes

The exercise only works if the diagram matches reality, and most people draw the design rather than the deployment.

dig example.com A +short
dig example.com NS +short
curl -sI https://example.com/ | grep -iE 'server|cf-ray|x-cache'
ss -tn state established | awk '{print $5}' | cut -d: -f1 | sort -u | head

Follow one request from the visitor's resolver to the response, naming every system it passes through: the registrar, the nameservers, any proxy, the web server, the database, and anything the page calls while building.

The list is usually longer than expected, and the items nobody counted are where the single points hide. A payment provider, an external font, a licence check and a monitoring agent are all things that can stop the page while the server is perfectly healthy.

Some dependencies are people rather than machines

The failure that takes longest to recover from is frequently not technical.

One person who knows how the deployment works. One account that holds the domain. One card that renews everything. One address that receives every alert. Each is a single point, none appears in a network diagram, and each has taken sites offline for longer than a disk failure would.

whois example.com | grep -iE 'registrant|admin email'

The registrar account is the one worth checking first, because losing access to it is the failure with no technical remedy at all. Everything else can be rebuilt from a backup; a domain you cannot prove you own cannot.

Remove one thing rather than duplicating everything

Redundancy is expensive and elimination is free, so the cheapest improvements come from removing dependencies rather than doubling them.

A font served from your own server rather than fetched from elsewhere removes one external system. A page that renders without waiting for a third party script removes another. A cached copy that can be served when the database is unavailable removes the most important one.

Work through the list from the exercise above and ask, for each item, whether the page genuinely needs it to render. Most sites can remove two or three dependencies entirely, which is a better return than making any single one redundant.