兩個服務如何在 AWS Fargate 上相互通訊?

兩個服務如何在 AWS Fargate 上相互通訊?

我在 AWS 上設定了一個 Fargate 叢集。我的集群有以下內容服務

  • 伺服器-A(連接埠 3000)
  • 伺服器-B(連接埠 4000)

每個服務都位於同一 VPC 中並具有相同的安全群組(任何連接埠、任何來源、任何目標)。 VPC 與網路隔離。

現在,我希望伺服器 A 向伺服器 B 發送 http 查詢。我假設,就像在 Docker swarm 中一樣,有一個私人 DNS 將服務名稱對應到其私人 IP,並且就像將查詢發送到以下位址一樣簡單:http://伺服器-B:4000。但是,伺服器 A 超時,這意味著它無法到達伺服器 B。

我在文件中讀到,我可以將 2 個容器放在同一個服務中,每個容器偵聽不同的端口,這樣,由於環回接口,我可以從伺服器 A 查詢http://127.0.0.1:4000伺服器 B 將響應,反之亦然。

但是,我希望能夠擴展伺服器 A 和伺服器 B獨立地,所以我認為透過擁有 2 個服務來保持每個伺服器彼此獨立是有意義的。

我讀過,為了讓兩個任務相互通信,我需要設定一個負載平衡器。來自 Docker Swarm 的世界,透過服務名稱查詢服務非常容易,並且在幕後,請求被轉發到該服務中的容器之一。但它在 AWS Fargate 上似乎並不像那樣運作。

問題:

  • 伺服器 A 如何與伺服器 B 通訊?
  • 由於服務有時會重新部署,其私有IP會發生變化,因此透過IP查詢沒有意義,透過主機名稱查詢似乎是最自然的方式
  • 我需要設定任何類型的內部 DNS 嗎?

感謝您的幫助,我真的對這個簡單的設置感到困惑。

答案1

經過查找,發現是由於我在創建服務時沒有啟用“服務發現”,所以沒有創建私有DNS。以下是一些附加文檔,準確解釋了這些步驟:

https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create-service-discovery.html

相關內容