簡體   English   中英

AWS VPC 中的 ECS Fargate 服務 - 無法相互交談

[英]ECS Fargate Services in AWS VPC - Unable to talk to each other

我的架構就像

Route53 -> SG -> ALB -> Target Group (IP) -> Task.

在 Route 53 中,我定義了命名空間。 一種是公開的,一種是私人的。

domain.io   ----   Private
domain.io   ----   Public

我有兩個服務,A 和 B。

ALB 看起來像:

<DNS of public LB attached to service A> = A-ALB
<DNS of public LB attached to service B> = B-ALB

在 Private 命名空間中,條目如下所示:

service-a.domain.io - Type A record - A-ALB
service-b.domain.io - Type A record - B-ALB

在公共命名空間中,條目如下所示:

service-a.domain.io - Type A record - A-ALB
service-b.domain.io - Type A record - B-ALB

A-ALB 和 B-ALB 有一個附加到它們的安全組。 此安全組包含 VPC CIDR Block,以允許來自 VPC 的所有傳入流量通過。

All traffic ---- All  ----  All ---  10.0.0.0/16

任務:

Task        Private IP        Public IP        
A           10.0.0.1          3.0.0.1
B           10.0.0.2          3.0.0.2

當服務 A 調用服務 B 時,在 URL、service-b.domain.io 上,它從 Private 命名空間中獲取值並嘗試通過目標組訪問任務。 但由於負載均衡器列在那里,服務 A 嘗試使用服務 A 的公共 IP 訪問服務 B。 並且服務 A (3.0.0.1) 的公共 IP 未在安全組中列出,它超時沒有給我們任何響應。 但是當我將這個 IP 列入白名單時,服務 A 可以毫無問題地訪問服務 B。

由於負載均衡器是公共負載均衡器,因此它解析任務的公共 IP 地址。 服務 B 只允許我附加一個負載均衡器,要么是私有的,要么是公共的,所以因為這個服務也需要公開訪問,所以我肯定需要選擇一個公共的負載均衡器。

我不介意將 IP 添加到安全組,但是每次我重新部署我的服務時,由於它是一個 Fargate 服務,因此任務的公共和私有 IP 會發生變化,我需要將新的公共 IP 添加到安全組。

服務 A 應該如何訪問服務 B 以便不需要更改安全組? 我應該對 Route 53 進行更改嗎? ALB? TG? 還是服務?

似乎您有一個不應公開的公共 ALB,因為公共負載均衡器通常在安全組中有 0.0.0.0/0 規則,因此可以避免您面臨的問題。

我建議您創建一個內部負載均衡器而不是公共負載均衡器。

這樣,當 ALB DNS 的 DNS 解析發生時,ALB 的私有 IP 將被返回,因此通信將在內部發生,您可以在 Security group 中指定安全組 ID(作為源)。

暫無
暫無

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

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