Elastic BeanStalk shows unhealthy; health check not working

0

I have an EBS environment with an Application Load Balancer set up. Listener set to port 80. I also set the Security Group to allow all inbound traffic from port 80 and port 8080.

When I use the Public IPv4 DNS to curl the health check endpoint, I get a response. But the EBS status is coming back as severe. The Enhanced health overview says "ELB health is failing or not available for all instances."

Looking at the Target Group, it shows Unhealthy with "Request timed out" on the Health status details.

Did I miss a step somewhere?

1 Answer
0

Hello there, I noticed that you are facing health issues with your Elastic BeanStalk environment.

The Target Group shows unhealthy because the target group failed to respond to a health check or failed a health check due to the timeout error in this case[1]. For your “HTTP 408: Request Timeout” error it means that client data was not finished sending as the idle timeout period was exhausted before sending the data through. A possible fix would be to increase the idle timeout length accordingly, as it is set 60 seconds by default [2].

Also take note that if your EC2 instances are in a Public subnet they will need Public IP’s to communicate via the internet gate way, if not Public a new environment can be setup and using a CNAME swap from the old environment to the new[3]. If you are running on a Private IP you will need a NAT gate way to communicate to the internet.

For troubleshooting instance in a severe state choose the error based on the warming issues [4].

Another item to check is that you have the required outbound rules in your Security Group that best matches your use case. Outbound rules allow your resources to respond with an Acknowledge response back to your health checks. Resources are ticked healthy if the Health check receives a response back.

For troubleshooting health warmings check the reference below [5].

Also be sure to check the health check path and verify that the path is corrected. If you have a custom health check end point you will want to set or modify the default URL to your custom one. If you have a custom path you should modify load balancer for example: "default 80 HTTP /" to "default 80 HTTP /healthCheck"

References:

[1] https://docs.aws.amazon.com/elasticloadbalancing/latest/application/target-group-health-checks.html

[2] https://docs.aws.amazon.com/elasticloadbalancing/latest/application/application-load-balancers.html#connection-idle-timeout

[3] https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.CNAMESwap.html

[4] https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-troubleshoot.html

[5] https://aws.amazon.com/premiumsupport/knowledge-center/elastic-beanstalk-yellow-warning/

Antonio
answered 2 years ago

You are not logged in. Log in to post an answer.

A good answer clearly answers the question and provides constructive feedback and encourages professional growth in the question asker.

Guidelines for Answering Questions