代码之家  ›  专栏  ›  技术社区  ›  Joseph Astrahan

Docker Swarm模式,带地形数字海洋负载平衡。如何自动缩放?

  •  1
  • Joseph Astrahan  · 技术社区  · 7 年前

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

    我的问题是,从本文结束的地方开始,我该如何基于以下指标进行自动缩放: CPU使用率

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

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

    我的一个想法是 为这些通知设置特殊电子邮件 根据电子邮件回复,我创建了一个修改过的地形文件,并 'terraform apply' 是否需要修改基础设施?

    我也不确定这是不是一种好的形式 由于terraform的要点是将代码作为基础设施,但如果基础设施设计为根据CPU使用量或网络使用量创建新实例并随时销毁实例,我不确定您如何在terraform中正确传达这一概念?

    1 回复  |  直到 7 年前
        1
  •  1
  •   elghazal-a    7 年前

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

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

    您可以配置警报系统来运行Terraform作业、ansible playbooks、通过HTTP api触发Jenkins作业,。。。这将根据指标扩展您的基础架构。