簡體   English   中英

AWS ECS如何將服務從一個容器調用到另一個容器

[英]AWS ECS how to call services from one container to another one

我有一個ECS集群,它有一個Auto Scaling組,有2個EC2實例。 此外,我有3個服務,每個服務都有自己的任務定義。 每個EC2實例為每個服務運行一個docker容器。 因此,我在每個EC2實例中有3個docker容器。

每個docker容器只需運行一個spring boot應用程序。 由於我有3個服務,所以我有3個春季啟動應用程序。 同樣,一個容器只運行這3個Spring引導應用程序中的一個。 每個應用程序都會在/ service1或/ service1 / resource1等URL下公開一個rest ful API,其中包括POST,GET等服務。 這里的一個重點是我在容器的主機中使用動態端口映射。

我在端口443上有一個外部(面向互聯網)ALB,它有3個目標組。 根據URL,請求將轉到3個應用程序(或容器)之一。

我的問題是有時應用A需要向應用B發出http請求。我的EC2實例位於私有子網中,而我的ALB位於公有子網中。 因此,如果我使用我的ALB從容器內部向另一個容器發出http請求,那么請求將通過NAT,並且因為NAT的公共IP不是ALB的安全組的一部分,那么它無法在端口443上連接。我有兩種方法可以完成這項工作:

  • 在ALB白名單0.0.0.0/0的安全組中。 我不想這樣做,因為整個世界都可以訪問。

  • 在ALB的安全組中,將NAT的公共IP列入白名單。 我不確定這種方法。 值得推薦嗎?

我想要實現的第三個選項是擁有第三個負載均衡器,一個內部負載均衡器。 但我迷失在這里,根據AWS文檔,您只能為您的服務分配1個負載均衡器。 由於我們使用的是動態端口映射,因此我沒有看到手動創建ALB並使用動態自動分配端口的方法。

你們如何在容器之間建立這種連接,一個容器消耗其他提供的服務?

作為最后評論,我使用雲形成。 無需從控制台手動設置。

謝謝,

您可以嘗試將nat網關公共IP列入白名單,作為具有/ 32掩碼的主機。 這是一種非常正常的方法,因為您已經通過ALB向公共互聯網公開了端點。 在破壞或更改NAT網關的情況下,您只需要關心安全規則更新,因為它的IP可能會發生變化。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM