Elastic Beanstalk Worker sqsd在所有实例上都处于故障模式

时间:2018-06-01 19:17:01

标签: amazon-web-services amazon-sqs amazon-elastic-beanstalk

我有一个弹性的beanstalk工作者环境,在我最近的部署中已经过渡到健康状况“严重”。它给我的错误是:

  

sqsd在所有实例上都处于故障模式

如何修复此问题/获取有关此内容的更多信息?

2 个答案:

答案 0 :(得分:0)

这几乎可以肯定是因为您的最新部署未通过运行状况检查。请参阅/var/log/aws-sqsd/default.log的内容(可以通过环境的“日志”部分找到)。这将为您提供更多信息,例如:

  

服务运行状况检查URL“http://localhost/”失败,http状态代码为“500”

答案 1 :(得分:0)

sqsd is in fault mode错误可能有不同的原因,例如根据某些潜在问题,运行状况检查可能会失败,并显示http状态代码400500

要了解更多信息,可以ssh进入工作程序实例(例如,EC2管理控制台>实例>实例上的RMB>连接),然后尝试使用http://localhost/进行探测。 curl

在某些情况下,我们的工作人员环境收到了类似的sqsd is in fault mode错误,status 400。这是由于我们(Django)ALLOWED_HOSTS中的settings.py值不正确。

在另一个情况下,在尝试更新到最新的Amazon Linux平台版本之后,我们的工作环境中出现status 500类似问题。请注意,我们的worker env运行了好几个月没有任何问题,并且我们没有修改应用程序版本,也没有修改环境配置。

失败的平台更新尝试的日志(aws-sqsd/default.log)显示:

2018-10-19T09:06:52Z healthcheck-err: service healthcheck to URL "http://localhost/health/" failed with http status code "500"

之前尝试更新失败的日志显示如下:

2018-10-19T08:38:43Z message: sent to http://localhost:80

有趣的是,根据AWS docs工人甚至不应该使用健康检查网址(如果我理解正确的话……):

  

在单个实例或工作者层环境中,Elastic Beanstalk通过监视其Amazon EC2实例状态来确定实例的运行状况。在这些环境类型中,不能使用Elastic Load Balancing运行状况设置(包括HTTP运行状况检查URL)。 [我的重点]

奇怪的是,当时我们的工作环境是使用EB Web控制台配置的,部署策略是“使用附加批处理滚动”,并使用下拉菜单中的“基于运行状况的滚动更新”。

这似乎与上面的引用直接矛盾,这意味着我们的活动配置实际上是无效的(即使env已经成功运行了很长时间)。

果然,如果我现在尝试使用EB Web控制台修改环境配置中的某些内容(任何内容),我会突然收到一个从未有过的错误:

  

“无效的选项值:'运行状况'(名称空间:'aws:autoscaling:updatepolicy:rollingupdate',OptionName:'RollingUpdateType'):无法为工作层环境启用基于运行状况的滚动更新。”

此外,“基于健康状况的滚动更新”选项不再显示在“滚动更新类型”的下拉列表中(但在我尝试应用更改之前就已经存在)。