我正在考虑创建一个Docker Swarm集群。为了保持简单和相对容错性,我考虑仅运行3个节点作为管理节点。
如果不使用任何专用的工作节点,会有哪些折衷方案?有什么需要注意的事项可能并不明显?
我找到了这个Github问题,它提出了类似的问题,但答案对我来说有点模糊。它提到性能可能会更差。它还提到,达成共识需要更长的时间。实际上,哪些功能会变慢?“需要更长时间才能达成共识”会对什么产生影响?
我正在考虑创建一个Docker Swarm集群。为了保持简单和相对容错性,我考虑仅运行3个节点作为管理节点。
如果不使用任何专用的工作节点,会有哪些折衷方案?有什么需要注意的事项可能并不明显?
我找到了这个Github问题,它提出了类似的问题,但答案对我来说有点模糊。它提到性能可能会更差。它还提到,达成共识需要更长的时间。实际上,哪些功能会变慢?“需要更长时间才能达成共识”会对什么产生影响?
TL;DR Swarm中所有管理器作为工作节点的优缺点:
优点:
缺点:
回答你的问题:
如果不使用任何专用工作节点,有哪些权衡?有没有什么我应该注意但可能不明显的事情?
使用仅工作节点没有硬性要求。如果您部署的解决方案知道所需的资源,并且服务/任务的数量通常相同,则使用仅三个管理器执行所有工作的Swarm没有问题,只要您考虑了以下三个受影响的区域:
其他问题:
实际上,哪些功能会变慢?“需要更长时间达成共识”会对什么产生影响?
更多的管理者=当一个管理者出现问题时,需要更长的时间才能选出新的领导人。在没有领导人的情况下,Swarm处于只读状态,无法启动新的副本任务或进行服务更新。任何失败的容器都不会自动恢复,因为Swarm管理者无法工作。您运行的应用程序、入口路由网格等所有功能仍然可以正常使用。管理者健康和领导者选举的大部分性能与所有管理者节点之间的网络延迟紧密相关,而不仅仅是管理者数量。这就是为什么Docker通常建议单个Swarm管理者全部位于同一区域,以便它们之间进行低延迟往返。这里没有硬性规定。如果您测试了管理者之间的200ms延迟并测试了故障,并且对领导者选举的结果和速度感到满意,那就很好。
背景信息: