4

我有一个亚马逊的自动调节组,产生服务器实例。亚马逊ecs代理总是重新启动

我的AWS-CLI配置是:

[default] 
s3 = 
    signature_version = s3v4 
    addressing_style = path 
region = eu-central-1 

我ECS代理配置会从S3与AWS-CLI在启动时实例读取如下:

ECS_CLUSTER=cluster-mongodb 
ECS_ENGINE_AUTH_TYPE=dockercfg 
ECS_ENGINE_AUTH_DATA={"domain.com":{"auth":"bsaewfgvewgf23g9hv3","email":""}} 

可悲的是ecs-代理生成的实例始终在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 

有人见过这个? 这是否可能与搞砸安全组/ LB配置有关?

预先感谢

[编辑]中找到的解决方案:

检查,如果子网被注册到右路由表(VPC - >路由表)。在我的情况下,这是错误的。

此外,我的实例需要由Autoscaling组的启动配置分配的公有IP,但这对我的设置很特殊。

回答

5

该消息表明您的实例无法对ecs.eu-central-1.amazonaws.com端点执行HTTPS POST。

确保您的安全组和/或VPC配置允许出站HTTPS到您的ECS endpoint

您可以从实例确认端点连接到端点的命令行:

curl https://ecs.eu-central-1.amazonaws.com 

这应该返回类似如下的消息:

<MissingAuthenticationTokenException> 
    <Message>Missing Authentication Token</Message> 
</MissingAuthenticationTokenException> 
+0

是的,我不能从实例到达ecs.eu-central-1.amazonaws.com,我得到一个超时。尽管VPC ACL完全开放,但允许所有流量。自动调节组和实例的安全组也一样。我还能在哪里搜索? – cari

+0

您是否使用iptables/local防火墙来限制实例的传出?你能从本地实例访问https://www.google.com吗?实例本身是否有安全组?那里的出境规则是什么? –

+0

好吧,这些实例拥有公共IP,但无法访问互联网。如果我手动附加一个弹性IP到实例,他们可以。但由于实例是从自动缩放开始的,因此我需要另一个解决方案来解决这个问题。你有想法吗? – cari

0

使用NAT实例,让互联网流经你的VPC内部的私有虚拟机。