terraform - 如何确保 ASG(Auto Scaling Group)在 Launch 配置中的每次更改都替换现有实例
问题描述
基础设施是使用 terraform 代码提供的。在我们的 AWS 环境中,我们为对存储库的每次提交创建了一个新的 AMI。现在,如果我们想使用这个新的 AMI 为 ALB 后面的 Web 服务器配置自动缩放
- 我们如何确保 ASG 用 Launch 配置中的每次更改替换现有实例,因为我相信,一旦您更改 LC,只有使用新 AMI 和现有那些没有被替换。
此外,您是否知道我们如何以编程方式(通过 terraform)获取在任何时间点运行的服务器数量,以防自动缩放?
任何帮助都在这里受到高度赞赏。谢谢!
解决方案
在大多数情况下,这非常简单,并且网络上已经有十几个实现。
棘手的部分是在 LC 和 ASG 上表达“create_before_destroy”字段。您还应该参考 ASG 资源中的 LC。这样,一旦您的 LC 发生更改,您将触发一个创建新 ASG 的工作流程,以替换您当前的 ASG。
此外,您是否知道我们如何以编程方式(通过 terraform)获取在任何时间点运行的服务器数量,以防自动缩放?
这取决于上下文。如果你有一个静态数字很容易,你可以在你的模块中定义它并坚持下去。如果它是关于传递先前的 ASG 值,那么上面的指南中将再次描述该方式:) 您需要编写一个自定义外部处理程序,以了解您在目标组周围有多少“瞬间”运行的实例。当然可能会有一个新的 AWS REST API 添加,让您有机会查询所有目标组健康检查属性并获得它们的总和(不知道)。然后,您可能会添加一些自定义规则来扩展策略。
旁注:在示例中,部署是使用 ELB 进行的。
推荐阅读
- unity3d - 为什么场景摄像机在播放时会改变位置和旋转
- html - 在 Shiny 中使用 renderDataTable 扩展列的宽度
- reactjs - React / Redux为什么不是按调用顺序触发的thunk
- python - 正则表达式 - 计算最大数量的短串联重复
- tensorflow - 解码器不接受双向编码器的输出
- r - 使用 purrr map 跨多个子集执行统计测试
- r - 在 r 中写出 .dat 文件
- python - 在 pandas Dataframe 中调用一对索引值时遇到问题
- css - 当父级绝对定位时,在 Firefox 中浮动左错误?
- javascript - 从 SELECT 流式传输结果以同时运行多个 UPDATES