Elastic Load Balancer awseb-e-g has zero healthy instances

amazon-web-serviceselastic-beanstalkload balancing

I have an Elastic Beanstalk (EB) set up with a running application on a PHP/Apache server. The application was running OK since many hours ago when the EB's health got subtly RED and I don't know why. No logs was available on EB > My Application > Logs > Request Logs > Full Logs (and also Last 100 Lines).

And these were the last events on my EB until its health got RED, on EB > My Application > Events:

2015-07-11 04:40:43 UTC-0300    WARN    Environment health has transitioned from YELLOW to RED
2015-07-11 04:38:41 UTC-0300    WARN    Environment health has transitioned from GREEN to YELLOW
2015-07-11 04:38:41 UTC-0300    WARN    Elastic Load Balancer awseb-e-g-AWSEBLoa-1H3WKQE404YBT has zero healthy instances.
2015-07-11 04:38:03 UTC-0300    INFO    Removed instance 'i-171a5303' from your environment. (Reason: Instance is in 'shutting-down' state)
2015-07-11 04:31:19 UTC-0300    INFO    Removed instance 'i-c0f3bdd4' from your environment. (Reason: Instance is in 'shutting-down' state)
2015-07-11 04:24:11 UTC-0300    INFO    Removed instance 'i-908daa73' from your environment. (Reason: Instance is in 'shutting-down' state)

The third event above shows that Load Balancer has zero healthy instances. Why?

Also, we often receive this via email from AWS:

Message: Launching a new EC2 instance. Status Reason: We currently do
not have sufficient m3.medium capacity in the Availability Zone you
requested (sa-east-1b). Our system will be working on provisioning
additional capacity. You can currently get m3.medium capacity by not
specifying an Availability Zone in your request or choosing
sa-east-1a, sa-east-1c. Launching EC2 instance failed.

If the problem is with the sa-east-1b zone, why didn't AWS automatically launch an instance on sa-east-1a or sa-east-1c zones, as we don't specify any Availability Zone?

We have auto-scaling set up for any Availability Zone. Our Load Balancer is set up for the Availability Zones that we want: sa-east-1a, sa-east-1b or sa-east-1c, but the option Cross-zone load balancing is NOT enabled, because we fear that it might launch instances out of São Paulo (sa-east) region – what we don't want it to do.

So, should I enable the option Cross-zone load balancing on Load Balancing for AWS to get our application up on any Availability Zones in São Paulo (sa-east) region?

Any ideas?!

Best Answer

You're ELB has to be in multiple AZ's (subnets in different availability zones), same with elastic beanstalk. My guess is that somewhere in the configuration it is only allowed to spin up instances in 1b, so it was unable to capture an instance in your specified zone.

Related Topic