IL-0494 Netlify · 2016-08-22networkingsecurity
Netlify's central load balancer IP stopped responding when Rackspace null-routed it in a DDoS, and A-record sites hung
Netlify served sites in two ways: through the Netlify CDN, with points of presence worldwide and traffic routed to the closest location, and through a central load balancer whose IP users can target with A records when their DNS provider cannot set a CNAME on a naked domain. Until August 22, 2016 that load balancer was provisioned in Rackspace's Chicago datacenter. When DDoS traffic overwhelmed it, Rackspace null-routed it, and handling the attack was out of Netlify's hands because the load balancer was a managed one.
With no timeline from Rackspace, Netlify started a new cluster of CDN machines in Google Compute behind a Google network load balancer based on Maglev. Clients who had contacted support were given the new public IP and told to change their A records to bring their naked domains back online, and once the setup proved robust, Netlify updated its documentation and announced the new IP on Twitter, Gitter and its status page. Updating the status page took longer than it should have, because its separate publishing system, built on an external CI provider, S3 and Cloudfront, turned out to be fragile.
- Severity
- –
- Scope
- All sites with an A record pointed at Netlify's central load balancer IP; naked domains used as primary domains were hit hardest
- Users affected
- Netlify users with A records pointed at the load balancer IP
- Region
- –
- Time to detect
- –
- Time to resolve
- –
Symptoms
At 8am PST on Monday, August 22, 2016, Netlify got alerts that its central load balancer, the single public IP that users point A records at, had stopped responding. Rackspace had null-routed the load balancer, so all traffic to that IP hung before it reached Netlify's servers.
Every site with an A record pointed at that IP was affected to some degree, and sites that used a naked domain with an A record as their primary domain were hit the hardest. Sites served through the Netlify CDN with a CNAME did not go through this load balancer.
Two days earlier, on the night of Saturday, August 20, the load balancer had shown a sharp surge in incoming transfer with no matching rise in outgoing requests. Netlify added capacity behind the load balancer and asked Rackspace whether the traffic was legitimate or the start of a DDoS attack; Rackspace said the level of traffic was nothing to worry about. During the outage, even after escalating to the account manager, Netlify could get no ETA and no data on the size or type of the attack.
Symptom Network unreachable
Root cause
Root cause Cloud provider outage
- Trigger
- A DDoS attack against Netlify's central load balancer in Rackspace's Chicago datacenter, after which Rackspace null-routed the load balancer's public IP.
Detection
Alerts at 8am PST reported that the central load balancer had stopped responding, and Rackspace then confirmed it had null-routed the load balancer.
Remediation
- Started a new cluster of CDN machines in Google Compute behind a Google network load balancer
- Gave clients who had contacted support the new public IP and told them to change their A records
- Updated the documentation and announced the new IP on Twitter, Gitter and the status page
Action items
- Keep the new Google-based network IP running in place of the Rackspace load balancer
- Release Netlify's own DNS hosting, integrated with the CDN, so domains do not depend on a fixed IP
- Fix the status page publishing process so it is updated straight away during an issue
- Build a mailer that sends targeted mails to all paying clients during an outage
Lessons
Netlify judged Rackspace's load balancer too vulnerable to DDoS and Rackspace's DDoS processes not up to the standard of other cloud providers, and expected Google's anycast-based Maglev load balancer to be more resilient. In the end, the only way to protect a domain from DDoS-related outages is not to expose any fixed IP address for it, which is why sites should use the www domain with a CNAME, or Netlify DNS, rather than a single A-record IP.
Sources
Related cases
IL-0438Builder Work became almost entirely unreachable with 504 errors when the Amazon CloudFront VPC Origins feature failedANDPAD · 2026same root cause · shared Cloud load balancer
IL-0463Secure Connect connectors timed out after a GKE control plane upgrade left Harness's internal load balancer unreachableHarness · 2026same root cause · shared Cloud load balancer
IL-0542Twingate authentication and authorization requests failed at higher rates after traffic moved onto a smaller GKE clusterTwingate · 2025same root cause · shared Cloud load balancer
IL-0364A quarter of Cloud Platform ingress traffic was slow because an AWS NLB stopped health-checking targets in one zoneUK Ministry of Justice · 2022same root cause · shared Cloud load balancer
IL-0446About 20% of requests to an ITANDI ECS service got ALB 5XX errors, apparently from one zone, right after a deployITANDI · 2020same root cause · shared Cloud load balancer
Check your cluster for this
For AI tools and scripts
- This case as JSON: https://incidentlib-api.benchlet.com/cases/IL-0494
- The cases most like it: https://incidentlib-api.benchlet.com/cases/IL-0494/similar
- MCP server (Streamable HTTP, no key):
https://incidentlib-mcp.benchlet.com/mcp
The API needs no key. The MCP server offers search_incidents, get_incident, list_incidents, get_topic and vocab; both are explained on API and MCP.