AWS 的 Availability Zone ID 为何因账户而异 - AZ 映射的设计意图
解析 us-east-1a 在不同账户指向不同物理 AZ 的机制、AZ ID(use1-az1)引入的背景、容量均匀分散的设计意图,以及跨账户 AZ 指定的注意事项。
us-east-1a 并非所有人的同一位置
AWS 的 Availability Zone 名称(us-east-1a、us-east-1b 等)在不同账户映射到不同的物理 AZ。账户 A 的 us-east-1a 和账户 B 的 us-east-1a 可能指向不同的物理数据中心群。这一事实即使是长期使用 AWS 的人也很多不知道。AWS 采用这种设计的原因是为了防止容量集中。如果所有账户的 us-east-1a 都指向同一物理 AZ,大多数用户会将资源部署在字母顺序最前的 us-east-1a,导致特定物理 AZ 过载。通过随机化映射,实现了物理 AZ 间的负载均衡。
AZ ID 的引入 - 唯一标识物理 AZ
由于 AZ 名称的映射因账户而异,需要一种跨账户指定「同一物理 AZ」的方法。例如,通过 RAM(Resource Access Manager)与其他账户共享子网时,可能需要共享方和被共享方在同一物理 AZ 中放置资源。为解决这一课题而引入的是 AZ ID。AZ ID 是 use1-az1、use1-az2 这样的标识符,无论账户如何都指向同一物理 AZ。在 EC2 控制台的「AZ ID」列或 describe-availability-zones API 的响应中可以确认。跨账户协调时,应使用 AZ ID 而非 AZ 名称来指定物理位置。
映射的实现 - 如何决定
AZ 名称与物理 AZ 的映射在账户创建时随机分配。AWS 未公开映射算法,但从实测中发现了一些特性。第一,映射并非完全随机,可能进行了考虑物理 AZ 间负载均衡的加权。新增物理 AZ 时,可能会调整使更多账户映射到该 AZ。第二,映射一旦确定就不会改变。账户创建后,us-east-1a 指向的物理 AZ 不会变更。第三,同一组织(Organizations)内的账户映射也各不相同。即使是同一组织的成员账户,映射也是独立随机分配的。
AZ 映射成为问题的场景
AZ 映射差异实际成为问题的场景存在。最常见的是跨账户数据传输成本。从账户 A 的 us-east-1a(物理:use1-az1)向账户 B 的 us-east-1a(物理:use1-az2)传输数据时,虽然 AZ 名称相同但物理 AZ 不同,会产生 AZ 间数据传输费用(0.01 USD/GB)。使用相同 AZ ID 的资源间传输则不产生 AZ 间费用。此外,在通过 RAM 共享子网的多账户环境中,如果不注意 AZ ID 可能导致资源分散在非预期的物理 AZ 中,影响延迟和可用性设计。 如需深入了解 AWS 基础设施设计,相关书籍 (Amazon) 也可供参考。
Local Zones 与 Wavelength Zones - AZ 的扩展概念
作为 AZ 概念的扩展,存在 Local Zones 和 Wavelength Zones。Local Zones 是部署在 AWS 区域外的小规模基础设施,在特定城市附近提供计算资源。东京区域没有 Local Zone,但大阪存在 Local Zone。Local Zones 适合需要靠近终端用户的低延迟应用(游戏、视频流、实时渲染等)。Wavelength Zones 部署在电信运营商的 5G 网络边缘,提供超低延迟的计算环境。这些扩展概念也有各自的 Zone ID,可以跨账户唯一标识物理位置。理解 AZ 映射的设计意图后,这些扩展概念的定位也变得清晰。