AWS Route 53 Global Load Balancing: Latency, Failover & Routing Policies
AWS Route 53 global load balancing is DNS-based global traffic steering. It sends users to different regional endpoints by returning different DNS answers based on routing policies you configure. It is the foundation of multi-region architectures on AWS, enabling performance optimization, automatic resilience, and controlled traffic shifts across regions before a user connection is ever established.
Simple explanation for beginners
Here is what happens when a user visits a multi-region app built with Route 53:
- The user’s browser asks DNS: “What is the IP address for app.example.com?”
- That query reaches Route 53, which applies your routing policy (latency, geolocation, weighted, failover, etc.).
- Route 53 returns a regional record, for example the DNS name of an ALB in us-east-1 or ap-northeast-1.
- The user’s browser connects directly to that regional endpoint.
- The DNS answer is cached for the TTL duration. Until that cache expires, the user stays routed to the same regional endpoint.
Analogy: Route 53 is like a GPS navigator. When your browser asks “where is this website?”, Route 53 checks the map and says “take the Tokyo highway, it’s the fastest route from your location.” It does not drive the car. Once it gives the address, your browser connects there directly and Route 53 steps aside. The ALB at the destination is what actually handles your request.
Route 53 does not inspect requests. Once the DNS answer is returned, Route 53’s job is done. It cannot see URL paths, HTTP headers, cookies, or individual connections. For path-based or header-based routing, you need an Application Load Balancer, not Route 53.
If you are new to Route 53 itself, covering hosted zones, record types, and how DNS resolution works, start with DNS with Route 53 before diving into routing policies. For the initial setup walkthrough, see Route 53 setup. If your app uses internal DNS for private resources, see private hosted zones.
When to use Route 53 global routing
- Active-active multi-region apps: Run your full application stack in multiple AWS regions simultaneously and route each user to the nearest or fastest region.
- Disaster recovery with automatic failover: Keep a secondary region on standby and have Route 53 automatically switch traffic when your primary region fails health checks.
- Blue-green and canary deployments: Gradually shift traffic from an old environment to a new one using weighted routing. See blue-green deployments and canary deployments for how this works in practice.
- Compliance and localization: Route European users to EU infrastructure for GDPR data-residency, or serve different content by country.
- Globally distributed users needing low latency: Send each user to the AWS region with the lowest measured network latency for their location.
When not to use Route 53 for this
Route 53 is the wrong tool when you need:
- Path-based or header-based routing: Route 53 only sees DNS queries, not HTTP requests. Use an ALB for routing based on URL paths, host names, or HTTP headers.
- Per-request load balancing: Route 53 operates at DNS query time, not per-connection. Use an ALB or NLB for that.
- Instant connection-level failover: DNS TTL means failover takes seconds to minutes. AWS Global Accelerator uses Anycast IPs and routes over the AWS backbone with faster failover and no DNS TTL dependency.
- CDN caching or edge acceleration: Use CloudFront for content caching and edge delivery. CloudFront integrates with Route 53 as a DNS alias target, but the CDN features are entirely separate.
- Static global IP addresses: If your application needs a fixed IP that works globally without DNS TTL delays, use AWS Global Accelerator, which provides static Anycast IPs.
The most common misuse of Route 53: Expecting it to replace an ALB for request-level routing. Route 53 cannot route /api/* to one backend and /static/* to another. It has no visibility into the request after the DNS answer is returned. This is not a limitation of Route 53; it is simply a different tool for a different layer of the stack.
How Route 53 global routing works
Analogy: think of it like a hotel concierge. You walk in and ask “which restaurant do you recommend?” The concierge checks your preferences, what is nearby, and what is open, then gives you an address. You walk there yourself. The concierge does not serve the food. If the restaurant closes after you leave, the concierge cannot reroute you mid-meal — you would need to ask again once your TTL expires and you re-query.
- User queries DNS. A user’s device asks their DNS resolver for app.example.com.
- Query reaches Route 53. The resolver forwards the query to Route 53, the authoritative DNS for your domain.
- Route 53 evaluates routing policy. Based on your configuration, Route 53 applies latency, geolocation, weighted, or failover logic to select a record.
- Route 53 checks endpoint health. If
EvaluateTargetHealthis enabled, Route 53 skips records pointing to unhealthy endpoints before responding. - Route 53 returns a regional record. Route 53 returns the DNS name or IP of the selected regional endpoint, usually an ALB alias.
- Client caches the answer. The DNS answer is cached for the TTL duration. The user’s browser will not re-query DNS until the cache expires.
- Client connects to the regional endpoint. The user’s connection goes directly to the selected region. Route 53 is no longer involved.
- Failover is TTL-bound. If the selected region goes down, users with cached DNS responses will not see the failover until their TTL runs out.
Route 53 routing policies that matter for global traffic steering
Latency-based routing
Sends each user to the AWS region with the lowest network latency for their location. Route 53 maintains latency measurements between AWS regions and client IP ranges and uses these to pick the fastest region for each DNS query.
Best for: Active-active multi-region apps where every region runs the full application and you want each user to get the fastest experience automatically.
Watch out for: Latency routing is based on AWS’s historical network measurements, not a live measurement of your specific application’s response time. A region with low network latency but a slow app tier can still win the routing decision.
Example: two latency records for two regions. Route 53 returns the lower-latency one for each user.
{
"Changes": [
{
"Action": "CREATE",
"ResourceRecordSet": {
"Name": "api.example.com",
"Type": "A",
"SetIdentifier": "us-east-1",
"Region": "us-east-1",
"AliasTarget": {
"HostedZoneId": "Z35SXDOTRQ7X7K",
"DNSName": "alb-us-east-1.us-east-1.elb.amazonaws.com",
"EvaluateTargetHealth": true
}
}
},
{
"Action": "CREATE",
"ResourceRecordSet": {
"Name": "api.example.com",
"Type": "A",
"SetIdentifier": "ap-northeast-1",
"Region": "ap-northeast-1",
"AliasTarget": {
"HostedZoneId": "Z14GRHDCWA56QT",
"DNSName": "alb-ap-northeast-1.ap-northeast-1.elb.amazonaws.com",
"EvaluateTargetHealth": true
}
}
}
]
}Geolocation routing
Routes traffic to different endpoints based on the geographic origin of the DNS query, by continent, country, or US state. Unlike latency routing (which optimizes for speed), geolocation routing optimizes for compliance, content localization, or regulatory requirements.
Best for: GDPR data-residency requirements, country-specific content or pricing, or legal obligations to serve users from infrastructure in a specific jurisdiction.
Always create a default geolocation record. Without it, DNS queries from countries with no matching rule return NXDOMAIN, which users see as “site not found.” Add a catch-all default record to handle unmatched locations. If you’re debugging unexpected NXDOMAIN responses, see DNS resolution problems.
Weighted routing
Splits DNS traffic between multiple endpoints using numeric weights. Records with weights 80 and 20 will receive roughly 80% and 20% of queries respectively. This is the standard approach for implementing DNS-level traffic shifting during blue-green deployments or canary rollouts.
Best for: Gradually shifting traffic from an old deployment to a new one. Start at 5% to the new version, monitor error rates and latency, then ramp to 20%, 50%, 100%.
DNS caching limits precision. Weighted routing is statistical, not deterministic. Because DNS responses are cached by resolvers and clients, the actual traffic split may lag your configured weights at any given moment. For precise, real-time per-request traffic splitting within a region, use ALB weighted target groups instead of or alongside Route 53 weighted routing.
Failover routing
Creates an active-passive setup across two regions. One record is designated primary; another is secondary. Route 53 monitors the primary using health checks. When health checks fail, Route 53 automatically returns the secondary record to new DNS queries, with no manual intervention required.
Best for: Disaster recovery scenarios where you want automatic regional failover. The secondary can be a full active standby or a minimal fallback. See disaster recovery strategies for how to design the secondary region and choose the right DR pattern.
Failover is not instant. After Route 53 detects a failure and updates DNS, clients with cached responses keep hitting the failed primary until their TTL expires. With a 30-second health check interval and a 60-second TTL, plan for 60 to 120 seconds between failure and full failover visibility for most clients. Some resolvers ignore TTL values entirely and may cache longer.
# Create a primary failover record pointing to the us-east-1 ALB
aws route53 change-resource-record-sets \
--hosted-zone-id Z1234567890ABCDE \
--change-batch '{
"Changes": [{
"Action": "CREATE",
"ResourceRecordSet": {
"Name": "app.example.com",
"Type": "A",
"SetIdentifier": "primary",
"Failover": "PRIMARY",
"HealthCheckId": "abc12345-1234-1234-1234-abc123456789",
"AliasTarget": {
"HostedZoneId": "Z35SXDOTRQ7X7K",
"DNSName": "alb.us-east-1.elb.amazonaws.com",
"EvaluateTargetHealth": true
}
}
}]
}'Other Route 53 routing policies to know about
These policies exist but are less central to global traffic steering for most applications.
- Geoproximity routing: Routes based on geographic distance to your endpoints, with an optional bias you can adjust to expand or shrink the geographic region each endpoint serves. Requires Route 53 Traffic Flow.
- IP-based routing: Routes traffic based on the CIDR block of the originating IP address. Useful when you know the IP ranges of specific clients or ISPs and want to route them explicitly.
- Multivalue answer routing: Returns multiple healthy records in response to a DNS query (up to 8). Clients pick one at random. It is not a replacement for a load balancer, but provides basic DNS-level redundancy for simple use cases.
Route 53 vs ALB vs AWS Global Accelerator
These three services are commonly confused. They solve different problems at different layers.
| Route 53 | ALB | Global Accelerator | |
|---|---|---|---|
| Routing layer | DNS (global) | HTTP/TCP (regional) | Network/TCP (global edge) |
| Best use case | Multi-region DNS routing | Regional request load balancing | Global edge entry point, faster failover |
| Failover speed | Seconds to minutes (TTL-bound) | Near-instant within region | Near-instant (Anycast, no DNS TTL) |
| DNS caching affects behavior | Yes | No | No |
| Path-based routing | No | Yes | No |
| Edge performance improvement | No | No | Yes (AWS global network) |
| Static global IP | No | No | Yes (Anycast IPs) |
In practice, these are often used together: Route 53 routes users to the nearest region, an ALB in that region handles path-based routing and forwards to backend services. Global Accelerator can replace Route 53 in this chain when you need faster failover or consistent performance regardless of DNS caching behavior.
Common architecture patterns
Active-active multi-region with latency routing
Deploy your full application stack in two or more AWS regions, for example us-east-1 and ap-northeast-1. Create latency-based Route 53 records pointing to the ALB in each region. Route 53 automatically sends each user to the region with the lowest latency for their location. Both regions handle live traffic simultaneously, with no idle standby. See multi-region architectures for a full breakdown of this pattern, including data replication and consistency considerations.
Active-passive disaster recovery with failover routing
Run your application in a primary region (e.g., us-east-1) and maintain a standby deployment in a secondary region (e.g., us-west-2). Configure Route 53 failover routing with health checks on the primary record. Under normal conditions, all traffic goes to the primary. If health checks fail, Route 53 automatically switches DNS to the secondary. This pattern maps directly to the Warm Standby and Pilot Light patterns in disaster recovery strategies. For guidance on overall availability design, see designing highly available systems.
Blue-green rollout with weighted routing
Keep your current production environment (“blue”) running and deploy the new version (“green”) in parallel. Create two Route 53 weighted records for the same domain, initially weight 100 on blue and 0 on green. Gradually shift traffic: 5% to green, watch error rates, then 20%, 50%, 100%. Once stable, decommission blue. See blue-green deployments for the full process. For finer-grained canary control at the per-request level, combine Route 53 weighted routing with ALB weighted target groups.
A good rule of thumb: Use Route 53 to decide which region a user goes to. Use an ALB to decide which service within that region handles the request. These two decisions are independent and operate at different layers. Route 53 is the highway on-ramp; the ALB is the traffic light at the destination.
Health checks and TTL: how failover actually works
Health checks
Route 53 health checks continuously probe your endpoints from multiple AWS locations. You configure the endpoint URL or IP, the protocol (HTTP/HTTPS/TCP), the check interval (10 or 30 seconds), and the failure threshold, meaning how many consecutive failures trigger a status change.
When you set EvaluateTargetHealth: true on an alias record, Route 53 inherits the health of the target resource. If the ALB the record points to has no healthy targets registered, Route 53 treats the entire record as unhealthy and excludes it from routing decisions automatically.
For complex conditions, you can use calculated health checks that aggregate multiple child health checks, for example: “treat this region as healthy only if at least 2 of 3 backend health checks are passing.”
TTL and failover speed
TTL (Time to Live) controls how long DNS resolvers and clients cache a DNS answer. The practical consequence for failover:
- High TTL (e.g., 300s): Faster DNS resolution under normal conditions, but slower failover. Clients may keep hitting a failed endpoint for up to 5 minutes.
- Low TTL (e.g., 30-60s): Clients refresh DNS quickly after a failover event, at the cost of slightly more DNS query volume.
For failover records: use TTL 30-60 seconds. For stable latency or geolocation records: TTL 60-300 seconds is a reasonable balance. Some DNS resolvers do not honor TTLs exactly; a small percentage of users may see stale responses longer than your TTL suggests.
If you are setting up Route 53 for the first time, see Route 53 setup for a step-by-step walkthrough.
Common mistakes
- Treating Route 53 like a request-level load balancer. Route 53 sees DNS queries, not HTTP requests. It cannot route based on URL paths, cookies, or headers. If you need that, use an Application Load Balancer.
- Ignoring DNS TTL during failover planning. Even after Route 53 switches to the secondary, clients with cached DNS responses will keep hitting the failed primary. Set TTL to 30-60 seconds for any failover-involved records, not the default 300.
- Missing the default geolocation record. Geolocation routing returns NXDOMAIN for locations with no matching rule, which users see as “site not found.” Always add a catch-all default record. See DNS resolution problems if you’re debugging unexpected NXDOMAIN responses.
- Assuming weighted routing is perfectly precise. DNS caching means the actual traffic split lags your configured weights. For precise, real-time traffic splitting at the request level, use ALB weighted target groups in addition to or instead of Route 53 weighted routing.
- Using Route 53 when Global Accelerator is the better fit. If you need instant failover without DNS TTL delays, consistent global latency over the AWS backbone, or a static Anycast IP address, Global Accelerator is the right tool, not Route 53.
- Not testing regional health checks before enabling failover. Health checks need time to gather data and establish a baseline. Enabling failover routing with unconfigured or untested health checks can cause premature or missed failovers.
Summary
- Route 53 global load balancing is DNS-based traffic steering that controls which regional endpoint clients connect to, not how requests are handled within a region.
- Latency routing sends each user to the AWS region with the lowest measured network latency for their location.
- Geolocation routing directs traffic by continent, country, or US state, useful for compliance and content localization. Always include a default catch-all record.
- Weighted routing splits traffic by percentage, the foundation of DNS-level blue-green and canary deployments.
- Failover routing creates automatic active-passive regional failover driven by Route 53 health checks.
- Route 53 is not a request-level load balancer; use an ALB for path-based routing and Global Accelerator for faster failover and edge routing.
- DNS TTL governs how quickly failover takes effect; use 30-60 seconds for failover records.
Frequently asked questions
Is Route 53 really a load balancer?
Not in the traditional sense. Route 53 is a DNS service that steers traffic globally by returning different DNS records to different clients. It does not proxy connections or inspect individual requests. Think of it as a smart DNS layer that directs users to regional endpoints; the actual request handling happens at those endpoints (ALBs, NLBs, etc.).
What is the difference between Route 53 and an ALB?
An ALB operates within a single AWS region at the connection/request level, inspecting HTTP headers, paths, and host names to route traffic to backend targets. Route 53 operates at the DNS level globally, returning different IP addresses to different clients based on routing policies like latency or geolocation. They solve different problems and are often used together: Route 53 routes users to the right region, then the ALB handles routing within that region.
When should I use Route 53 instead of Global Accelerator?
Use Route 53 when you want DNS-based global routing and can tolerate TTL-bound failover delays (seconds to low minutes). Use Global Accelerator when you need faster failover with no DNS TTL dependency, TCP/UDP traffic routing, or want to leverage the AWS global edge network for consistently low latency. Global Accelerator uses static Anycast IPs and routes traffic over the AWS backbone.
How does DNS TTL affect failover?
TTL (Time to Live) controls how long DNS resolvers and clients cache a DNS answer. If your failover record has a TTL of 300 seconds and your primary region goes down, clients with cached responses will keep trying the failed endpoint for up to 5 minutes after Route 53 switches to the secondary. Set TTL to 30-60 seconds for records involved in failover.
Can I use Route 53 for canary or blue-green deployments?
Yes, using weighted routing. Create two records for the same domain with different weights, for example weight 95 for the stable environment and weight 5 for the new release. Route 53 returns the new environment record for roughly 5% of DNS queries. This is a coarse-grained split; for precise per-request traffic splitting within a region, use ALB weighted target groups alongside or instead of Route 53 weighted routing.