I'm using health checks in Amazon Route 53 for my alias record that points to an Application Load Balancer with multiple target groups. Why isn't my alias record marked as healthy?
When you set the Evaluate Target Health to Yes for an alias record, Route 53 evaluates the health of the resource specified by the Alias Target value. For an Application Load Balancer, Route 53 considers the health checks associated with the target groups behind the load balancer.
When all the target groups in an Application Load Balancer are healthy, Route 53 marks the alias record as healthy. If a target group contains at least one healthy instance, the target group health check passes. Route 53 then returns records according to your routing policy. For example, if you use latency-based routing, Route 53 returns the record that is least latent from your DNS client or resolver's location.
If any of the target groups in an Application Load Balancer are unhealthy, the alias record fails the Route 53 health check. Route 53 then returns one of the healthy records based on your routing policy. For example, if you use latency-based routing, Route 53 returns the healthy record that is least latent from your DNS client or resolver's location, instead of unhealthy records that are less latent.
Note: If all the target groups behind a load balancer are empty (no instances), then Route 53 also considers the record unhealthy.
Query your Application Load Balancer's domain name using your preferred method, such as dig or nslookup. Note the output from your query.
If Route 53 returns another record besides the Application Load Balancer's alias record, check the target groups behind the load balancer:
- If all the instances in a target group are unhealthy, Route 53 considers the record unhealthy. See Health Checks for Your Target Group for more information on how to perform health checks in the Elastic Load Balancing console, how to modify health check settings, and reason codes for health checks.
- If all the target groups behind a load balancer are empty (with no instances in them), Route 53 also considers the record unhealthy. See Register Targets with Your Target Group to add instances to your target group.
This table shows an example Route 53 configuration for the domain example.com. The example client/resolver is located in the us-east-1 region. The example Application Load Balancer contains 2 target groups, TargetGroup1 and TargetGroup2, each with 2 instances. The example configuration uses latency-based routing. There is an alias record to an Application Load Balancer and a standard A record:
|Name||Type||Value||Evaluate Target Health||Availability Zone|
Route 53 returns the Application Load Balancer alias record when:
- TargetGroup1 is healthy (all instances healthy), and TargetGroup2 is healthy (all instances healthy)
- TargetGroup1 is healthy, and TargetGroup2 is empty (no instances have been added to the group)
- TargetGroup1 is healthy, and TargetGroup2 is healthy (1 instance healthy, 1 instance unhealthy)
- TargetGroup1 is healthy (1 instance healthy, 1 instance unhealthy), and TargetGroup2 is healthy (1 instance healthy, 1 instance unhealthy)
Route 53 returns the other A record when:
- Either TargetGroup1 or TargetGroup2 is unhealthy
- TargetGroup1 is healthy, TargetGroup2 is unhealthy, and an additional target group, TargetGroup3, is empty (no instances)