replicated vs global mode - 每天5分钟玩转 Docker 容器(105)
Swarm 可以在 service 创建或运行过程中灵活地通过 --replicas
调整容器副本的数量,内部调度器则会根据当前集群的资源使用状况在不同 node 上启停容器,这就是 service 默认的 replicated
mode。在此模式下,node 上运行的副本数有多有少,一般情况下,资源更丰富的 node 运行的副本数更多,反之亦然。
除了 replicated
mode,service 还提供了一个 global
mode,其作用是强制在每个 node 上都运行一个且最多一个副本。
此模式特别适合需要运行 daemon 的集群环境。比如要收集所有容器的日志,就可以 global
mode 创建 service,在所有 node 上都运行 gliderlabs/logspout
容器,即使之后有新的 node 加入,swarm 也会自动在新 node 上启动一个 gliderlabs/logspout
副本。
docker service create \
--mode global \
--name logspout \
--mount type=bind,source=/var/run/docker.sock,destination=/var/run/docker.sock \
gliderlabs/logspout
可以通过 docker service inspect
查看 service 的 mode。
这里是 Global
,如果创建 service 时不指定,默认是 Replicated
。
无论采用 global mode 还是 replicated mode,副本运行在哪些节点都是由 Swarm 决定的,作为用户我们有没有可能精细控制 service 的运行位置呢?
下一节我们来解答这个问题。
书籍:
1.《每天5分钟玩转Docker容器技术》
https://item.jd.com/16936307278.html
2.《每天5分钟玩转OpenStack》
https://item.jd.com/12086376.html
本文转自CloudMan6 51CTO博客,原文链接:http://blog.51cto.com/cloudman/2050054

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
用 Label 控制 Service 的位置 - 每天5分钟玩转 Docker 容器技术(106)
上一节我们讨论了 Service 部署的两种模式:global mode 和 replicated mode。无论采用 global mode 还是 replicated mode,副本运行在哪些节点都是由 Swarm 决定的,作为用户我们有没有可能精细控制 Service 的运行位置呢? 答案是:能,使用 label。 逻辑分两步: 为每个 node 定义 label。 设置 service 运行在指定 label 的 node 上。 label 可以灵活描述 node 的属性,其形式是 key=value,用户可以任意指定,例如将swarm-worker1作为测试环境,为其添加 labelenv=test: dockernodeupdate--label-addenv=testswarm-worker1 对应的,将swarm-worker2作为生产环境,添加 labelenv=prod: dockernodeupdate--label-addenv=prodswarm-worker2 现在部署 service 到测试环境: dockerservicecreate\ --constr...
- 下一篇
验证 Swarm 数据持久性 - 每天5分钟玩转 Docker 容器技术(104)
上一节我们成功将 Rex-Ray Volume 挂载到了 Service。本节验证Failover 时,数据不会丢失。 Scale Up 增加一个副本: dockerserviceupdate--replicas2my_web 运行之前我们先推测一下,理想的结果应该是:swarm 在swarm-worker2上启动第二个副本,同时也将挂载 volumemy_web。 对比一下实际的运行结果: 出现了一点复杂的状况: swarm 首先尝试在swarm-worker2上启动第二个副本,但在 mount volume 失败。 重试了三次都失败了。 最后在swarm-worker1成功启动第二个副本。 mount 失败的原因是:以 VirtualBox 为 backend 的 Rex-Ray volume 不支持同时 attach 到多个 Host。 需要注意:这实际上是 VirtualBox 的限制,而非 Rex-Ray。如果 backend 选择 Ceph RBD 就没有这个问题。 更新 Volume 更新 volume 的内容。 service 返回更新内容,数据已经同步到副本。 当前的...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Red5直播服务器,属于Java语言的直播服务器
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS8编译安装MySQL8.0.19
- CentOS6,CentOS7官方镜像安装Oracle11G
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS7设置SWAP分区,小内存服务器的救世主