将公共静态 ipv4 地址添加到 AWS 负载均衡器

Posted

技术标签:

【中文标题】将公共静态 ipv4 地址添加到 AWS 负载均衡器【英文标题】:Adding a public static ipv4 address to an AWS load balancer 【发布时间】:2017-12-22 00:44:09 【问题描述】:

我有一个负载平衡器配置为具有 IPV4 IP 地址。但是,提供的 IP 是到负载均衡器的 DNS 映射 IP 地址,格式为 *.ap-south-1.elb.amazonaws.com。

我需要配置 IOT 设备以将数据发送到负载均衡器,但它们不支持 DNS。如何将像 ... 这样的静态 IP 地址分配给我的负载均衡器,以便我可以配置我的 IOT 设备以向其发送数据。

弹性 IP 部分不提供将其分配给负载均衡器的工具,仅支持 ec2 实例。

结论:

我找到了一种在我的 IOT 设备上使用 DNS 的方法,并且对此进行处理至关重要。我现在知道在 EC2 实例上手动托管负载均衡器的选项。一个更简单的替代方案是将弹性 IP 寻址 EC2 实例上的所有请求转发到负载均衡器。但是,这将导致透明代理出现瓶颈。因此,我认为在 IOT 设备上使用 DNS 功能是最好的选择。

【问题讨论】:

ELB 是一项依赖 DNS 的托管服务,您无法配置静态 IP。考虑使用在 EC2 上运行的 HAProxy 之类的东西,带有弹性 IP。 这是一个合适的解决方案,手动管理吗? 【参考方案1】:

弹性负载均衡器不支持静态 IP 地址。它们仅支持 DNS CNAME(或别名,如果您使用的是 Route 53)。这是因为 ELB DNS 条目将解析为不同的 IP 地址,具体取决于它在可用区之间的扩展方式。此外,随着时间的推移,IP 地址会/可能会发生变化。

AWS 文档还特别指出,仅在将自定义 DNS 条目映射到您的 ELB 时才创建 CNAME 记录。如果您使用的是 Route 53,则可以创建别名记录,在外界看来,它就像是 A 记录。

如果您需要静态 IP 地址,则不能使用 ELB。

相反,您需要使用弹性 IP 地址在 EC2 实例上管理自己的负载均衡器(HAProxy、nginx 等)。

【讨论】:

如果我创建一个 EC2 实例将请求转发到我的负载均衡器会怎样? 你可以这样做。但就像使用 HAProxy 或 nginx 一样,您需要管理代理上的负载,因为所有请求都将通过单个实例。与 ELB 的可用容量相比,您的单个 EC2 实例可能会成为瓶颈。 我明白了,你能想出更好的选择吗? 如果您需要单个静态 IP 地址,那么我认为没有其他选择。单个静态 IP 地址只能解析到单个服务器。您可以尝试类似 AWS Kinesis 之类的东西,它旨在注入 IoT 流量。 您的 IoT 设备不支持 DNS 的事实有点可怕:如果您的 IP 地址因某种原因必须更改,会发生什么情况?您的物联网设备现在是简单的纸张重量吗?【参考方案2】:

无法使用弹性负载平衡器分配静态 IP。您只需要使用 DNS 名称。

我知道这样做的唯一方法是在 VPC 中设置您的实例并使用专用的 NAT 实例来路由所有出站流量。

这里是关于如何设置 NAT 实例的 AWS 文档的链接:

http://docs.amazonwebservices.com/AmazonVPC/latest/UserGuide/VPC_NAT_Instance.html

【讨论】:

NAT 实例(和 NAT 网关)用于出站流量,而不是入站流量。【参考方案3】:

由于多种原因,AWS Elastic Load Balancer 不支持分配静态 IP 地址。

看看您的问题,您面临的问题是有大量数据源将数据泵送到 AWS。我建议您使用 AWS Kinesis Firehose 服务而不是当前的方法,因为 Firehose 专门专注于将数据流式传输到 AWS。

【讨论】:

以上是关于将公共静态 ipv4 地址添加到 AWS 负载均衡器的主要内容,如果未能解决你的问题,请参考以下文章

是否可以将负载均衡器添加到没有负载均衡器的现有 AWS Elastic Beanstalk 应用程序?

为 AWS EB 应用程序的网络负载均衡器 (NLB) 使用静态 IP?

如何将目标(不在 AWS 上)注册到网络负载均衡器?

服务器上的 AWS 负载均衡器、静态 IP 和 SSL 终止(不是负载均衡器)

AWS Elastic Beanstalk - 将负载均衡器追溯添加到应用程序

ECS 服务的 AWS 网络负载均衡器运行状况检查失败