群集管理器节点处理集群管理任务,如:
1)保持集群状态
2)调度服务
3)服务群模式HTTP端点
您可以从任何管理器节点执行任何- docker swarm
- docker node
- docker service
命令。
应用程序运行在工作节点上,但它们不具有容错能力。因为工作节点不具有容错能力。
这意味着,如果一个工作节点发生故障,那么管理器将启动另一个工作节点。
群集群设计迫使开发人员设计运行在worker节点上的无状态应用程序。
容错在经理级别保持,以了解集群的状态。
为什么在管理节点中容错,而在工作节点中不容错?
发布于 2019-09-08 22:27:57
单个管理器节点不具有容错性。毕竟,它只是一台机器(虚拟的或物理的)。这就是为什么您有多个管理人员,他们共享国家。如果一个管理器出现故障,其余的管理器将使集群继续运行。
类似地,单个工作节点不具有容错性。毕竟,这只是一台机器。那么,如果硬盘出现故障会发生什么呢?这意味着机器上的任何状态都将丢失。这就是为什么您通常在群中运行应用程序的多个实例,或者使用复制的状态存储(这实际上是管理器节点所做的),或者在群集之外维护状态。
您可能还想看看"12要素“应用程序设计,这将使这些概念更进一步。
发布于 2019-09-08 23:14:48
历史上,他们试图..。有些web服务器作为集群运行,您可以在它们上运行有状态的应用程序。但从个人经验来看,这些服务器很难配置成正常工作,而且由于集群不透明,但充其量是半透明的,应用程序代码仍必须在某种程度上具有集群意识,因此,要使应用程序在这些系统上正确运行,就需要熟练的程序员。还有一些限制(集群中服务器的邻近,等等)。
"Docker方式“更明确,但也更易于向程序员解释,并且限制较少(编程语言、所有节点的物理位置等)。
https://unix.stackexchange.com/questions/539689
复制相似问题