Amazon-Ecs
ECS容器如何設置固定私有IP?
我有一個名為 的任務定義
kafka-zookeeper
,它有一個 Apache Kafka 代理和一個 Zookeeper 節點。這些容器需要相互通信(這很容易)以及與其他 kafka-zookeeper 任務中的 kafka 和 zookeeper 容器通信,這是我不知道該怎麼做的。基本上,我需要這個:
------------------------ ___________________ | ___________________ | ___________________ | Task1 | | | Task2 | | | Task2 | |(kafka-zookeeper)| | |(kafka-zookeeper)| | |(kafka-zookeeper)| | _____________ | | | _____________ | | | _____________ | | | |<------ | | | | --->| | | | | Kafka |<-------->| Kafka |<-------->| Kafka | | | |___________| | | |___________| | | |___________| | | ^ | | ^ | | ^ | | | | | | | | | | | _____v_______ | | ______v______ | | ______v______ | | | | | | | | | | | | | | | Zookeeper |<-------->| Zookeeper |<-------->| Zookeeper | | | |___________|<------ | |___________| | --->|___________| | |_________________| | |_________________| | |_________________| | | ------------------------
但我不知道如何設置任務之間的通信,因為任務的私有 IP 是在啟動後確定的。此外,如果一項任務由於某種原因失敗,則在其位置創建另一個任務時,IP 將有所不同。我該如何處理?
我還認為值得一提的是,zookeeper 和 kafka 通過包含其他實例 IP 的環境變數了解其他實例。
我也無法為容器提供主機名,因為我使用的是
awsvpc
網路模式。提前致謝!
我發現使用
awsvpc
網路模式無法做到這一點。我發現完成這項工作的方法是遵循這篇文章,它使用一個 Lambda 函式,每次啟動新任務時都會更新 Route53 記錄。我在這裡做了一個java實現。