![AWS CodeDeploy 到第二个子网失败](https://linux22.com/image/731848/AWS%20CodeDeploy%20%E5%88%B0%E7%AC%AC%E4%BA%8C%E4%B8%AA%E5%AD%90%E7%BD%91%E5%A4%B1%E8%B4%A5.png)
最近我在使用 CodeDeploy 和 EC2 实例时遇到了一些问题。我有一个带有两个公共子网的 VPC(VPC:10.0.0.0/16,子网 1:10.0.0.0/24,子网 2:10.0.1.0/24),两个子网都分配了一个互联网网关。我使用正确的角色将 EC2 实例部署到它们两个。但我遇到的问题是,当使用 CodeDeploy 部署到第一个子网(10.0.0.0/24)中的实例时,它可以一直正常工作,但是当我对第二个子网中的实例执行同样的事情时,它仍然卡在待处理状态,没有完成任何步骤,然后超时。两个子网的配置似乎相同,但我不知道为什么 CodeDeploy 可以与第一个子网一起使用,而不能与第二个子网一起使用。
你知道吗?我可以检查什么?失败的原因明显吗?
答案1
从您的描述来看没有什么明显的问题,因此只需检查以下几点:
- 两个 EC2 实例是否注册在同一个部署组?
- 是个CodeDeploy 代理正在第二个实例上运行?
- 他们都在同一个安全组?
- 它们都是从相同的 AMI使用相同的自动化脚本? 例如通过 AutoScaling Launch Config?(这是为了确保两个 EC2 100% 相同)
- 如果你创建另一个例子在第一个子网中- 部署到那里可以吗?(这是为了确定是否任何第二次部署失败或由子网配置导致)
- 什么部署类型你使用什么?也许第一次部署没有成功完成,所以第二次部署永远不会启动。你可以尝试一次全部在所有实例上同时启动的部署?
要么实例不相同,要么子网具有不同的配置,要么安全设置不相同,或者它们之间存在其他差异。
更新:或者您的 AMI 具有针对特定可用区或子网的内置配置。AMI 应该自动配置启动时从 DHCP 获取。它们不应硬编码任何与网络相关的设置,这样它们就可以在不同的子网和 AZ 中使用。
希望有帮助:)