首页 > 解决方案 > AWS:在 terraform 中向弹性 beantalk 添加第二个内部负载均衡器

问题描述

是否可以在 terraform 中操作 beantalk 的自动缩放组和目标组,添加额外的(内部)负载均衡器?如果是,如何?

我想有 2 个负载均衡器,一个是内部的,另一个是公共的。我从 AWS 找到了这个解决方法:

https://aws.amazon.com/it/blogs/networking-and-content-delivery/using-static-ip-addresses-for-application-load-balancers/

还有其他更聪明的解决方案吗?

标签: amazon-web-servicesterraformamazon-elastic-beanstalkterraform-provider-aws

解决方案


我认为这可以完美实现,但是您需要在方法上进行一些小改动。

您不会在 EB 中拥有 2 个负载均衡器,但是您的 beanstalk 将描述从第二个负载均衡器开始的基础架构,设置为内部,然后您将添加另一个指向 BE 负载均衡器的公共负载均衡器。

与 AWS 博客中提出的方法相比,我们可以用一种更简单的方法来实现这一点。

为此,您的 BE 设置将与您拥有的几乎相同,但是:

  • 将负载均衡器设置为网络类型。这是唯一允许您在负载均衡器中拥有静态 IP 的类型。
  • 将负载均衡器设置为内部(在 beanstalk 的网络配置内部,将可见性设置为内部,并取消选中“将公共 IP 地址分配给 EC2 实例...”
  • 将弹性 IP 分配给您的负载均衡器,至少 2 个,位于不同的可用区。
  • 你的 Beanstalk 的其余部分保持原样。

现在创建一个公共负载均衡器:

  • 这可以是您需要的任何类型。如果你想做 SSL 终止或任何其他第 7 层魔法,也许是 ALB。另外,必须公开
  • 创建一个新的目标群体。该组的目标类型应为 IP。
  • 在上面注册您的网络负载均衡器的 2 个弹性 IP。
  • 将侦听器添加到指向此目标组的 ALB

这会变魔术。您将需要检查如何在 terraform 中执行此操作,但该方法非常简单,因此我确信 terraform 会让您这样做。


与 AWS 博客(设计用于完全不同的目的)相比,它的优势在于,这里的内部负载均衡器是网络,而外部则不需要。由于 NLB 是内部的,因此您避免了基础架构中的大量开销,也避免了动态逻辑,例如他们建议注册 IP 地址的 lambda。使用这种方法,您可以获得更具声明性的架构,更易于在 terraform 中描述,并且更易于在生产中维护。


推荐阅读