【问题标题】:amazon-ecs-agent is always restartingamazon-ecs-agent 总是重启
【发布时间】:2016-05-15 14:22:49
【问题描述】:

我在亚马逊上有一个自动缩放组,它生成服务器实例。

我的 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

有人看过这个吗? 这可能与混乱的安全组/LB 配置有关吗?

提前致谢

[EDIT] 找到了解决方案:

检查子网是否注册到正确的路由表(vpc -> 路由表)。就我而言,这是错误的。

此外,我的实例需要一个由 Autoscaling 组的启动配置分配的公共 IP,但这对我的设置来说是特殊的。

【问题讨论】:

    标签: amazon-web-services amazon-s3 amazon-ec2 aws-cli amazon-ecs


    【解决方案1】:

    该消息表明您的实例无法对 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>
    

    【讨论】:

    • 是的,我无法从实例访问 ecs.eu-central-1.amazonaws.com,我遇到了超时。 VPC ACL 完全开放,允许所有流量。自动伸缩组和实例的安全组也是如此。我还能在哪里搜索?
    • 您是否使用 iptables/local 防火墙来限制从实例传出?你可以从本地实例访问google.com 吗?实例本身是否有安全组?那里的出站规则是什么?
    • 好吧,实例有一个公共 IP,但无法访问互联网。如果我手动将弹性 IP 附加到实例,他们可以。但由于实例是从自动缩放开始的,我需要另一个解决方案来解决这个问题。你有什么想法吗?
    • 找到了:子网没有注册到正确的路由表(vpc -> 路由表)
    • 遇到同样的问题,我意识到我的安全组上打开了 HTTP 而不是 HTTPS
    【解决方案2】:

    使用 NAT 实例,让互联网流经您的 VPC 中的私有 VM。

    【讨论】:

      【解决方案3】:

      实际上,ecs 代理需要 Internet 访问才能连接到 ecs 端点,即https://ecs.eu-central-1.amazonaws.com

      ECS 实例具有公共 IP,或者它们正在使用 NAT 实例/网关进行公共访问。

      查看链接https://forums.aws.amazon.com/message.jspa?messageID=781868了解更多详情

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-02-11
        • 2018-12-13
        • 1970-01-01
        • 1970-01-01
        • 2019-12-21
        • 1970-01-01
        • 2018-02-23
        • 1970-01-01
        相关资源
        最近更新 更多