AWS Beanstalk:没有任何实例发送数据,也无法通过ssh连接到EC2。

6
我遇到了这个问题。
None of the Instances are sending data

在beanstalk上部署新版本应用时,两个版本之间唯一的区别是微小的,我很确定这不是原因。以下是我遇到的问题:

  • 无法从beanstalk控制台获取日志
  • 无法ssh到此beanstalk配置的EC2实例(尽管该实例的状态为'运行中')。
  • 上次我遇到相同的问题是在ec2.micro实例上,当我升级到ec2.small时,问题得到了解决。我认为可能是资源使用使其无响应(虽然很奇怪,因为它只是部署,甚至没有提供任何流量)。我不想再次升级而不真正理解这里发生了什么。
  • 在部署的前5分钟内,cpu的使用率模式为80% -> 60% -> 20%,然后在此之后保持在10%。

我可以获取一些服务器日志的唯一方法是从aws控制台获取系统日志,这是日志:

这是日志: https://pastebin.com/PWWjPr3b

以下是我执行ssh时看到的内容:

OpenSSH_7.4p1, LibreSSL 2.5.0
debug1: Reading configuration data /Users/okidogi/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Connecting to ec-******.eu-west-2.compute.amazonaws.com 
[35.177.76.128] port 22.
debug1: Connection established.
debug1: identity file aws-eb type 1
debug1: key_load_public: No such file or directory
debug1: identity file aws-eb-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_7.4

然后它就在那里等待着。 如果有人能帮忙解决这个问题,将不胜感激。

你正在使用哪种 Elastic Beanstalk “部署策略”配置(一次性或不可变)?如果你正在使用“一次性”方式,请尝试切换到“不可变”,保存配置,让所有更新应用。然后再次尝试部署并汇报结果。如果在实例或负载均衡器上已设置健康检查,且你的部署过程超过了一个基于时间的失败阈值,则可能会遇到误报问题,还需要进一步调查。 - dusthaines
感谢@dusthaines!一开始全都出问题了,但是在我将部署策略更改为不可变后,现在它正在工作。虽然有点奇怪,但我不确定之前为什么不起作用。 - Feng Li
1个回答

2
Feng,很高兴听到这个方法对你有帮助。然而,那个想法更像是一种诊断测试而不是长期解决方案。由于切换到Immutable对您有用,这将指向一个可能性,即您的构建过程需要比(已运行的)小型单位(如t2.microt1.micro)上可用的内存更多。通过使用Immutable策略,您可以从具有比已经消耗了运行您的应用程序的实例更多可用资源的新实例开始每次部署。
这是一个常见但难以诊断的问题,因为它根据平台和框架的不同呈现出许多不同的方式。您可以在此处阅读更多信息:https://medium.com/@deanslamajr/an-insufficient-memory-deployment-failure-d9f1cb9b5c0
我的首选方法是通过交换内存来解决这个问题,就像我在回答类似问题的答案中概述的那样:AWS EB deploying Node app: failed to run npm install 我建议尝试那里提到的.ebextensions策略,并将部署策略切换回All at once以测试是否真正解决了您的问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接