本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
疑難排解 Amazon ECS 中的服務負載平衡器
Amazon ECS 服務可在 Elastic Load Balancing 負載平衡器註冊任務。負載平衡器組態錯誤是常見的任務停止原因。如果您的停止任務是服務使用負載平衡器所啟動,請考慮以下可能的原因。
- Amazon ECS 服務連結角色不存在
-
Amazon ECS 服務連結的角色可讓 Amazon ECS 服務向 Elastic Load Balancing 負載平衡器註冊容器執行個體。必須在您的帳戶中建立服務連結角色。如需詳細資訊,請參閱 使用 Amazon ECS 的服務連結角色。
- 容器實例安全性群組
-
如果您的容器映射到您容器執行個體的連接埠 80,則您的容器執行個體安全群組必須允許連接埠 80 傳入流量,以讓負載平衡器的運作狀態檢查通過。
- 未針對所有可用區域設定 Elastic Load Balancing 器
-
您的負載平衡器應該設定使用一個區域中的所有可用區域,或至少是您容器執行個體所在的所有可用區域。如果服務使用負載平衡器,並在位於未設定負載平衡器使用的可用區域中的容器執行個體上啟動工作,則工作永遠不會通過健全狀況檢查。這會導致任務被殺死。
- Elastic Load Balancing 負載平衡器健康檢查設定錯誤
-
負載平衡器的運作狀態檢查參數可能太過侷限或指向不存在的資源。如果容器執行個體被判定為健康狀態不佳,就會從負載平衡器中移除該執行個體。請務必確認為您的服務負載平衡器正確設定以下參數。
- Ping 連接埠
-
負載平衡器運作狀態檢查的 Ping Port (Ping 連接埠) 值,是負載平衡器檢查判斷運作狀態是否良好之容器執行個體的連接埠。如果此連接埠設定錯誤,負載平衡器可能會從本身取消註冊您的容器執行個體。此連接埠應設定使用您處理運作狀態檢查之服務任務定義容器的
hostPort
值。 - Ping 路徑
-
這是負載平衡器健康狀態檢查的一部分。它是應用程式上的端點,可在應用程式狀態良好時重新啟動成功的狀態碼 (例如 200)。此值通常設為
index.html
,但如果您的服務不回應該請求,則運作狀態檢查會失敗。如果您的容器沒有index.html
檔案,您可以將此設定為/
,以容器執行個體的基本 URL 為目標。 - 回應逾時
-
這是您的容器必須傳回運作狀態檢查 ping 回應的時間。如果此值低於回應所需的時間,則運作狀態檢查會失敗。
- 運作狀態檢查間隔
-
這是運作狀態檢查 ping 之間的時間。運作狀態檢查的間隔愈短,您的容器執行個體就愈快到達 Unhealthy Threshold (狀態不良閾值)。
- 狀態不良閾值
-
這是您的運作狀態檢查失敗前,您的容器執行個體視為運作狀態不良的次數。如果您的狀況不良臨界值為 2,且健康狀態檢查間隔為 30 秒,則您的工作有 60 秒的時間來回應健康狀態檢查 ping,然後再將其假定為不健康狀態。您可以提高運作狀態不良閾值或運作狀態檢查間隔,讓您的任務有更多的時間回應。
- 無法更新服務
服務名稱
:工作定義中的負載平衡器容器名稱或連接埠已變更 -
如果您的服務使用負載平衡器,您可以使用 AWS CLI 或 SDK 來修改負載平衡器組態。如需如何修改組態的相關資訊,請參閱 Amazon 彈性容器服務 API 參考UpdateService中的。如果您為服務更新任務定義,則在負載平衡器組態中指定的容器名稱和容器連接埠必須保留在任務定義中。
- 您已達到可同時執行的工作數目上限。
-
若為新帳戶,您的配額可能低於服務配額。您可以在 Service Quotas 主控台檢視您的帳戶的服務配額。若要請求提高配額,請參閱《Service Quotas 使用者指南》中的請求提高配額。