docker - 具有/Terraform Digitalocean负载平衡的Docker Swarm模式。如何自动缩放?

标签 docker digital-ocean devops docker-swarm terraform

因此,通过本文,我已经能够回答我的大多数问题

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中正确表达该概念?

任何朝着正确方向的指针都值得赞赏,这时我很困在转向的位置。 terraterra不适用于这种类型的设置吗?

最佳答案

我相信这个问题与 digital ocean 无关。您可以为Digital Ocean构建的解决方案可以对所有其他云提供商使用,只要它们提供了用于创建/销毁节点的API。

因此,要么切换到具有内置自动缩放功能的AWS,要么构建自己的解决方案。这是很多工作,但设置起来并不难。您需要对群集有完全的可见性,例如需要从节点注册表/发现跟踪所有群集节点的监视系统,然后收集指标并触发警报。

您可以将警报系统配置为运行Terraform作业,Ansible剧本,通过HTTP api触发Jenkins作业,...将根据指标扩展/扩展基础架构。

关于docker - 具有/Terraform Digitalocean负载平衡的Docker Swarm模式。如何自动缩放?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46188557/

相关文章:

Azure函数应用部署错误 "Encountered an error (ServiceUnavailable) from host runtime. (CODE: 400)"

docker - docker-container 中的 inotifywait 不注册更改

logging - 自动日志轮转未执行

networking - 如何访问 docker 自定义桥接网络中的端口

将用户添加到存储库时触发 Github 操作

jenkins - 从源代码存储库自动创建 Jenkins 作业 - 无 Jenkins 交互

docker - 为Mesh/Docker激活SSL

docker - 推送到端口转发的 docker 注册表

ruby-on-rails - 如何在 digital ocean 上一键部署rails app?

php - session 大约每 30 分钟下降一次