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內部的私有虛擬機。