我想知道如何配置此工具以从最少数量的节点开始,并在需要时增加到最多数量的节点。
我应该使用其他工具还是 docker swarm 可以为我解决这个问题?
请您参考如下方法:
简答 :目前没有简单的方法可以用 Docker Swarm 做到这一点。
Docker Swarm(或 Swarm 模式)不支持 自动缩放 开箱即用的机器。您需要使用另一种解决方案,例如 docker-machine
在您的基础架构上创建机器(使用 docker)并将它们链接到现有的 Swarm 集群(使用 docker swarm join
)。
这将涉及大量脚本,但其想法是监控集群的 CPU/内存/网络使用情况(使用 top
或 monit
),一旦超过阈值(比如总集群资源的 70%),您触发脚本调用 docker-machine
扩展集群。使用相同的想法,您还可以按比例缩小 排水和 移除 节点(最好是 Agent
节点)来自现有的 swarm 集群,一旦您低于下限阈值。
如果您想使用此标准,您需要确保监控持续的资源使用情况,否则您的基础设施会因资源使用情况的频繁和突然变化而产生和破坏节点。
您可以为集群中的机器定义一个下限和一个上限,以控制一切。
请注意,Swarm 至少需要 3 Manager
节点(推荐 5 个)来维护分布式共识算法的法定人数。所以最小推荐下限为 5 个节点 (您可以使用 Agent
节点进行扩展,因为服务正在逐步使用资源)。
某种程度上,你也可以看看Docker InfraKit或 Terraform用于基础设施自动化和健康监控。
Update: There is now a promising cross-platform autoscaler that supports Swarm Mode task auto-scaling: Orbiter. Although still nothing out-of-the-box yet for service/machine autoscaling.