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. 基本CSS布局

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

  2. Python3并发写文件

    使用python2在进行并发写的时候,发现文件会乱掉,就是某一行中间会插入其他行的内容. 但是在使用python3进行并发写的时候,无论是多进程,还是多线程,都没有出现这个问题,难道是python3的 ...

  3. Centos 安装freesurfer fsl matlab 等软件---转自网络

    freesurfer: freesurfer好安装,只需要下载官网源码包,如freesurfer5.3.tar.gz 下载至本地,解压: tar zxvf freesurfer5.3.tar.gz - ...

  4. win10搜索框突然不能使用了

    备忘: win10搜索不出来了,使用以下方法恢复了,备忘下 1,首先打开任务管理器 重新启动wservice服务 2.发现这时候搜索依然不能使用 然后重新启动explorer.exe (1)右键关闭该 ...

  5. css样式重置表

    /* http://meyerweb.com/eric/tools/css/reset/ v2.0 | 20110126 License: none (public domain) */ html, ...

  6. Windows下Elasticsearch安装问题处理

    按ES官网的安装方法正常安装就行了.可能遇到的其他问题. 1.报jvm.dll不存在. 只需要重新安装JDK过后,会有jdk1.8.0_73目录和jre1.8.0_73目录.因为java就喜欢玩这种“ ...

  7. WPF Visifire 图表控件

    Visifire WPF 图表控件 破解 可能用WPF生成过图表的开发人员都知道,WPF虽然本身的绘图能力强大,但如果每种图表都自己去实现一次的话可能工作量就大了, 尤其是在开发时间比较紧的情况下.这 ...

  8. MEF等Ioc框架引起内存泄露-PartCreationPolicy

    对象的创建可以使用new,也可以使用IOC架如:castle.MEF等,IOC创建的对象的生命周期,可能IOC负责管理,使用框架的开发者如果不弄清楚可能会造成内存泄露问题. 这些内存泄露问题并不是IO ...

  9. 阶段3 3.SpringMVC·_04.SpringMVC返回值类型及响应数据类型_2 响应之返回值是String类型

    返回字符串 新建一个response的页面 新建后台Controller类 视图解析器配置的前缀地址 是WEB-INF下的pages下的页面. 创建pages文件夹在下面创建success.jsp页面 ...

  10. C语言:“冒泡排序”与“二分法”

    1.冒泡排序: what:将元素进行两两比较,大的(小的)向后排. when:数组中有多个元素,需要进行比较排序比较的时候使用. how:N个数字来排队,两两比较小靠前.(升序) 外层循环:N-1(控 ...