我的 VPC 包含三个位于不同可用区的子网,每个子网中都有一个接口 VPC 终端节点。默认情况下,VPC 终端节点有 4 个 DNS 主机名:
- 区域 DNS 主机名,例如
vpce-x.ec2.us-east-1.vpce.amazonaws.com
。 - 三个特定于端点的区域 DNS 主机名,例如
vpce-x-us-east-1a.ec2.us-east-1.vpce.amazonaws.com
。
据我了解,区域 DNS 主机名将指向任意端点。有没有办法配置一个始终解析到同一子网内端点的 DNS 主机名,以减少可用区间的流量?我不确定延迟路由策略是否适用于此用例,或者是否有其他解决方案。或者区域 DNS 主机名是否已经执行了类似操作?
此处的用例是应用程序通过 VPC 实例端点向外部服务发送大量流量 - 以至于数据传输会产生大量成本。避免 VPC 端点的 AZ 间流量将减少一部分数据传输成本。
答案1
如果您使用区域 DNS 名称,则您正在与该区域对话。从文档:
在您的 VPC 中选择一个子网以使用接口终端节点。我们在子网中创建一个终端节点网络接口。终端节点网络接口会从您的子网的 IP 地址范围中分配一个私有 IP 地址,并会保留此 IP 地址,直到删除接口终端节点为止。您可以在不同的可用区中指定多个子网(服务支持),以帮助确保您的接口终端节点能够应对可用区故障。在这种情况下,我们会在您指定的每个子网中创建一个终端节点网络接口。
因此,如果您有一个实例在 us-east-1a 中运行,请告诉它使用 east-1a 端点,所有通信都将在 AZ 内。您应该能够通过使用代码中的环境变量、CloudFormation 中的映射或参数存储查找来更改 DNS 名称。请记住,这不会对故障具有弹性。
除非你正在做需要极低延迟的 HPC 事情,或者跨区域传输大量数据,否则我只会使用区域名称(例如 us-east-1)。我的期望是它会使用一些合理的名称。
您可以通过执行一些操作host REGIONALDNS
并检查它返回的 IP 并与区域结果进行比较来进行验证。