[英]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.