← Back to Learning Hub

DNS • Intermediate • 5 min read

GeoDNS vs Weighted vs Round-Robin DNS Routing

Three ways DNS steers traffic: plain round-robin, weighted records, and geolocation answers, what each can and cannot guarantee, and how caching limits them.

DNS can do more than map a name to a single address. By returning different answers, or the same answers in a different order, it can spread traffic across several servers and even steer users to the server nearest them. The three building blocks you will meet are plain round-robin, weighted records, and geolocation-based answers, often called GeoDNS. Each one solves a different problem, and each one is limited by the same stubborn fact: resolvers cache answers and reuse them for many clients. This guide explains what each method can and cannot guarantee, and why a location-aware propagation check legitimately shows varied results.

Round-robin: the same records in rotating order

Round-robin is the simplest form of DNS load spreading. You publish more than one A or AAAA record for the same name, and the authoritative server rotates the order it lists them on each query. Clients generally try the first address they receive, so rotating the order spreads connections across the addresses over time.

$ dig +short www.example.com A
203.0.113.10
203.0.113.11
203.0.113.12

; a moment later, the order rotates
$ dig +short www.example.com A
203.0.113.11
203.0.113.12
203.0.113.10

Round-robin is easy and costs nothing extra, but it is blunt. It knows nothing about server load, and critically it knows nothing about server health. If one of those three addresses is down, roughly a third of clients still receive it first and may hang until they time out and retry the next one. Round-robin distributes names, not load, and it is not failover.

Weighted records: biasing the distribution

Weighted DNS lets you assign a share to each answer so that traffic is split unevenly on purpose. Instead of an even rotation, the authoritative provider returns a given address for a configured percentage of queries. This is useful for sending more traffic to a larger server, for canary releases where a new backend gets a small slice first, or for gradually draining a server before maintenance.

MethodWhat it variesHealth awareTypical use
Round-robinOrder of a fixed set of recordsNoSimple, even spreading
WeightedProbability each record is returnedOnly if the provider adds checksUneven splits, canaries, draining
GeoDNSWhich record is returned, by locationOnly if the provider adds checksSending users to the nearest region

Weighting is a feature of a managed DNS platform rather than a record type you write by hand. The zone file concept is still just multiple address records; the weighting lives in the provider's answer logic. Because the choice is made per query at the authoritative server, the split you configure is only approximate once caching enters the picture, as we will see below.

GeoDNS: answers that depend on where the question came from

GeoDNS returns different records based on the geographic location of whoever asked. A visitor in Europe might receive the IP of a Frankfurt server while a visitor in North America receives a Virginia server, both asking for the same hostname. The goal is lower latency: send each user to the closest healthy region.

The hard part is that the authoritative server does not see the end user. It sees the recursive resolver that forwarded the query. If a user in Spain uses a resolver hosted in Germany, a naive GeoDNS setup will place them in Germany. The fix is EDNS Client Subnet (ECS), defined in RFC 7871, which lets the resolver pass along a truncated portion of the client's IP so the authoritative server can locate the real user rather than the resolver.

; Conceptually, the same name resolves differently by region
www.example.com.  (asked from Europe)        -> 203.0.113.50   ; Frankfurt
www.example.com.  (asked from North America) -> 198.51.100.50  ; Virginia

; With ECS, the resolver forwards the client's subnet:
; OPT PSEUDOSECTION showing edns-client-subnet 198.51.100.0/24

Why caching limits all three

Every one of these methods makes a decision at query time, but resolvers cache the answer for the length of its TTL and hand that same cached answer to every client behind them until it expires. This has concrete consequences:

  • Round-robin rotation is flattened by caching. A busy resolver may cache one order and serve it to thousands of clients, so the spread you see from one vantage point is not the spread a global audience experiences.
  • Weighted splits are statistical, not exact. A 90/10 weight applied across millions of queries trends toward 90/10, but a single resolver caching one answer can skew its own users heavily toward whichever record it happened to cache.
  • GeoDNS is only as accurate as the location signal. Without ECS, accuracy depends on resolver placement, and even with ECS the cached answer is scoped per subnet.

The single most effective lever over all of this is the TTL. A low TTL makes rotation, weighting, and geo decisions refresh often, at the cost of more queries and slightly slower first connections. A high TTL improves cache hit rates but freezes clients onto whatever answer they received. For traffic steering you want a short TTL, commonly in the range of 30 to 300 seconds, so changes take effect quickly.

Choosing the right tool

Match the method to the problem. If you simply have two equal web servers and want casual spreading, round-robin is fine and free. If you need to bias traffic, test a new backend on a small slice, or drain a node, reach for weighted records on a managed provider. If latency across regions is your concern and you run servers in several places, GeoDNS with ECS and health checks is the real answer. Many production setups combine them: GeoDNS picks the nearest region, then round-robin or weighting spreads load among the servers within that region.

Remember that none of these is a substitute for true failover. DNS steering reacts on the order of its TTL, not instantly, because old answers linger in caches. For fast recovery you pair short TTLs with provider health checks that pull an unhealthy address out of the rotation, or you put a load balancer behind a single stable address.

Verify what your routing actually returns

Because these methods deliberately return different answers in different places, the only way to know what your audience really sees is to look from many locations at once. Run your hostname through the Valla DNS propagation checker to see the addresses returned across regions, confirm that a weighted or geo setup is steering the way you intended, and watch that a TTL change has taken hold everywhere. Pair this with our guides on DNS TTL strategy and on why a checker shows different IPs by location to interpret the results with confidence.

Troubleshooting box

If results look inconsistent, compare authoritative nameservers first, then recursive resolvers by region. Capture snapshots every 10 minutes for deterministic incident timelines.

Try VallaDNS free →