Swarm 可以在 Service 创建和运行过程中灵活的通过 --replicas 调整容器副本数量,内部调度器则会根据当前集群的资源使用情况在不同的node 上启停容器,这就是 Service 默认的 replicated mode 。在此模式下,node 上运行的副本数有多有少,一般情况下,资源更丰富的node 运行的副本数更多,反之亦然。
 
除了 replicated mode ,Service 还提供了一个 global mode ,其作用是强制在每个node上都运行一个且最多一个副本。
 
global mode 特别适合需要运行daemon 的集群环境。比如要收集所有容器的日志,就可以用 global mode 创建 Service,在所有 node 上都运行 gliderlabs/logspout 容器,及时之后有新的node加入,swarm 也会自动在新的node上启动一个 gliderlabs/logspout 副本
 
root@host03:~# docker service create --mode global --name bbox busybox sleep 99999
fvbo6fpu7gb29qi0kl2ausunt
overall progress: 2 out of 2 tasks
asn5ufnogzky: running   
hvt2ez9e7zvq: running   
verify: Service converged
root@host03:~# docker service ps bbox
ID                  NAME                             IMAGE               NODE                DESIRED STATE       CURRENT STATE            ERROR               PORTS
9zo4pzhl7ysf        bbox.asn5ufnogzkyqigk4mizatoer   busybox:latest      host02              Running             Running 10 seconds ago                       
xuxima4u6am4        bbox.hvt2ez9e7zvqm2hz8nix1eke7   busybox:latest      host01              Running             Running 10 seconds ago                       
root@host03:~# docker node ls
ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS      ENGINE VERSION
hvt2ez9e7zvqm2hz8nix1eke7     host01              Ready               Active                                  18.09.6
asn5ufnogzkyqigk4mizatoer     host02              Ready               Active                                  18.09.6
h6rzavsz2vjxstwj3pytiebjb *   host03              Ready               Drain               Leader              18.09.6
root@host03:~# docker node update host03 --availability active
host03
root@host03:~# docker node ls
ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS      ENGINE VERSION
hvt2ez9e7zvqm2hz8nix1eke7     host01              Ready               Active                                  18.09.6
asn5ufnogzkyqigk4mizatoer     host02              Ready               Active                                  18.09.6
h6rzavsz2vjxstwj3pytiebjb *   host03              Ready               Active              Leader              18.09.6
root@host03:~# docker service ps bbox
ID                  NAME                             IMAGE               NODE                DESIRED STATE       CURRENT STATE                ERROR               PORTS
j4bmhr5yqokk        bbox.h6rzavsz2vjxstwj3pytiebjb   busybox:latest      host03              Running             Preparing 5 seconds ago                          
9zo4pzhl7ysf        bbox.asn5ufnogzkyqigk4mizatoer   busybox:latest      host02              Running             Running about a minute ago                       
xuxima4u6am4        bbox.hvt2ez9e7zvqm2hz8nix1eke7   busybox:latest      host01              Running             Running about a minute ago          
 
root@host03:~# docker node update host03 --availability drain
host03
root@host03:~# docker node ls
ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS      ENGINE VERSION
hvt2ez9e7zvqm2hz8nix1eke7     host01              Ready               Active                                  18.09.6
asn5ufnogzkyqigk4mizatoer     host02              Ready               Active                                  18.09.6
h6rzavsz2vjxstwj3pytiebjb *   host03              Ready               Drain               Leader              18.09.6
root@host03:~# docker service ps bbox
ID                  NAME                             IMAGE               NODE                DESIRED STATE       CURRENT STATE                     ERROR               PORTS
j4bmhr5yqokk        bbox.h6rzavsz2vjxstwj3pytiebjb   busybox:latest      host03              Shutdown            Shutdown less than a second ago                       
9zo4pzhl7ysf        bbox.asn5ufnogzkyqigk4mizatoer   busybox:latest      host02              Running             Running 3 minutes ago                                 
xuxima4u6am4        bbox.hvt2ez9e7zvqm2hz8nix1eke7   busybox:latest      host01              Running             Running 3 minutes ago                                 
 
上面实验验证了 global mode 下,当有新的node加入时(这里用host03 解除 Drain演示),会自动启动一个副本。而当host03再次标记为 Drain时,host03上的副本会被shutdown
 
无论我们采用哪种mode ,我们都无法精细的控制副本运行在哪个节点上。

