【问题标题】:AWS Load Balancer with a static IP address具有静态 IP 地址的 AWS 负载均衡器
【发布时间】:2012-11-25 21:11:28
【问题描述】:

我有一个在 Amazon 云上运行的设置,其中有几个 EC2 实例通过负载均衡器运行。

网站有一个唯一的(静态)IP 或一组 IP 很重要,因为我正在插入仅接受来自已添加到其白名单的 IP 的请求的第 3 方 API。

因此,基本上,除非我们可以为这些第 3 方提供静态 IP 或 IP 范围,而该站点的请求将始终来自该 IP 范围,否则我们将无法对它们进行任何调用。

任何人都知道如何实现这一点,因为我知道弹性 IP 与负载均衡器不兼容?

如果我要查找负载均衡器 DNS 名称的 IP(例如 dualstack.awseb-BAMobile-ENV-xxxxxxxxx.eu-west-1.elb.amazonaws.com 解析为 200.200.200.200),该 IP 会是静态的?

非常感谢任何帮助/建议。

【问题讨论】:

    标签: amazon-web-services amazon-ec2 load-balancing amazon-elastic-beanstalk static-ip-address


    【解决方案1】:

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

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

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

    【讨论】:

    • 这个专用的 NAT 实例是 SPOF!坏主意。
    • 因此您使用两个 NAT/Proxy 实例,例如 this
    • 在 VPc 内部,ELB 也有可变 IP。我做了nslookup Cname_of_ELB,它给了我两个IP。这是什么意思?
    • AWS 提供了一个 nat 网关。您可以为其分配弹性 IP。
    【解决方案2】:

    负载均衡器的 IP 地址不是静态的。在任何情况下,您的传入负载均衡器 IP 都不会用于传出连接。

    您可以为负载均衡器后面的实际实例分配弹性 IP,然后将其用于传出请求。您可以获得5个免费的弹性ip,如果您需要,相信您可以申请更多。

    此外,如果使用 VPC 并且您的实例位于私有子网中,那么它们将只能通过您设置的 NAT 实例访问互联网,您当然可以为 NAT 实例分配弹性 IP

    【讨论】:

    • 真的吗?为什么您不能将弹性 ip 分配给恰好也连接到 elb 的实例?如果我理解该请求,它们仅在对这些 3rd 方服务的传出请求中进行测试,而不是由 ELB 处理的传入请求
    • 除非最近发生了变化,否则您不能将弹性 IP 分配给在 ELB 后面运行的实例。
    • Frederick 你在这两个方面都是正确的(#1 发送到电子邮件系统的不是 ELB,#2 ELB 后面的节点可以有静态 IP 地址)。
    • 2020 年仅供参考,我目前正在 ELB 后面运行一个 EC2 实例,该实例实际上具有与之关联的弹性 IP。
    【解决方案3】:

    您可以将附加 ENI(弹性网络接口)附加到您的 VPC 中的实例。这样,ELB(弹性负载均衡器)将传入的 Internet 请求路由到 Web 服务器,并且额外的 ENI 将用于连接到您的第 3 方(或内部)请求(管理网络

    你可以在VPC documentations看到更多细节

    【讨论】:

    【解决方案4】:

    您可以将弹性 IP 附加到实例,但不能附加到 ELB(这是客户端看到的)。

    您可以使用完整的反向代理第 7 层负载均衡器,例如 HAProxy

    或者像 Loadbalancer.org 或 Riverbed (Zeus) 这样的商业实现

    他们都在AWS Marketplace:

    【讨论】:

      【解决方案5】:

      您可以使用 DNSMadeeasy 等允许“ANAME”记录的 DNS 服务。这些行为类似于 A 记录,但可以指向 FQDN 或 IP。因此,在这种情况下,您可以将其指向 ELB DNS。

      戴夫

      【讨论】:

        【解决方案6】:

        您可以在 AWS 中使用前面提到的 loadbalancer.org 设备。它将取代 AWS NAT 实例并提供更强大的功能,包括第 4 层和第 7 层,以及 SSL 终止和 WAF。

        最重要的是,您可以在 AWS 的 30 天试用中获得免费支持,以帮助您启动和运行。

        是的,当我为 loadbalancer.org 工作时,我有偏见,但是我想说什么都不敢冒险。

        【讨论】:

          【解决方案7】:

          这是一个老问题,但现在情况已经改变了。

          现在您可以创建一个网络 ELB 以获取具有静态 IP 的 LB。

          来自https://docs.aws.amazon.com/elasticloadbalancing/latest/network/introduction.html

          • 支持负载平衡器的静态 IP 地址。你也可以 为负载启用的每个子网分配一个弹性 IP 地址 平衡器。

          https://aws.amazon.com/blogs/aws/new-network-load-balancer-effortless-scaling-to-millions-of-requests-per-second/

          【讨论】:

          • Oh Amazon... 请注意,要将弹性 IP 添加到您的网络负载均衡器,您必须在开始创建负载均衡器之前取消 IP 地址的关联(如果它已经与某些东西相关联),然后在创建期间关联地址。至少现在,您无法在创建负载均衡器后关联弹性 IP。
          【解决方案8】:

          您对第 3 方 API 的出站请求不会通过 ELB/ALB 发出。这是针对传入连接的。如果您需要一个入站静态 IP,您可能需要放弃负载均衡器(或者弄清楚如何实施 Anshu 将弹性 IP 附加到负载均衡器的建议,文档中的细节很简单)。更新:我发现了一些 ALB 使用静态地址的文档(我只是尝试将弹性 IP 绑定到一个以确保失败)。 如果您谈论的是出站连接,请参见下文:

          • 如果您的服务器部署在公共子网中,您可以附加一个 该主机的弹性IP。出站通信将结束 那个地址。
          • 如果您的服务器部署在私有子网中,则 连接到它的 NAT 网关。来自您私人的所有出站流量 子网将通过该接口出去。

          【讨论】:

          • 如果自动伸缩添加和删除实例怎么办?那么每个实例的 IP 是多少?
          • 如果您使用 AWS 提供的 nat 网关将应用程序服务器部署在私有子网中,来自您私有子网的每个出站请求都将来自同一个 IP。
          猜你喜欢
          • 2018-04-22
          • 1970-01-01
          • 2018-08-01
          • 2020-02-20
          • 2015-11-22
          • 2020-10-22
          • 2017-12-22
          • 2018-08-14
          • 2021-01-21
          相关资源
          最近更新 更多