Skip to main content
gcpdown
criticalCloud Load BalancingGlobal

The November 2021 Google Cloud Load Balancer Outage: A Config Race Condition

GCPDown Research · Incident analysisPublished November 19, 2021Updated June 20, 20267 min read
Red network cables plugged into a switch

Timeline

  1. Impact begins

    A configuration change propagating through Google Cloud’s external HTTP(S) load balancing fleet is corrupted by a race condition. Requests to affected sites start returning 404 Not Found errors despite the origin backends being healthy.

  2. Investigating

    Google acknowledges elevated errors for Cloud Load Balancing and Cloud CDN. Widespread reports of 404s from major consumer sites accumulate as the bad config reaches more of the edge.

  3. Identified

    The corrupt configuration and the race condition that produced it are identified. Engineers begin rolling back to the last-known-good configuration across the fleet.

  4. Mitigating

    The rollback propagates through the load-balancing fleet and error rates fall as edge nodes pick up the good configuration.

  5. Resolved

    Cloud Load Balancing returns to normal globally and 404 rates return to baseline.

Root cause

Google Cloud Load Balancing is a global product - a single anycast front end distributes traffic to backends anywhere in the world - which is exactly what makes it powerful and what made this incident global. The configuration that tells the load balancer how to route requests is generated and propagated through a pipeline, and on November 16 a race condition in that pipeline produced a corrupt configuration that was pushed to the fleet. With bad routing config, the load balancer couldn't match incoming requests to their backend services and returned 404 Not Found - for traffic it never forwarded to origins that were perfectly healthy.

This is the signature failure mode of global control planes: the data plane (your servers) is fine, but the global layer that fronts it has failed, so from the user's perspective everything is down. There is nothing you can do at the origin to fix a load-balancer config problem.

Business impact

Because GCLB fronts a large share of the web's high-traffic properties, the casualty list read like a consumer-internet roll call: Spotify, Home Depot, Snap, and many more served 404s simultaneously. For each of them, dashboards showed healthy backends and zero origin errors - because the requests were dying at Google's edge, never reaching the origin. That disconnect makes these incidents especially disorienting to diagnose from inside the affected company.

Prevention and lessons

  1. Config changes need the same rigor as code deploys. A race condition in a propagation pipeline is a software defect in disguise. Staged rollout, validation of generated config before push, and fast automated rollback are the controls that turn a two-hour global event into a one-region blip.
  2. Understand what "global product" means for your blast radius. GCLB, Cloud DNS, and Service Control are global by design - being multi-region does not protect you from them. Our multi-region GCP guide covers which products are global and how to reason about the coupling.
  3. Have an out-of-band health signal. When your own dashboards show green backends but users report outages, an external check (outage alerts from outside your infrastructure) is what tells you the problem is the edge, not you.
  4. Watch Cloud Load Balancing status directly during "everything is 404ing but our servers are fine" incidents - it's the fastest way to confirm the fault is Google's edge.

SLA credit eligibility

Yes for affected workloads - the load balancer failing to route traffic counts as unavailability. Roughly two hours of impact is claimable at the 10% tier with evidence against the Cloud Load Balancing SLA. Google requires notice within 30 days and caps credits at 50%.

Work out what your bill was owed with the independent Google Cloud SLA credit calculator, or automate breach detection with Next Signal (sponsor). For the full claim process, see the Google Cloud credit-recovery playbook.

Questions about this outage

What caused the November 2021 Google Cloud outage?

A race condition in the configuration-propagation pipeline for Google Cloud Load Balancer produced a corrupt configuration that was pushed to the global load-balancing fleet. Requests to sites behind GCLB returned 404 errors even though their backends were healthy, until the configuration was rolled back.

Which sites went down in the November 2021 GCLB outage?

Because Google Cloud Load Balancer fronts a large share of high-traffic sites, the visible impact included Spotify, Home Depot, Snap, and many others - all serving 404s to users despite their own servers being up.

Why did healthy backends still return 404s?

The fault was in the load balancer’s edge configuration, not the origins. A corrupt config meant the load balancer could not map incoming requests to the correct backend service, so it returned 404 - the backends never even received the traffic.

Next time, hear it from us first

Instant alerts when Google Cloud incidents are detected - services and regions included.

Get outage alerts

More post-mortems

Cloud IAM

The June 2025 Google Cloud Global Outage: How Service Control Crash-Looped

A policy update containing unintended blank fields reached a code path in Service Control - the global layer that checks quota and policy on nearly every Google Cloud API call - that had a null-pointer defect and no feature-flag protection. Service Control crash-looped globally, returning 503s across dozens of products for roughly three hours; us-central1 took longest to recover due to a retry herd.

Google Kubernetes Engine

GKE Control-Plane Outages: When the API Server Fails but Your Pods Keep Running

GKE control-plane incidents are the classic split-brain outage: the Google-managed control plane - the Kubernetes API server, scheduler, and controller manager - becomes unreachable or unhealthy in a region, so kubectl, deployments, autoscaling, and self-healing all stall. Meanwhile the nodes and pods you already had running keep serving traffic, because the data plane runs independently of the control plane. You cannot deploy, scale, or recover from node failures until the control plane returns, but existing workloads generally stay up.

Cloud IAM

The December 2020 Google Authentication Outage: When Identity Ran Out of Quota

A migration to a new quota system left Google's central User ID Service with a near-zero storage quota. The identity service could not read the account data it needed, so requests that required authentication failed globally. Anything that had to log a user in - Gmail, YouTube, Docs, and the Google Cloud Console and APIs that authenticate through the same identity layer - returned errors for roughly 47 minutes of core impact.