105、Replicated Mode VS Global Mode (Swarm12)的更多相关文章

  1. 前端MVC Vue2学习总结(二)——Vue的实例、生命周期与Vue脚手架(vue-cli)

    一.Vue的实例 1.1.创建一个 Vue 的实例 每个 Vue 应用都是通过 Vue 函数创建一个新的 Vue 实例开始的: var vm = new Vue({ // 选项 }) 虽然没有完全遵循 ...

  2. 下载远程(第三方服务器)文件、图片,保存到本地(服务器)的方法、保存抓取远程文件、图片 将图片的二进制字节字符串在HTML页面以图片形式输出 asp.net 文件 操作方法

    下载远程(第三方服务器)文件.图片,保存到本地(服务器)的方法.保存抓取远程文件.图片   将一台服务器的文件.图片,保存(下载)到另外一台服务器进行保存的方法: 1 #region 图片下载 2 3 ...

  3. FastDFS的配置、部署与API使用解读(2)以字节方式上传文件的客户端代码(转)

    本文来自 诗商·柳惊鸿 Poechant CSDN博客,转载请注明源地址:FastDFS的配置.部署与API使用解读(2)上传文件到FastDFS分布式文件系统的客户端代码 在阅读本文之前,请您先通过 ...

  4. DDD 领域驱动设计-谈谈 Repository、IUnitOfWork 和 IDbContext 的实践(3)

    上一篇:<DDD 领域驱动设计-谈谈 Repository.IUnitOfWork 和 IDbContext 的实践(2)> 这篇文章主要是对 DDD.Sample 框架增加 Transa ...

  5. DDD 领域驱动设计-谈谈 Repository、IUnitOfWork 和 IDbContext 的实践(2)

    上一篇:<DDD 领域驱动设计-谈谈 Repository.IUnitOfWork 和 IDbContext 的实践(1)> 阅读目录: 抽离 IRepository 并改造 Reposi ...

  6. [自娱自乐] 4、超声波测距模块DIY笔记(四)——终结篇·基于C#上位机软件开发

    前言 上一节我们已经基本上把超声波硬件的发射和接收模块全部做好了,接下来我们着手开发一个软硬结合的基于C#的平面定位软件! 目录 一.整体思路 二.效果提前展示 2-1.软件部分展示 2-2.硬件部分 ...

  7. [自娱自乐] 3、超声波测距模块DIY笔记(三)

    前言 上一节我们已经研究了超声波接收模块并自己设计了一个超声波接收模块,在此基础上又尝试用单片机加反相器构成生成40KHz的超声波发射电路,可是发现采用这种设计的发射电路存在严重的发射功率太低问题,对 ...

  8. RTMP、RTSP、HTTP视频协议详解(转)

    一.RTMP.RTSP.HTTP协议 这三个协议都属于互联网 TCP/IP 五层体系结构中应用层的协议.理论上这三种都可以用来做视频直播或点播.但通常来说,直播一般用 RTMP.RTSP.而点播用 H ...

  9. .NET/ASP.NETMVC Model元数据、HtmlHelper、自定义模板、模板的装饰者模式(一)

    .NET/ASP.NETMVC Model元数据.HtmlHelper.自定义模板.模板的装饰者模式(一) 阅读目录: 1.开篇介绍 2.Model与View的使用关系(数据上下文DataContex ...

随机推荐

  1. Java Jsch SFTP 递归下载文件夹

    Java Program For Downloading Folder Content recursively from SFTP Server How to download folder from ...

  2. PM2工作原理

    PM2工作原理 要理解pm2就要理解god和santan的关系,god和santan的关系就相当于盖娅和黑底斯在pm2中的01世界中,每一行代码每一个字节都安静的工作god就是Daemon进程 守护进 ...

  3. linux 之 pthread_create 实现类的成员函数做参数

    在C++的类中,普通成员函数不能作为pthread_create的线程函数,如果要作为pthread_create中的线程函数,必须是static ! 在C语言中,我们使用pthread_create ...

  4. 理解MQ

    1.定义 2.消息队列比较 参考文章:https://www.jianshu.com/p/068b8d1610ee

  5. 发布机制-A/B 测试:百科

    ylbtech-发布机制-A/B 测试:百科 AB测试是为Web或App界面或流程制作两个(A/B)或多个(A/B/n)版本,在同一时间维度,分别让组成成分相同(相似)的访客群组(目标人群)随机的访问 ...

  6. Web jsp开发自学——ajax+servlet+echarts+json+gson 实现ajax传输servlert和echarts的数据,可视化结果

    感谢下面的博主,我学习的博客有: https://blog.csdn.net/ITBigGod/article/details/81023802  Jsp+Servlet+Echarts实现动态数据可 ...

  7. 数据库高级数据库学习--上机练习5(Transact-SQL)

    上机练习5 启动SQL Server 2008中的 SQL Server Management Studio,恢复数据库ClassDB: 采用Transact-SQL程序设计完成以下练习: . 求1到 ...

  8. Autofac实现AOP拦截

    本文主要是详解一下在ASP.NET Core中,采用替换后的Autofac来实现AOP拦截. Aspect Oriented Programming(AOP),面向切面编程,是一个比较热门的话题.AO ...

  9. Opencv中的WMesh

    费了半天劲,终于把这个WMesh类搞懂了,可惜效果不佳,比Matlab中的mesh差多了. 使用WMesh前,需要有一个Mesh对象,Mesh是三维数据点的基本几何信息.颜色信息.索引信息等集成的对象 ...

  10. python-爬虫-bs4-BeautifulSoup

    代码的使用流程: 核心思想:将html文档转换成Beautiful对象,然后调用该对象中的 属性和方法进行html文档指定内容的定位查找. 1 导包:from bs4 import Beautiful ...