返回介绍

Swarm模式工作原理 - 节点工作原理

发布于 2020-09-14 13:05:51 字数 2051 浏览 1192 评论 0 收藏 0

Docker Engine 1.12中的Swarm模式帮助我们创建Docker Engine集群,我们称之为Swarm。一个Swarm是由安装了Docker Engine的物理机或者虚拟机节点组成,这些节点上的Docker Engine都采用Swarm模式运行。

Swarm集群中的节点分为两类:manager和worker。

节点工作原理 - 图1

Manager节点

Manager节点用来处理集群管理任务:

  • 维护集群状态

  • 调度service

  • 提供swarm模式HTTP API 端点

Manager通过Raft的实现,来使Swarm的整体维持在一个一致的内部状态上,service则运行在这个一致的内部状态之上。为了测试的目的,我们可以使用单独manager节点。如果单独的manager节点出现问题,service依然会一直运行,但是这样就需要创建一个新的集群来恢复一致的内部状态维护。

利用Swarm模式的容错特性,推荐使Swarm的节点为奇数个,来实现高可用的要求。当采用多个manager节点时,我们就可以在不停止集群运行的情况下恢复停止运行的manager节点。

  • 3个manager节点最大容错允许1个manager不可用

  • 5个manager节点最大容错允许2个manager不可用。

  • N个manager节点最大容错允许(N-1)/2个manager节点不可用。

  • 建议最大manager节点数为7个。

    重要提示:不限制的增加manager节点并不会增加可扩展性或者增加执行性能。通常还会起到相反的作用。

Worker节点

Worker节点也是Docker Engine的实例,目的是用来运行Container。Worker节点不会像Manager节点那样提供集群的管理、任务调度和API。

可以创建仅有一个manager节点的Swarm,但是不能在没有manager节点的前提下,创建Worker节点。在默认情况下,manager节点同时也是一个worker节点。在一个manager节点的集群中,执行docker service create命令,调度器会将所有的task调度在本地Docker Engine上执行。

要阻止调度器将task分配到manager节点上执行,就绪要将manager节点的可用性状态设置成DRAIN。调度器会停止DRAIN节点上的task,转移到其他状态为ACTIVE的节点上继续运行停止的task。并且调度器不会再将新的task分配给DRAIN状态的节点。

可以查看docker node update命令的帮助,学习如何修改节点的可用性状态。

改变节点角色

我们可以通过docker node promote来将一个worker节点修改成一个manager节点。例如,某些维护需要,我们将停止一个manager节点,这时我们可以将某一个正在运行的worker节点变成manager节点,来代替停止的那个manager节点。详情请参考:Node promote

同样也可将一个manager节点改成一个worker节点。详情请参考:Node demote

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文