Question: Why is my alias record pointing to an Application Load Balancer marked as unhealthy when I’m using “Evaluate Target Health”?

I'm using health checks in Amazon Route 53 for my alias record that points to an Application Load Balancer with multiple target groups. However, my alias record is marked as unhealthy.

Short descriptionWhen you set 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, then the target group health check passes. Route 53 then returns records according to your routing policy. For example, if you use latency-based routing, then 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, then 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, then Route 53 returns the healthy record that is least latent from your DNS client or resolver's location.Note: If all the target groups behind a load balancer are empty (no instances), then Route 53 also considers the record unhealthy.

ResolutionQuery 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. For more information on how to perform health checks in the Elastic Load Balancing console, see Health checks for your target groups.If all the target groups behind a load balancer are empty (with no instances in them), then Route 53 also considers the record unhealthy. To add instances to your target group, see Register targets with your target group.Troubleshooting exampleThe following 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's an alias record to an Application Load Balancer and a standard A record:NameTypeValueEvaluate Target HealthAvailability Zoneexample.comAALIAS ALB-XXXXXX.us-east-1.elb.amazonaws.comYesus-east-1example.comA198.51.100.1-us-west-2Route 53 returns the Application Load Balancer alias record in the following cases: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 in the following cases:Either TargetGroup1 or TargetGroup2 is unhealthyTargetGroup1 is healthy, TargetGroup2 is unhealthy, and an additional target group, TargetGroup3, is empty (no instances)

Related informationWhy can't I select my preferred alias target when creating a Route 53 alias resource record set?How health checks work in simple Amazon Route 53 configurationsHow health checks work in complex Amazon Route 53 configurations