dnswizdocs

Pools & members

A pool is a named group of endpoints with a selection method. Records reference pools; the engine picks the answer at query time based on the pool’s method, member priorities, and live health.

This is the GSLB primitive that powers POOL, GEO, and CANARY records.

Anatomy

Pool  (name, selection method)
  └─ Members  (weight, priority, enabled)
       └─ Endpoint  (what to health-check + the IP to return)
            └─ Health status  (up / down)

Selection methods

Weighted

Distribute traffic across healthy members proportional to weight. Member with weight 100 gets twice the traffic of a member with weight 50.

Active-passive

Always serve the lowest-priority healthy member. Lower number = higher priority. Ties broken by member id.

Round-robin

Each consecutive query gets the next healthy member in rotation.

Member weight + priority

Both fields live on the membership, not on the endpoint, so the same endpoint can carry a different weight and priority in each pool it belongs to.

FieldRangeUsed byDefault
weight1-10000weighted100
priority1-1000active-passive100
enabledboolall selection methodstrue

enabled = false removes a member from selection without deleting it, useful for draining for a deploy.

Health monitors

Default behavior (when an endpoint has no health_monitor_id): 30 s interval, 5 s timeout, 2 successive passes to mark up, 3 successive fails to mark down, expected status 200 for HTTP.

Create a named monitor at Load balancing → Health checks to override the defaults across many endpoints in one place. Endpoints that reference it inherit the policy; changes flow live to all of them.

Attaching to records

A pool isn’t visible in DNS until a record references it. Three record types do:

See Record types for the exact JSON shapes.

When a pool has zero healthy members

The record returns NODATA (NOERROR with no answer section). DNS doesn’t have a “service unavailable” rcode at the record level, NODATA is the right semantic and is what your TLS load balancer / SDK should retry against another resolver.

This is also surfaced on the dashboard as “zone has a pool with 0 healthy members”, the per-zone health attribution depends on this signal.

Common questions

Can a pool be empty? Yes, but it’s effectively a NODATA-only record. The pool exists; no member to return. You’ll see this during initial setup before adding endpoints.

Can one endpoint be in multiple pools? Yes. The same endpoint can be a member of many pools, carrying a different weight in each, that’s the most common setup.

Does pool selection get cached? No. Every query is evaluated against the current health and member state. When a health check flips a member, the change reaches the DNS edge within about a second.