我正在考虑构建一个Docker Swarm集群。为了保持简单和相对容错的目的,我想过简单地运行3个节点作为管理员。
不使用任何专用工作节点时有哪些权衡取舍?有什么我应该知道的可能不明显吗?
我发现这个Github issue提出了类似的问题,但答案对我来说有点模棱两可。它提到表现可能会更糟。它还提到需要更长时间才能达成共识。在实践中,哪些功能会更慢? “需要更长时间达成共识”实际上会产生什么影响?
答案 0 :(得分:13)
TL;所有经理的利弊作为Swarm的工作人员:
优点:
缺点:
您的问题的完整答案
不使用任何专用工作节点时有哪些权衡取舍?有什么我应该知道的可能不明显吗?
使用仅限工作者的节点没有硬性要求。如果你正在部署一个解决方案,你知道你需要什么资源,并且服务/任务的数量通常是相同的,那么只有三个经理做完所有工作的Swarm都没有错,只要你考虑过这三个受影响的地区:
其他问题:
在实践中,哪些功能会慢一些? “需要更长时间达成共识”实际上会产生什么影响?
管理人员在管理员选择新领导人时,会有更多经理人更长时间。虽然没有领导者,但Swarm处于只读状态,无法启动新的副本任务,也不会发生服务更新。任何失败的容器都不会自动恢复,因为Swarm管理器无法正常工作。您正在运行应用程序,入口路由网格等等仍然可以正常运行。管理者健康和领导者选举的很大一部分性能与所有经理节点之间的网络延迟有关,与管理者的数量一样多。这就是为什么Docker通常建议单个Swarms管理器都在同一个区域,这样他们就可以在彼此之间进行低延迟的往返。这里没有硬盘规则。如果您在管理人员和测试失败之间测试200毫秒的延迟,并且对领导者选举的结果和速度很好,那就很酷。
背景资料:
答案 1 :(得分:0)
这一切都取决于构建集群的目标。出于开发目的,您可以将工作节点用作管理器。真正关注的是扩展,如果您觉得您的微服务基础架构将继续增长,那么请考虑将工作站和管理器节点分开,以便轻松扩展。
您的设置的优点是:
易于管理
设置高度可用 - 3个节点表示容错1
缺点是:
不适合扩展,容器计算需求意味着添加更多工作节点。
其他管理器节点会降低写入性能,因为更多节点必须确认更新群集状态的提议。这意味着更多的网络往返流量会导致服务出现性能问题 如果您的dockerized应用程序与主机系统混淆,这将影响管理器服务。 Swarm任务将继续运行,但无法添加,更新或删除swarm节点,无法启动,停止,移动或更新新任务或现有任务。隔离经理和员工服务更安全。