我在 PHP/Apache 服务器上设置了一个 Elastic Beanstalk (EB),并运行了一个应用程序。几个小时前,该应用程序运行正常,但 EB 的健康状况突然出现轻微的红色,我不知道原因。没有可用的日志EB > 我的应用程序 > 日志 > 请求日志 > 完整日志(以及最后 100 行)。
这些就是我的 EB 上发生的最后事件,直到它的健康状况变为红色,EB > 我的申请 > 活动:
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)
上面的第三个事件表明负载均衡器没有健康实例。为什么?
此外,我们经常收到来自 AWS 的电子邮件:
消息:启动新的 EC2 实例。状态原因:您请求的可用区 (sa-east-1b) 中目前没有足够的 m3.medium 容量。我们的系统将致力于配置额外的容量。您目前可以通过不在请求中指定可用区或选择 sa-east-1a、sa-east-1c 来获取 m3.medium 容量。启动 EC2 实例失败。
如果问题出在sa-东-1b区域,为什么 AWS 没有自动启动实例sa-东-1a或者sa-东-1c区域,因为我们没有指定任何可用区域?
我们为任何可用区设置了自动扩展。我们的负载均衡器针对我们想要的可用区进行设置:sa-东-1a,sa-东-1b或者sa-东-1c,但选项跨区域负载均衡尚未启用,因为我们担心它可能会启动圣保罗 (sa-east) 地区以外的实例 - 这是我们不希望它做的。
那么,我应该启用该选项吗?跨区域负载均衡在 AWS 的负载平衡上让我们的应用程序在圣保罗 (sa-east) 地区的任何可用区域上运行?
有任何想法吗?!
答案1
您的 ELB 必须位于多个 AZ(不同可用区域中的子网),Elastic beantalk 也是如此。我猜在配置中的某个地方,它只允许在1b,因此无法捕获您指定区域中的实例。
答案2
您可以使用以下方式更改 ELB 和 EC2 实例可用区Elastic Beanstalk Web 控制台。
打开你的 EB应用程序配置,并更改扩展(适用于经典环境)或私有云平台(适用于 VPC 环境)。
看看我的回答这里。