最近,我管理的一个 AWS 账户的区域数据传输费用大幅增加。检查使用情况/账单详情显示,这是由于正在处理的“ELB 数据”和“区域数据传输”增加所致。
所有实例都位于同一可用区,因此问题肯定出在负载均衡器上。有 2 个 ELB 用于面向互联网的流量,还有 2 个 ELB 用于内部流量,但是查看控制台后,我可以看到所有 4 个都是 Classic ELB,它们与 EC2-Classic 内部的实例(而不是 VPC)通信。
因此,这 2 个“内部”ELB 由形式为 的 DNS 名称引用ELB-Name-loadbalancer-xxxxxxx.eu-west-1.elb.amazonaws.com
,而不是Internal-loadbalancer-xxxxxxx.eu-west-1.elb.amazonaws.com
使用内部 ELB 创建的。
假设这些 DNS 记录解析为公共 IP,因此会产生数据传输成本?如果是这样,TTL 的变化理论上可能会导致我看到的成本变化。
有人能确认这是否正确或者我是否弄错了吗(如果是,我还能做些什么来帮助追踪问题)?
编辑:这是我看到的图表:
虽然数据输入/输出持平,但 ELB 数据和区域传输却在疯狂增长。有趣的是,ELB 数据大约占区域数据传输的一半,所以我认为这与我的猜测有关,即 ELB 流量正在收取输入/输出费用。不幸的是,我不知道是什么导致了 ELB 数据本身的实际增长。
答案1
你的怀疑是正确的。
如果你使用公共或弹性 IP 地址在实例之间进行通信,即使在同一区域,您也要支付区域数据传输费率(每 GB 输入/输出 0.01 美元):
公有 IP、弹性 IP 和 Elastic Load Balancer 数据传输
每 GB 输入/输出 0.01 美元 – 如果您选择使用 Amazon EC2 网络内的公共或弹性 IP 地址或弹性负载均衡器进行通信,即使实例位于同一可用区,您也需要支付区域数据传输费用。对于同一可用区内的数据传输,您可以尽可能使用私有 IP 轻松避免此费用(并获得更好的网络性能)。
正如EC2 常见问题解答:如果我使用公共 IP 地址在可用区域之间传输数据,我是否会被收取两次区域数据传输费用(一次是因为跨区域,第二次是因为我使用公共 IP 地址)?
这解决方案是始终“在 Amazon EC2 实例之间进行通信时使用内部地址,[这]可确保您的网络流量通过我们的网络遵循最高带宽、最低成本和最低延迟的路径”。