shiichan

Cloudflare Load Balancing Gets Pool Sets for Location-Aware Routing!

Hey everyone, it's Shiichan! Today I've got a networking update from Cloudflare to share.

Cloudflare Changelog developers.cloudflare.com

What was announced?

Cloudflare's Changelog announced that the Load Balancing API now supports a new feature called pool sets. Pool sets combine geographic matching with location-specific traffic steering, so a single load balancer can now use different routing behavior for different locations.

The story so far

Until now, each load balancer could only have one steering policy applied globally. That made it hard to do things like "route traffic from Germany one way, but handle everywhere else differently" — steering behavior couldn't vary by location within a single load balancer.

What changes

With pool sets, you can line up multiple steering rules inside one load balancer, each with its own behavior for a given location. That opens up use cases like active-active traffic distribution, location-specific failover, and regional routing policies — all from a single load balancer, without needing to stand up separate ones per region.

Dive Deep

Let's look at how pool sets are structured.

  • match: defines what triggers the rule. You can match by Cloudflare data center, country, or region
  • overrides: for a match, you specify the candidate pools (pools), a steering_policy, pool weights, and a fallback pool
  • Evaluation order: pool sets are evaluated in array order, and the first matching pool set is applied
  • Proxied traffic exception: instead of selecting a pool, a pool set can return a fixed HTTP response

Cloudflare's example shows a pool set that applies Dynamic Latency steering only to traffic from Germany (DE):

{
  "pool_sets": [
    {
      "name": "germany-lowest-latency",
      "match": {
        "topology": {
          "countries": ["DE"]
        }
      },
      "overrides": {
        "pools": [
          "0930eec54a4c7ae6616985b79f678210",
          "c8b4f5a6d7e84910a2b3c4d5e6f70819"
        ],
        "steering_policy": "dynamic_latency"
      }
    }
  ]
}

You define conditions with match and override the behavior with overrides, so it feels like adding rules on top of your existing load balancer setup.

Wrap-up

  • Cloudflare's Load Balancing API now supports pool sets
  • A single load balancer can apply different steering policies and fallback pools per data center, country, or region
  • Pool sets are evaluated in array order, and the first match wins
  • For proxied traffic, a pool set can return a fixed HTTP response instead of picking a pool
  • A useful update if you're running active-active setups or building out regional routing policies