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. LeetCode 142. 环形链表 II(Linker List Cycle II)

    题目描述 给定一个链表,返回链表开始入环的第一个节点. 如果链表无环,则返回 null. 说明:不允许修改给定的链表. 进阶: 你是否可以不用额外空间解决此题? 解题思路 分为三步: 首先判断是否存在 ...

  2. Git客户端TortoiseGit下载、安装及汉化

    本篇经验将和大家介绍Git客户端TortoiseGit下载.安装及汉化的方法,希望对大家的工作和学习有所帮助! TortoiseGit下载和安装   1 TortoiseGit是Windows下最好用 ...

  3. SQLServer-设置-Table:阻止保存要求重新创建表的更改

    ylbtech-SQLServer-设置-Table:阻止保存要求重新创建表的更改 1.返回顶部 ·不允许保存更改,阻止保存要求重新创建表的更改 · 2.返回顶部 · https://jingyan. ...

  4. char与varchar的区别

    char的长度是不可变的,而varchar的长度是可变的,也就是说, 定义一个char[10]和varchar[10],如果存进去的是‘csdn’, 那么char所占的长度依然为10, 除了字符‘cs ...

  5. linux常用命令(19)find xargs

    在使用 find命令的-exec选项处理匹配到的文件时, find命令将所有匹配到的文件一起传递给exec执行.但有些系统对能够传递给exec的命令长度有限制,这样在find命令运行几分钟之后,就会出 ...

  6. jQuery页面加载完毕事件及jQuery与JavaScript的比较

    1.jQuery概述 jQuery是一个JavaScript库,它集成了JavaScript.DOM.CSS和Ajax,简化了JavaScript编程,提倡write less, do more. 2 ...

  7. 异常之【You have an error in your SQL syntax】

    异常如下: ### Error updating database.  Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException ...

  8. PHP进阶之路 -- 02 面向对象

    PHP进阶之路-- 之 “面向对象” 基础 概念 类的介绍和定义 类的属性 类常量 类的自动加载 构造函数和析构函数 访问控制 对象继承 范围解析操作符 static静态关键字 抽象类 对象接口 Tr ...

  9. H5中调起微信这么实现,如果未安装则提示未安装

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name ...

  10. NJCTF (easycrack)

    安装app查看.一个输入框,输入随便输入显示Try again. 放入JEB反编译. 关于输入框监听是第一次见,具体可以看看这个博客https://www.jianshu.com/p/f976c677 ...