所以我已经通过这篇文章回答了我的大部分问题
https://knpw.rs/blog/docker-swarm-terraform/
我的问题是从本文结束的角度出发,如何根据 CPU使用率和网络使用情况等指标进行自动扩展?
例如,如果我的CPU使用率在所有节点上超过70%,则创建一个新实例,如果CPU使用率低于30%,则销毁实例。 当然,这些必须是持续使用,例如所有节点的CPU使用率超过70%超过5分钟。
我对此做了一些研究,但不是很清楚。例如, Digital Ocean有一个监控服务,如果CPU使用率异常高(或网络负载),可以根据您设置的阈值向您发送电子邮件。 问题是 他们没有WebHook支持,所以我无法将这些信号发送到我的应用程序。
我的一个想法是为这些通知设置特殊电子邮件并查看电子邮件。 根据电子邮件回复,我会创建一个修改过的terraform文件并'terraform apply'
来修改基础架构?
我不确定这是否是好的形式因为terraform是代码作为基础设施,但是如果基础设施被设计为创建新实例并且根据CPU使用率一直销毁实例或网络使用我不确定你如何在地形中正确传达这个概念?
任何指向正确方向的人都会受到赞赏,我在这一点上仍然很难停在哪里。也许terraform不适合这种类型的设置?
答案 0 :(得分:1)
我认为这个问题与数字海洋无关。您可以为Digital Ocean构建的解决方案可以为所有其他云提供商提供服务,只要它们提供用于创建/销毁节点的API。
因此,要么切换到具有内置自动缩放功能的AWS,要么构建自己的解决方案。这是很多工作,但设置并不难。您需要在群集上具有完全可见性,例如监视系统,该系统从节点注册表/发现跟踪所有群集节点,然后收集指标并触发警报。
您可以配置警报系统以运行您的Terraform作业,安全播放手册,通过HTTP api触发Jenkins作业,......这将根据指标扩展/缩小您的基础架构。