我正在考虑构建一个 Docker Swarm 集群。为了让事情既简单又相对容错,我想简单地运行 3 个节点作为管理器。
不使用任何专用工作节点时有什么权衡?有什么我应该注意的可能不明显的吗?
我找到了这个 Github issue这问了一个类似的问题,但答案对我来说有点模棱两可。它提到性能可能会更糟。它还提到达成共识需要更长的时间。在实践中,哪些功能会更慢? “需要更长的时间才能达成共识”实际上会影响什么?
最佳答案
TL;DR 作为 Swarm worker 的所有管理者的利弊:
优点:
缺点:
完整解答您的问题
What are the trade-offs when not using any dedicated worker nodes? Is there anything I should be aware of that might not be obvious?
使用仅工作节点没有硬性要求。如果你正在部署一个解决方案,你知道你需要什么资源,并且服务/任务的数量通常是相同的,那么只要你考虑过这三个,一个只有三个经理做所有工作的 Swarm 没有错受影响的地区:
其他问题:
In practice, what functionality would be slower? And what does "take longer to reach consensus" actually affect?
更多的管理人员 = 管理人员倒台时选举新领导的时间更长。虽然没有领导者,但 Swarm 处于只读状态,无法启动新的副本任务,也不会发生服务更新。任何失败的容器都不会自动恢复,因为 Swarm 管理器无法工作。您正在运行应用程序、入口路由网格等,所有这些都仍然有效。管理器健康和领导者选举的很大一部分性能与所有管理器节点之间的网络延迟有关,与管理器的数量一样多。这就是为什么 Docker 通常建议单个 Swarm 管理器都在同一个区域中,这样他们之间的往返行程就会低延迟。这里没有硬性规则。如果您测试管理器和测试失败之间的 200 毫秒延迟并且对领导者选举的结果和速度感到满意,那很酷。
背景资料:
关于docker-swarm - 将所有 Docker Swarm 节点作为管理器运行的利弊?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48853473/