Docker 群模式 W/Terraform 数字海洋负载平衡。如何自动缩放?

Docker Swarm Mode W/Terraform Digital Ocean Load Balancing. How to Auto Scale?

所以我已经能够通过这篇文章在这里回答我的大部分问题

https://knpw.rs/blog/docker-swarm-terraform/

我的问题是从本文结束时开始,我如何根据 CPU 使用情况 网络使用情况等指标进行自动缩放?

例如,如果我的 CPU 使用率在所有节点上都超过 70%,则创建一个新实例,如果 CPU 使用率低于 30%,则销毁一个实例。 当然,这些必须是持续使用,例如所有节点 运行 超过 70% CPU 使用超过 5 分钟。

我对此做了一些研究,但不是很清楚。例如 Digital Ocean 有一个监控服务,如果CPU使用率异常高(或网络负载),它可以根据您设置的阈值向您发送电子邮件。 问题是 他们还没有 WebHook 支持 所以我无法将这些信号发送到我的应用程序。

我的一个想法是为这些通知设置一个特殊的电子邮件并查看电子邮件。 然后根据电子邮件回复我创建了一个修改后的 terraform 文件并'terraform apply'它来修改基础设施?

我不确定这是否是好的形式因为 terraform 的要点是代码作为基础设施,但是如果基础设施被设计为创建新实例并始终基于 CPU 使用或网络使用 我不确定您如何在 terraform 中正确传达该概念?

任何指向正确方向的指示都将受到赞赏,我现在很困惑该转向哪里。也许 terraform 不适合这种类型的设置?

我认为这个问题与 Digital Ocean 无关。您可以为 Digital Ocean 构建的解决方案适用于所有其他云提供商,只要他们为 creating/destroying 个节点提供 API。

因此,要么切换到具有内置自动缩放功能的 AWS,要么构建自己的解决方案。这是很多工作,但设置起来并不难。您需要像监控系统一样全面了解您的集群,从一个节点跟踪所有集群节点 registry/discovery,然后收集指标并触发警报。

您可以将警报系统配置为 运行 您的 Terraform 作业、ansible 剧本、通过 HTTP api 触发 Jenkins 作业,...这将扩展 in/out 您的基础设施在指标上。