使用 Terraform 关闭/打开 Elastic Beanstalk 负载均衡器?
Posted
技术标签:
【中文标题】使用 Terraform 关闭/打开 Elastic Beanstalk 负载均衡器?【英文标题】:Toggle Elastic Beanstalk load balancer off/on with Terraform? 【发布时间】:2019-10-25 02:38:05 【问题描述】: 负载平衡器按小时收费 (重新)创建 EB 需要上传到 S3 并且需要很长时间那么对于闲置的 EB(仅在开发期间使用),就像 EC2 可以缩减到 0 个实例一样,如何关闭负载均衡器(然后再重新打开)?是否可以使用 Terraform,以便检测到 ALB 的缺失并通过应用重新创建?
我已经在空闲时终止了 EB 下的 EC2 实例,但我未使用的负载均衡器一直在向我收费!理想情况下,通过删除负载均衡器,我在空闲时间的成本为零。但是当我在需要时去重新创建 ALB 时,Terraform 状态并没有显式跟踪 ALB(它由 EB 环境管理),所以它不会被重新创建。
我知道Elastic Beanstalk environments can be created without load balancers。我希望 AWS 的“可扩展性”能够提供一种更简洁、更快速的方法来切换负载均衡器的存在除了重新创建整个 EB 环境。
【问题讨论】:
这不可能简单,因为 AWS 不提供该功能。 如果您在空闲时间需要零成本,您是否应该使用新设计的无服务器?考虑一下,而不是与当前情况作斗争。 @BMW 在 10 年或更短的时间内我打赌你的建议将是通用解决方案,但截至 2019 年无服务器设计(例如使用 Lambda、API 网关或 AppSync)仍然可能存在延迟问题,通常超过1 秒(除了“冷启动”问题)。 好点!无服务器无法涵盖许多对延迟敏感的情况。如果这是您选择 Elastic beanstalk 的主要原因,那么似乎没有其他选择可以避免使用 ALB/ELB 【参考方案1】:您可以暂时禁用所有需要花钱的 Elastic Beanstalk 基础设施,让您可以免费暂停应用程序,直到您准备好重新打开它,而无需从头开始销毁和重新创建它。
通过 EB 环境配置:
-
(暂时)降级
Capacity
来自:Environment type: load balancing, auto scaling
至:Single-Instance Environment
删除它生成的单个实例和静态 ip
为了安全起见,请确保您的自动扩缩组配置最多允许 0
个实例
这样跑几个月,一分钱都不用……
然后,您可以快速将一切恢复原状:
-
重新打开负载平衡并确保自动扩缩组的实例计数不为零。
terraform refresh
导入自动缩放目标的新实例 ID
照常使用 terraform(例如 plan
、apply
)
【讨论】:
以上是关于使用 Terraform 关闭/打开 Elastic Beanstalk 负载均衡器?的主要内容,如果未能解决你的问题,请参考以下文章
如何通过 Terraform 部署 Open*** EC2 实例? [关闭]
用于管理 AWS 无服务器基础设施的 Terraform 或 cloudformation [关闭]
无法与我的 EC2 实例建立 Internet 连接 [使用 terraform 部署,并为 ACL、安全组、Internet GW 打开了 80 个 http 端口]