amazon-ecs-agent 总是重启
amazon-ecs-agent is always restarting
我在亚马逊上有一个自动缩放组,它生成服务器实例。
我的 aws-cli 配置是:
[default]
s3 =
signature_version = s3v4
addressing_style = path
region = eu-central-1
我的 ecs-agent 配置在实例启动时使用 aws-cli 从 s3 读取,如下所示:
ECS_CLUSTER=cluster-mongodb
ECS_ENGINE_AUTH_TYPE=dockercfg
ECS_ENGINE_AUTH_DATA={"domain.com":{"auth":"bsaewfgvewgf23g9hv3","email":""}}
遗憾的是,派生实例上的 ecs-agent 总是在 10 秒后重新启动,而不是注册到集群 "cluster-mongodb"。
错误日志在这里:
2016-02-05T14:40:47Z [INFO] Starting Agent: Amazon ECS Agent - v1.7.1 (007985c)
2016-02-05T14:40:47Z [INFO] Loading configuration
2016-02-05T14:40:47Z [INFO] Checkpointing is enabled. Attempting to load state
2016-02-05T14:40:47Z [INFO] Loading state! module="statemanager"
2016-02-05T14:40:47Z [INFO] Detected Docker versions [1.17 1.18 1.19 1.20]
2016-02-05T14:40:47Z [INFO] Registering Instance with ECS
2016-02-05T14:41:07Z [ERROR] Could not register module="api client" err="RequestError: send request failed
caused by: Post https://ecs.eu-central-1.amazonaws.com/: net/http: request canceled while waiting for connection"
2016-02-05T14:41:07Z [ERROR] Error registering: RequestError: send request failed
caused by: Post https://ecs.eu-central-1.amazonaws.com/: net/http: request canceled while waiting for connection
有人以前看过这个吗?
这可能与安全 groups/LB 配置混乱有关吗?
提前致谢
[编辑] 找到解决方案:
检查子网是否注册到正确的路由 table(vpc -> 路由 tables)。就我而言,这是错误的。
此外,我的实例需要一个由 Autoscaling 组的启动配置分配的 public IP,但这对我的设置来说是特殊的。
该消息表明您的实例无法对 ecs.eu-central-1.amazonaws.com
端点执行 HTTPS POST。
确保您的安全组 and/or VPC 配置允许出站 HTTPS 到您的 ECS endpoint。
您可以通过命令行确认从实例到端点的端点连接:
curl https://ecs.eu-central-1.amazonaws.com
那应该return 一条类似如下的消息:
<MissingAuthenticationTokenException>
<Message>Missing Authentication Token</Message>
</MissingAuthenticationTokenException>
使用 NAT 实例并让 Internet 流经您 VPC 内的私有 VM。
实际上,ecs 代理需要互联网访问权限才能连接到 ecs 端点,即 https://ecs.eu-central-1.amazonaws.com。
ECS 实例有公共 IP 或者它们正在使用 NAT instance/Gateway 进行 public 访问。
有关详细信息,请参阅 link https://forums.aws.amazon.com/message.jspa?messageID=781868
我在亚马逊上有一个自动缩放组,它生成服务器实例。
我的 aws-cli 配置是:
[default]
s3 =
signature_version = s3v4
addressing_style = path
region = eu-central-1
我的 ecs-agent 配置在实例启动时使用 aws-cli 从 s3 读取,如下所示:
ECS_CLUSTER=cluster-mongodb
ECS_ENGINE_AUTH_TYPE=dockercfg
ECS_ENGINE_AUTH_DATA={"domain.com":{"auth":"bsaewfgvewgf23g9hv3","email":""}}
遗憾的是,派生实例上的 ecs-agent 总是在 10 秒后重新启动,而不是注册到集群 "cluster-mongodb"。
错误日志在这里:
2016-02-05T14:40:47Z [INFO] Starting Agent: Amazon ECS Agent - v1.7.1 (007985c)
2016-02-05T14:40:47Z [INFO] Loading configuration
2016-02-05T14:40:47Z [INFO] Checkpointing is enabled. Attempting to load state
2016-02-05T14:40:47Z [INFO] Loading state! module="statemanager"
2016-02-05T14:40:47Z [INFO] Detected Docker versions [1.17 1.18 1.19 1.20]
2016-02-05T14:40:47Z [INFO] Registering Instance with ECS
2016-02-05T14:41:07Z [ERROR] Could not register module="api client" err="RequestError: send request failed
caused by: Post https://ecs.eu-central-1.amazonaws.com/: net/http: request canceled while waiting for connection"
2016-02-05T14:41:07Z [ERROR] Error registering: RequestError: send request failed
caused by: Post https://ecs.eu-central-1.amazonaws.com/: net/http: request canceled while waiting for connection
有人以前看过这个吗? 这可能与安全 groups/LB 配置混乱有关吗?
提前致谢
[编辑] 找到解决方案:
检查子网是否注册到正确的路由 table(vpc -> 路由 tables)。就我而言,这是错误的。
此外,我的实例需要一个由 Autoscaling 组的启动配置分配的 public IP,但这对我的设置来说是特殊的。
该消息表明您的实例无法对 ecs.eu-central-1.amazonaws.com
端点执行 HTTPS POST。
确保您的安全组 and/or VPC 配置允许出站 HTTPS 到您的 ECS endpoint。
您可以通过命令行确认从实例到端点的端点连接:
curl https://ecs.eu-central-1.amazonaws.com
那应该return 一条类似如下的消息:
<MissingAuthenticationTokenException>
<Message>Missing Authentication Token</Message>
</MissingAuthenticationTokenException>
使用 NAT 实例并让 Internet 流经您 VPC 内的私有 VM。
实际上,ecs 代理需要互联网访问权限才能连接到 ecs 端点,即 https://ecs.eu-central-1.amazonaws.com。
ECS 实例有公共 IP 或者它们正在使用 NAT instance/Gateway 进行 public 访问。
有关详细信息,请参阅 link https://forums.aws.amazon.com/message.jspa?messageID=781868