0

如何在一个节点上禁止使用多个容器:Docker、Swarm、Compose?例如,我有 5 个节点,我想部署 3 个副本一些服务,我希望这个副本将在不同的节点上。

4

1 回答 1

0

Docker 的 swarm 模式当前默认采用 HA 调度策略,因此只要有多个可用节点来调度任务,就无需将服务分布在多个节点上。约束、内存限制和中断可能会影响必须在其上安排任务的可用节点。HA 调度程序首先搜索具有最少任务实例的候选节点(通常为 0,除非您的副本多于节点),然后通过优先选择任务较少的节点来打破结果列表。

为了进一步控制在多个节点上展开任务,我建议查看最近版本中添加的放置首选项。我不相信这已经把它变成了堆栈和 compose 文件,但我希望这只是时间问题(新的 swarm 模式功能首先被引入docker service命令行,后来添加到更高级别的抽象中)。放置首选项允许您标记节点以指示更高级别的拓扑,例如通用机架、交换机或数据中心。并且放置首选项支持拓扑感知调度,可以将任务分散到具有所需标签的唯一值的节点之间。因此,如果您有两个独立的机架,每个机架有 5 个节点,如果没有拓扑感知调度,一切都可以安排在一个机架上,而使用拓扑感知调度,它可以将一半的任务放在每个机架上。

于 2017-08-21T15:38:55.887 回答