amazon-web-services - AWS:在 terraform 中向弹性 beantalk 添加第二个内部负载均衡器
问题描述
是否可以在 terraform 中操作 beantalk 的自动缩放组和目标组,添加额外的(内部)负载均衡器?如果是,如何?
我想有 2 个负载均衡器,一个是内部的,另一个是公共的。我从 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 中描述,并且更易于在生产中维护。
推荐阅读
- ruby-on-rails - 使用 Rails/AREL 从数据库中选择特定的 JSON 节点?
- python - python问题的移动平均线
- rust - 在rust中将变量类型作为函数参数传递?
- vb.net - Visual Basic 是否会非常缓慢地处理这样的嵌套循环,或者我的代码是否存在其他问题?
- ios - TextView 和 TextField 的单个扩展以添加工具栏
- angular - 我需要取消订阅 Ngrx Select
- .net - Npsql:使用 EF Core 在 jsonb 列上创建索引
- java - Let's Encrypt + Hitch: Android OkHttp java.security.cert.CertPathValidatorException: Response is unreliable: its valid interval is out-of-date
- flutter - 如何将 ColorTween 动画添加到 TabBar?
- html - 粘性第一行和第一列没有滚动溢出问题