4

我正在尝试为我的 PHP Web 应用程序设置 AWS CodeDeploy。我在 AWS 控制台上创建了一个 CodeDeploy 应用程序和一个部署组。我已经使用 appspec yaml 文件创建了必要的修订包。修订包存储在 Amazon S3 上。

当我单击 AWS 控制台上的“部署此修订版”按钮时,它给了我“没有主机成功”错误。我浏览了技术常见问题解答,但找不到任何答案。我该如何应对这个错误?

更新:我现在明白这个错误与最小健康主机数有关。但我仍然无法理解 AWS 如何计算主机的健康状况。

4

4 回答 4

2

基本上它的意思是“你的 ec2 实例上的 codedeploy 服务没有运行”......

于 2015-09-10T16:16:27.193 回答
1

为什么部署失败主机健康是相当简单的。如果该主机成​​功地将最后一次部署部署到该主机,则该主机是健康的。如果主机失败,则主机不健康。主机是否被跳过并且之前没有部署是未知的。

主机运行状况的其他方面会影响它们在下一次部署中的部署顺序,但这不会影响部署失败并显示“没有主机成功”。

如果主机的任何生命周期事件失败,则主机可能会导致其单独部署失败。生命周期事件可能由于等待代理响应的服务端超时或主机代理报告执行命令的错误而失败。您可以查看主机代理日志以了解主机代理报告失败的确切原因的更多详细信息。

如果您遇到服务器端超时,您应该检查主机代理是否正在运行并且能够正确轮询命令。您可能在 VPC 配置中意外限制了访问权限,或者未向实例授予适当的权限以轮询实例配置文件中的命令。

于 2015-07-16T17:28:13.437 回答
0

我自己也遇到了这个问题。我的解决方案是运行:

ntpdate-debian

如果您正在运行 centos,则类似于

 ntpdate pool.ntp.org

对我来说,时间已经过去,并且导致 codedeploy 代理出现问题。

现在,如果这不能解决您的问题。首先确保您的问题是您的 CodeDeploy 代理未注册。我以前遇到过这个问题,这是因为我的一个实例由于部署不当而处于失败状态,因此请务必仔细检查。(ELB 状态、测试等)

然后,您应该通过在 /etc/codedeploy-agent/conf/codedeployagent.yml 中将 log_aws_wire 和 verbose 设置为 true 来为您的 CodeDeploy 代理启用日志记录,然后重新启动 CodeDeploy。跟踪日志,您应该会看到问题的原因。

于 2016-02-23T23:07:58.887 回答
0

此错误消息表示您没有在部署组所针对的 EC2 实例上运行 CodeDeploy 服务。

1) 从 S3 下载最新版本的 codedeploy (选择你所在的地区)

PS> Read-S3Object -BucketName aws-codedeploy-eu-west-1 -Key latest/codedeploy-agent.msi -File c:\temp\codedeploy-agent.msi

2)安装编码部署

cmd> c:\temp\codedeploy-agent.msi /quiet /l c:\temp\host-agent-install-log.txt

3) 开始代码部署

PS> Start-Service -Name codedeployagent

AWS CodeDeploy 指南:http ://docs.aws.amazon.com/codedeploy/latest/userguide/how-to-run-agent.html#how-to-run-agent-install-windows

于 2016-02-22T22:44:15.353 回答