<!-- AI_TASK_START: AI标题翻译 -->
[新产品/新功能] 使用 VPC IPAM 简化 ALB 的公共 IP 地址分配
<!-- AI_TASK_END: AI标题翻译 -->
<!-- AI_TASK_START: AI竞争分析 -->
# 产品功能分析
## 新功能/新产品概述
AWS 推出了 Application Load Balancer (ALB) 与 **Amazon VPC IP Address Manager (IPAM)** 的集成功能,该功能允许互联网面向 ALB 使用可预测的 IP 地址块。该功能的核心目标是简化 ALB 的公共 IP 地址分配,减少公共 IPv4 地址成本,并支持 **Bring Your Own IP (BYOIP)** 地址。背景在于,传统 ALB 随机分配 Amazon 拥有的公共 IP 地址,导致难以维护一致的 IP 允许列表,而此功能针对云网络管理需求,提供更灵活的架构,尤其适用于需要稳定 IP 地址的场景,如外部伙伴或客户访问。目标用户群包括依赖高可用性负载均衡的企业和开发人员,市场定位聚焦于提升网络管理的可预测性和成本效率。
## 关键客户价值
- **成本优化**:通过使用 BYOIP 地址减少 Amazon 提供的公共 IPv4 地址费用,帮助客户降低 IP 地址使用成本,与传统随机分配方案相比,实现了更高效的资源利用,但需确保 IPAM 池有足够可用地址以避免回退。
- **IP 管理简化**:支持维护一致的 IP 允许列表,便于与外部伙伴或客户合作,相比其他云平台的负载均衡器,此功能增强了网络策略的可控性,在多可用区场景中体现出更强的灵活性。
- **高可用性和兼容性**:ALB 可实现双栈(IPv4 和 IPv6)支持,适用于混合网络环境,与传统方案的差异在于它通过 **VPC IPAM** 提供确定性 IP 地址,提升了整体架构的可靠性,但在大规模部署时,可能需要额外监控以应对 IP 地址不足的潜在风险。
## 关键技术洞察
- **技术原理和工作机制**:该功能基于 **VPC IPAM** 池分配公共 IP 地址,ALB 在创建时从指定 IPAM 池获取地址,并通过 **Amazon Route 53** 更新 Fully Qualified Domain Name (FQDN),实现事件驱动的 IP 管理。创新点在于引入回退机制,当 IPAM 池地址不足时,自动使用 Amazon 拥有的备用池,确保 ALB 的可用性,同时支持 ALB 缩放时动态分配 IP。
- **对性能和安全性的影响**:此集成提升了 ALB 的网络性能和安全性,通过可预测 IP 地址减少了管理复杂性,但可能面临 IP 地址耗尽的风险;在缩放场景中,技术实现了高效的 ENI(Elastic Network Interfaces)管理,优化了资源利用率,然而,如果 IPAM 池未正确配置,可能会增加初始设置的复杂性。
- **挑战和解决方式**:技术挑战包括确保 IP 地址可用性及迁移现有 ALB 的平滑性,AWS 建议使用 **CloudWatch** 指标(如 PercentAvailable)进行监控,并通过 API 或控制台逐步更新 ENI,以最小化中断;相比竞品,此功能在 IP 地址预测性上具有优势,但其局限性在于仅支持 IPv4 的 BYOIP,不兼容 IPv6 BYOIP,需用户根据实际需求评估。
## 其他信息
- **实施步骤概述**:首先,在 **VPC IPAM** 中配置 CIDR 块,确保处于已配置状态;然后,在创建或修改 ALB 时选择 **Use IPAM Pool for public IPv4 addresses** 选项,或使用相关 API(如 `aws elbv2 create-load-balancer`);最后,通过控制台验证 IP 地址来源,并监控子网使用情况以避免资源冲突。
- **注意事项**:此功能仅适用于互联网面向 ALB,且在多账户场景下需使用 **AWS Resource Access Manager (RAM)** 共享 IPAM 池;用户应注意不能删除已使用的 CIDR 块,并优化 DNS TTL 以处理迁移后的缓存问题。
<!-- AI_TASK_END: AI竞争分析 -->
<!-- AI_TASK_START: AI全文翻译 -->
# 使用 VPC IPAM 简化 ALB 的公网 IP 地址分配
**原始链接:** [https://aws.amazon.com/blogs/networking-and-content-delivery/simplify-albs-public-ip-address-assignment-with-vpc-ipam/](https://aws.amazon.com/blogs/networking-and-content-delivery/simplify-albs-public-ip-address-assignment-with-vpc-ipam/)
**发布时间:** 2025-04-18
**厂商:** AWS
**类型:** BLOG
---
[应用程序负载均衡器 (Application Load Balancer, ALB)](https://aws.amazon.com/elasticloadbalancing/application-load-balancer/) 在 OSI 模型的第 7 层运作,允许您将 HTTP 和 HTTPS 请求负载均衡到后端目标。在 2025 年 3 月,我们推出了 ALB 与 Amazon VPC IP 地址管理器 (IPAM) 的集成,该功能让您为互联网面向的 ALB 使用可预测的 IP 地址块。这有助于通过使用自带 IP (BYOIP) 地址来降低公网 IPv4 地址成本,并为互联网面向的 ALB 维护一致的 IP 允许列表(使用 BYOIPv4 或 Amazon 提供的连续前缀),以与外部合作伙伴或客户互动。
在本博文中,我们将讨论使用此功能的要点和注意事项,以及如何使用 [AWS 管理控制台 (AWS Management Console)](https://aws.amazon.com/console/) 和 API 进行设置。
## 先决条件
在以下部分中,我们假设您熟悉 ALB 的基础知识,例如配置 ALB、创建监听器以及关联目标组。您可以在 [文档](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html) 中找到更多 ALB 信息,并查看 [弹性负载均衡器 (ELB) 演示页面](https://exampleloadbalancer.com/)。
我们还假设您熟悉 AWS 网络服务,例如 Amazon [虚拟私有云 (Amazon VPCs)](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html)、子网、VPC 路由表以及 [VPC IPAM](https://docs.aws.amazon.com/vpc/latest/ipam/what-it-is-ipam.html)。
## 为什么 ALB 需要确定性的 IP 地址?
互联网面向的 ALB 会从互联网接收客户端请求,并将这些请求转发到后端目标。互联网面向的 ALB 会为其弹性网络接口 (ENIs) 关联公网 IP 地址。在推出此功能之前,互联网面向的 ALB 会从 Amazon 拥有的区域公网 IP 地址块中随机获取公网 IP 地址。因此,客户无法为其互联网面向的 ALB 使用可预测的 IP 地址。
ALB 与 IPAM 的集成让您可以在互联网面向的 ALB 上使用可预测的公网 IP 地址,这有助于维护与外部合作伙伴或客户端的允许列表。该功能还支持 BYOIP 地址。Amazon 提供的公网 IP 地址会产生每小时费用,因此使用 BYOIP 地址块为 ALB 分配 IP 时,可以节省公网 IP 使用成本。
使用此功能时,您的 ALB 可以是双栈,支持 IPv4 和 IPv6 地址。您可以使用 ALB 和 IPAM 集成来获取确定的公网 IPv4 地址,而 IPv6 地址则来自 Amazon 拥有的区域 IPv6 地址块。这是因为在撰写本文时,BYOIPv6 地址不支持 ALB。
## 互联网面向 ALB 的 DNS
在本节中,我们讨论互联网面向 ALB 的 DNS 工作原理。我们将在后续部分讨论 ALB 与 IPAM 集成时以此为基础。
客户端使用 DNS 访问托管在互联网面向 ALB 后面的应用程序。每个互联网面向 ALB 都会获得一个完全限定域名 (FQDN)。AWS 会自动将 ALB 的公网 IP 地址更新到 FQDN 中,无论公网 IP 地址是 Amazon 提供的还是 BYOIP 地址。图 1 显示了 ALB 与 [Amazon Route 53](https://aws.amazon.com/route53/) 的交互。

图 1: 互联网面向 ALB 的 DNS
## ALB 与 VPC IPAM 集成
您必须使用 VPC IPAM 为互联网面向的 ALB 提供可预测的 IP 地址。为此,首先需要创建一个区域 IPAM 池,其中包含 IP 地址块,然后配置 ALB 从 IPAM 池获取其公网 IP 地址。图 2 显示了互联网面向 ALB、VPC IPAM 和 DNS 之间的关系。

图 2: ALB、VPC IPAM 和 DNS 的交互
1. 创建 ALB API 调用引用 VPC IPAM 池以获取公网 IP 地址。在此示例中,ALB 创建在三个 [可用区 (AZs)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.RegionsAndAvailabilityZones.html) 中。
2. ALB 尝试从 VPC IPAM 池为可用区-1 中的 ENI 获取公网 IP 地址。
3. VPC IPAM 池包含 192.0.2.144/29 CIDR,且池中有可用 IP 地址。IPAM 为可用区-1 中的 ALB ENI 分配下一个可用 IP 地址 (192.0.2.144)。
4. VPC IPAM 将此 IP 地址标记为“使用中”。
5. VPC IPAM 将分配的 IP 地址提供给 ALB。可用区-1 中的 ALB ENI 获取此 IP 地址。
6. Route 53 将分配的 IP 地址添加到 ALB 的 FQDN。
此过程会为 ALB 的每个 ENI 重复执行,每个 ENI 从 VPC IPAM 池获取一个公网 IP 地址。
如果您的 IPAM 池没有足够的可用 IP 地址来为 ALB 的所有 ENI 分配,ALB 会先向 VPC IPAM 请求 IP 地址。VPC IPAM 会提供尽可能多的 IP 地址,其余 IP 地址则由 Amazon 拥有的区域公网 IP 池提供。图 3 显示了此场景。

图 3: 回退到 Amazon 拥有的区域公网 IP 池
1. IPAM 池 (192.0.2.144/29) 总共有八个 IP 地址,其中六个在创建 ALB 之前已使用。
2. 创建 ALB API 调用引用 VPC IPAM 池以获取公网 IP 地址。ALB 创建在三个 AZ 中。
3. VPC IPAM 池为可用区-1 和可用区-2 中的 ALB ENI 提供公网 IP 地址。此时,IPAM 池中的所有八个 IP 地址都已使用。
4. 可用区-3 中的 ALB ENI 从 VPC IPAM 请求公网 IP 地址。
5. VPC IPAM 池没有可用 IP 地址。
6. , 7. Amazon 拥有的区域公网 IP 池为可用区-3 中的 ALB ENI 提供下一个可用 IP 地址。
此回退机制确保了 ALB 的可用性,即使 VPC IPAM 池没有足够的 IP 地址。然而,这可能会使为互联网面向 ALB 维护确定的 IP 允许列表变得困难。为缓解此问题,我们建议使用 VPC IPAM 池的 [PercentAvailable CloudWatch 指标](https://docs.aws.amazon.com/vpc/latest/ipam/cloudwatch-ipam-ip-address-usage.html) 来警报可用 IP 地址百分比低于特定阈值。作为操作,您可以向 IPAM 池中添加更多 CIDR,并将新添加的 CIDR 提供给客户或合作伙伴用于允许列表场景。
## 此功能如何与 ALB 缩放配合?
ALB 由后台的一组 ALB 节点组成。在默认设置下,ALB 在每个 AZ 中配置一个节点,互联网面向的 ALB 为每个 ALB 节点需要一个私有 IP 和一个公网 IP 地址。ALB 可以根据流量和负载进行缩放。当 ALB 缩放时,现有的节点可能被替换为不同规格的 ALB 节点,或添加新的 ALB 节点。
如果互联网面向的 ALB 扩展并添加新节点,它会按照图 2 中概述的过程从 VPC IPAM 池获取公网 IP 地址。如果 VPC IPAM 池没有足够的 IP 地址,Amazon 拥有的区域公网 IP 池会为 ALB 扩展场景提供 IP 地址,如图 3 所示。
## 设置
本节展示如何为新 ALB 使用确定的 IP 地址。
### 步骤 1: 将 IP 前缀引入 VPC IPAM 池
第一步是在 VPC IPAM 池中配置 CIDR。您可以使用 Amazon 提供的公网 IP 地址或将 BYOIPv4 CIDR 引入 IPAM 池。请参考文档了解在 VPC IPAM 中设置的详细信息。VPC IPAM 池的区域必须是您计划创建 ALB 的 AWS 区域。
验证 CIDR 在 IPAM 池中处于已配置状态。

图 4: 验证 IPAM 池处于已配置状态
### 步骤 2: 创建互联网面向 ALB 并配置它从 VPC IPAM 池获取 IP 地址
在创建互联网面向 ALB 时,选择 **使用 IPAM 池分配公网 IPv4 地址** 选项。

图 5: 在创建 ALB 时选择 IPAM 池
或者,您可以使用以下 API 调用创建互联网面向 ALB:
aws elbv2 create-load-balancer \
--type application \
--name <ALB 名称> \
--ip-address-type ipv4 \
--subnets <子网列表,以空格分隔> \
--scheme internet-facing \
--ipam-pools Ipv4IpamPoolId=<VPC IPAM 池 ID>
### 步骤 3: 验证
您可以在 ALB 的 **网络映射** 选项卡中查看提供公网 IPv4 地址的 IPAM 池详细信息,如下图所示。

图 6: ALB 从 IPAM 池获取其公网 IP 地址
## 将现有互联网面向 ALB 迁移到使用 VPC IPAM 提供的地址
在本节中,我们讨论如果您希望为现有互联网面向 ALB 使用 VPC IPAM 池提供的公网 IPv4 地址的步骤和注意事项。
在现有 ALB 的网络映射选项卡中,选择 **编辑 IP 池**。

图 7: 选择“编辑 IP 池”以迁移现有 ALB 使用 IPAM 提供的地址
在下一个屏幕中,选择 **使用 IPAM 池分配公网 IPv4 地址**,然后从下拉列表中选择 IPAM 池:

图 8: 为 ALB 的公网 IP 地址选择 IPAM 池
您也可以使用以下 API 调用为现有互联网面向 ALB 使用 VPC IPAM 池提供的公网 IPv4 地址:
aws elbv2 modify-ip-pools \
--load-balancer-arn <ALB 的 ARN> \
--ipam-pools Ipv4IpamPoolId=<VPC IPAM 池 ID>
当您为现有互联网面向 ALB 更改 IP 池时,ALB 会创建新的 ENI,并为新接口使用 VPC IPAM 池提供的 IPv4 地址。新 ENI 还会从私有子网的 CIDR 中消耗每个一个 IP 地址。因此,我们建议您监控私有子网的 IP 地址使用情况,并确保有足够的私有 IP 地址来支持 ALB 创建的新 ENI。您可以使用 VPC IPAM 的 SubnetIPUsage CloudWatch 指标来监控子网的 IP 地址使用情况。请参考 [VPC IPAM CloudWatch 指标页面](https://docs.aws.amazon.com/vpc/latest/ipam/cloudwatch-ipam-res-util.html) 了解更多详细信息。
在将现有互联网面向 ALB 迁移到使用 VPC IPAM 池为公网 IP 地址后,ALB 的 FQDN 仅解析为 IPAM 池提供的 IP 地址。但是,ALB 会保持任何现有连接打开,直到 ALB 配置的 HTTP 保持活动持续时间结束。请参考 [此 Amazon 网络博文](https://aws.amazon.com/blogs/networking-and-content-delivery/introducing-dual-stack-without-public-ipv4-application-load-balancer/) 了解如何使用 HTTP 保持活动计时器来优雅地终止客户端连接。
当 ALB 的非 VPC IPAM 池提供的公网 IP 地址上的所有打开连接关闭时,ALB 会删除与先前公网 IPv4 地址集关联的 ENI。此时,您只会看到 ALB 新 IP 地址的 ENI。此机制确保 ALB 优化使用子网的私有 IP 地址。
与先前 IP 地址关联的 ENI 被删除,因此任何可能已缓存 ALB 先前公网 IPv4 地址的 DNS 响应的客户端不会收到响应。为缓解此问题,我们建议优化 DNS 记录的 TTL 设置,或让客户端在迁移 ALB 后刷新其 DNS 缓存。
## 注意事项
* ALB 的确定性 IP 地址功能仅适用于互联网面向负载均衡器。
* 创建使用 IPAM 池中 IP 地址的 ALB 后,您无法删除任何正在使用的 CIDR。
* 在多账户场景中,您可以使用 VPC IPAM 将 CIDR 引入中央账户,然后使用 AWS [资源访问管理器 (AWS RAM)](https://aws.amazon.com/ram/) 在多个账户之间共享 VPC IPAM 池。请查看 VPC IPAM [文档](https://docs.aws.amazon.com/vpc/latest/ipam/share-pool-ipam.html) 了解更多详细信息。
* 您需要 VPC IPAM 高级层来管理多个账户的 IP 寻址。请阅读 [VPC IPAM 定价页面](https://aws.amazon.com/vpc/pricing/) 了解高级层包含的功能和成本信息。
## 结语
在本博文中,我们解释了 ALB 与 Amazon VPC IPAM 的集成,以及如何使用控制台和 API 应用此功能。此集成让您通过使用 BYOIPv4 地址与 ALB 结合来降低 Amazon 提供的公网 IPv4 成本。此新功能还让您为互联网面向 ALB 获取连续的公网 IPv4 地址,从而更轻松地维护与外部合作伙伴或客户的 IP 允许列表。
要开始使用,请阅读 [ALB 文档](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/application-load-balancers.html#ip-pools)。
## 作者简介

### Pushkar Patil
Pushkar Patil 是位于加利福尼亚的 AWS 网络团队的产品负责人。他拥有超过十年的经验,在云计算和基础设施领域推动产品创新和战略规划。Pushkar 通过理解客户需求并提供创新解决方案,成功推出了许多新产品。在不工作时,您可以找到这位板球爱好者与家人旅行。

### Ankit Chadha
Ankit 是支持 AWS 行业账户的网络专家解决方案架构师。他喜欢为客户构建安全且可扩展的网络架构。在业余时间,Ankit 喜欢打板球、赢得猫的信任以及阅读传记。
<!-- AI_TASK_END: AI全文翻译 -->