为什么 Fargate 默认基础设施涉及一个 VPC 和两个子网?

Why does fargate default infrastructure involve one VPC and two subnets?

我想知道为什么需要这些资源的根本原因是什么。特别好奇这两个子网的要求。

即使是用于 Fargate 设置的官方 AWS cloudformation 模板也包含这些资源。

通过提供两个子网,您实际上提供了两个可用区。 AWS 的一种标准做法是跨 AZ 分配资源以实现高可用性,以防某个区域出现故障。单个子网不能分布在两个或多个区域,因此您需要提供两个。

Fargates 需要 "Availability Zone Spread" placement strategy,通过指定子网,您可以隐式指定不同的 AZ。

如果您在一个VPC中创建多个子网,子网的网段不能重叠。例如,如果您使用 CIDR 块 10.0 创建 VPC。 0.0/24,支持256个IP地址。

您可以将此 CIDR 块分成两个子网,每个子网支持 128 个 IP 地址。

**参考:https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Subnets.html

Fargate 将始终尝试将任务跨越指定 VPC 中的可用 AZ。任务放置策略是一种算法,可以帮助您选择如何放置任务,并且仅在尽力而为的基础上进行。但是,使用 Fargate 启动类型的任务不支持任务放置策略。默认情况下,Fargate 任务分布在多个可用区 [1]。


[1] https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-placement.html