为AWS Load Balancer分配静态IP地址

时间:2016-02-10 10:50:08

标签: amazon-web-services amazon-ec2 amazon-elb amazon-vpc

如何为ELB分配静态IP地址。好像我不能。

在线的一些文章要求创建Route 53记录,但这需要更改域的CNAME,这也会重定向电子邮件流量。我只想更改A记录而不是CNAME。

有些文章还提到我可以使用EC2实例作为反向代理。但是,单个代理是否能够处理大量流量?

对此有何解决方案?

6 个答案:

答案 0 :(得分:42)

AWS' Elastic Load Balancer实际上是弹性的,如下所述: http://shlomoswidler.com/2009/07/elastic-in-elastic-load-balancing-elb.html

第一级是负载均衡器本身。为了确保ELB可以扩展到您拥有的任何音量并突然爆发到您突然遇到的任何音量,AWS会分配一个“静态”音频。 DNS主机名(例如MyDomainELB-918273645.us-east-1.elb.amazonaws.com)。该主机名指向多个IP地址。您可以通过运行

来查看(从命令行)
$ host MyDomainELB-918273645.us-east-1.elb.amazonaws.com
MyDomainELB-918273645.us-east-1.elb.amazonaws.com 172.31.7.2
MyDomainELB-918273645.us-east-1.elb.amazonaws.com 172.31.11.33

ELB中的第二种弹性形式显然是ELB将查询引导到池中的一个EC2实例。

因此,您可以看到尝试为负载均衡器分配静态IP地址将会弄巧成拙。

使用EC2实例作为反向代理似乎也会弄巧成拙,因为在你进入ELB之前就会产生瓶颈。不妨创建自己的负载均衡器。

推荐的解决方案(您已经指出)是创建一个指向ELB主机名的CNAME(不会发生变化)。

  

即。 my-app.mycompany.com - >   MyDomainELB-918273645.us-east-1.elb.amazonaws.com

这将允许您在域中的ELB后面集成您的可伸缩应用程序。

我不确定我是否完全理解为什么您无法在DNS中创建CNAME或者与指导电子邮件流量有什么关系,您能解释一下吗?

答案 1 :(得分:9)

AWS中的一项新功能(我相信它在Re:Invent 2017上宣布)允许使用网络负载均衡器(NLB)的静态IP。 NLB只能处理第4层(TCP)而不能处理HTTP细节(第7层)。

您可以为每个可用区分配一个弹性IP地址。

有关详细信息,请参阅AWS blog postNLB documentation

“经典负载均衡器”和“应用程序负载均衡器”不支持静态IP。如果您需要仅由这些功能提供的功能,则必须回退到上述CNAME解决方案。

答案 2 :(得分:8)

AWS支持最近发布了一个关于此主题的博客,利用NLB为Classic和Application负载均衡器提供静态IP - https://aws.amazon.com/blogs/networking-and-content-delivery/using-static-ip-addresses-for-application-load-balancers/

帖子描述的解决方案摘要

  

我们最终在NLB上接受TCP侦听器,该侦听器接受流量并将其转发到内部ALB。 ALB终止TLS,检查HTTP标头,并根据您配置的规则将请求路由到具有您的实例,服务器或容器的目标组。 AWS Lambda函数通过观察ALB的IP地址更改和更新NLB目标组来使所有内容保持同步。最后,我们将有一些易于白名单的静态IP地址,我们不会失去ALB的任何好处。请注意,我们将通过两个负载均衡器发送所有流量

答案 3 :(得分:3)

我发现非常简单,直接地设置AWS Global Accelerator。它创建了两个静态IP地址和一个指向我的应用程序负载平衡器的静态DNS。

配置全局加速器

  1. 将侦听器设置为TCP端口80、443

  2. 选择您的负载均衡器端点(AWS Global Accelerator Configuration

  3. 为您的dns添加cname记录,指向它创建的静态dns(mywebsite.com-> globalacceleratorDNS.com)。如果有任何客户需要将其列入白名单,请为他们提供其创建的2个静态网址

定价为每月$ 18 +每GB数据传输几便士。 我敢肯定,它比NLB,Nat Gateway,弹性IP设置便宜。

https://docs.aws.amazon.com/global-accelerator/latest/dg/about-accelerators.html

答案 4 :(得分:0)

与网络负载平衡器不同,应用程序负载平衡器(ALB)不支持弹性IP,但这并不是最糟糕的部分。如果将Route 53与ALB一起使用,则DNS自动将TTL设置为60秒。这似乎给运行旧版Windows DNS服务器的机构客户(主要是政府客户)造成了问题。他们只是赶不上ALB的监听器在如此短的时间内更改其面向公众的IP的速度。较旧的DNS基础结构要么不被尊重,要么无法处理这种激进的TTL。

虽然我不喜欢它,但AWS建议在以下位置将网络负载平衡器放在应用程序负载平衡器的前面:https://aws.amazon.com/blogs/networking-and-content-delivery/using-static-ip-addresses-for-application-load-balancers/

答案 5 :(得分:-3)

您必须将CNAME记录添加到NDS区域才能使其正常工作:

yourhostname IN CNAME some-lb-XXXXX.elb.amazon.com.

不要忘记负载均衡器名称末尾的点。