【问题标题】:AWS CodeDeploy is impossible to deploy across multiple Availability Zones at the same time?AWS CodeDeploy 不可能同时跨多个可用区部署?
【发布时间】:2018-06-19 05:11:56
【问题描述】:

在截图下方,似乎只在一个可用区成功。

我检查了一个失败的实例的 codedeploy 日志,我发现有一个错误,我认为它被识别为一个本地实例。

2018-01-10 04:40:22 INFO [codedeploy-agent(2696)]:本地配置文件不存在或不可读

2018-01-10 04:40:43 错误 [codedeploy-agent(2696)]: CodeDeploy Instance Agent Service: CodeDeploy Instance Agent Service: error during start or run: InstanceMetadata::InstanceMetadataError - 不是 EC2 实例和区域未在环境变量 AWS_REGION 中提供。请使用环境变量 AWS_REGION 指定您的区域......

我为此问题搜索了大约三天,但 AWS 文档中没有提及。在生产环境中,我计划使用两个附加到 Auto Scaling 组的可用区。我想知道我是否忽略了除 CodeDeploy 之外的其他事情......我应该检查什么?提前谢谢你。

[更新] 我使用 ASG 和 ASG Config 屏幕截图进行更新。没有什么特别的,它是 vanila 和默认过程。我从 AWS 支持中心等待了 5 天,但仍在等待回复。

Auto Scaling 组 -----

Auto Scaling 组启动配置 -----

【问题讨论】:

  • 为什么不将 ELB 附加到在两个不同实例中添加实例的 codedeploy 配置实例?
  • @KushVyas 我已经用 ELB + ASG 组合进行了测试,但是如果可用区不同,它仍然无法部署。为了简化问题,我已经配置了情况。
  • 你可以尝试登录到那个 ec2 并发布命令的输出curl http://169.254.169.254/latest/meta-data
  • @Ravi 该实例似乎有问题。当我输入 169.254.169.254 时,我无法连接。另一方面,在成功部署的实例上可以正确看到元数据。这似乎是问题所在。我的 ASG 启动配置的 AMI 有问题吗?我的 AMI 在 ap-southeast-1a 中,因此 ap-southeast-1b 中的实例似乎无法部署。
  • @hyunsu AMI 因地区而异,而不是 AZ,所以只要您使用相同的 AMI,它应该可以工作。

标签: amazon-web-services aws-code-deploy


【解决方案1】:

最后,我发现了为什么 codedeploy 在 Windows 2016 上跨多个可用区失败。此外,这个问题似乎是 Windows 2016 EC2 本身的问题,而不是 ASG 或 codedeploy(我没有在 linux 上测试过)。我找到了2个解决方案,

  1. 通过单击 Ec2LaunchSettings 中的“使用 Syspre 关闭”按钮安全关闭服务器。然后您就可以照常创建 AMI。

  1. 手动运行 C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\InitializeInstance.ps1 -Schedule 脚本。参数“-Schedule”是必需的。然后您就可以照常创建 AMI。

第一种方法是一种直观且方便的方式(GUI),第二种方法适用于自动化 powershell 脚本。我已经确认这两种方法都能成功部署到多个可用区。 codedeployagent记录的日志没有错误。

更具体地说,codedeployagent 在部署时留下了各种日志,我发现代理似乎使用了来自 169.254.169.254 的元信息。当我失败时,日志显示“您是本地实例。”。部署失败可能是因为实例无法获取元信息。在下面的文档中,我得到了很多帮助,并且列出了我所有的解决方案。

https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2launch.html

尤其是在文档中

.....在 Windows PowerShell 中,运行以下命令,以便系统安排脚本作为 Windows 计划任务运行。该脚本在下次启动期间运行一次,然后禁止这些任务再次运行....

C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\InitializeInstance.ps1 -Schedule

【讨论】:

  • 谢谢你们所有的cmets。
猜你喜欢
  • 2020-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-27
  • 2014-07-23
  • 1970-01-01
  • 2017-07-23
相关资源
最近更新 更多