上一节我们成功将 Rex-Ray Volume 挂载到了 Service。本节验证 Failover 时,数据不会丢失。

Scale Up

增加一个副本:

docker service update --replicas 2 my_web

运行之前我们先推测一下,理想的结果应该是:swarm 在 swarm-worker2 上启动第二个副本,同时也将挂载 volume my_web

对比一下实际的运行结果:

出现了一点复杂的状况:

  1. swarm 首先尝试在 swarm-worker2 上启动第二个副本,但在 mount volume 失败。

  2. 重试了三次都失败了。

  3. 最后在 swarm-worker1 成功启动第二个副本。

mount 失败的原因是:以 VirtualBox 为 backend 的 Rex-Ray volume 不支持同时 attach 到多个 Host。

需要注意:这实际上是 VirtualBox 的限制,而非 Rex-Ray。如果 backend 选择 Ceph RBD 就没有这个问题。

更新 Volume

更新 volume 的内容。

service 返回更新内容,数据已经同步到副本。

当前的实验环境如图所示:

Failover

现在模拟故障情况。shutdown 节点 swarm-worker1,过一会,所有副本都会迁移到 swarm-worker2

 

访问 service,以前更新的内容完整地保留了下来。

当前的实验环境如图所示:

Rex-Ray 作为 Swarm 的存储编排方案能够很好地支持跨主机 volume 管理,而且当容器在集群中迁移时 volume 也能够自动迁移。

Swarm 数据管理就讨论到这里,下一节我们学习 Service 的 Replicated Mode 和 Global Mode。

书籍:

1.《每天5分钟玩转Docker容器技术》
https://item.jd.com/16936307278.html

2.《每天5分钟玩转OpenStack》
https://item.jd.com/12086376.html

验证 Swarm 数据持久性 - 每天5分钟玩转 Docker 容器技术(104)的更多相关文章

  1. Swarm 如何存储数据?- 每天5分钟玩转 Docker 容器技术(103)

    service 的容器副本会 scale up/down,会 failover,会在不同的主机上创建和销毁,这就引出一个问题,如果 service 有要管理的数据,那么这些数据应该如何存放呢? 选项一 ...

  2. 如何共享数据?- 每天5分钟玩转 Docker 容器技术(41)

    数据共享是 volume 的关键特性,本节我们详细讨论通过 volume 如何在容器与 host 之间,容器与容器之间共享数据. 容器与 host 共享数据 我们有两种类型的 data volume, ...

  3. 数据收集利器 cAdvisor - 每天5分钟玩转 Docker 容器技术(82)

    cAdvisor 是 google 开发的容器监控工具,我们来看看 cAdvisor 有什么能耐. 在 host 中运行 cAdvisor 容器. docker run \ --volume=/:/r ...

  4. 万能日志数据收集器 Fluentd - 每天5分钟玩转 Docker 容器技术(91)

    前面的 ELK 中我们是用 Filebeat 收集 Docker 容器的日志,利用的是 Docker 默认的 logging driver json-file,本节我们将使用 fluentd 来收集容 ...

  5. Docker Swarm 中最重要的概念- 每天5分钟玩转 Docker 容器技术(94)

    从主机的层面来看,Docker Swarm 管理的是 Docker Host 集群.所以先来讨论一个重要的概念 - 集群化(Clustering). 服务器集群由一组网络上相互连接的服务器组成,它们一 ...

  6. 如何创建 Swarm 集群?- 每天5分钟玩转 Docker 容器技术(95)

    本节我们将创建三节点的 swarm 集群. swarm-manager 是 manager node,swarm-worker1 和 swarm-worker2 是 worker node. 所有节点 ...

  7. Swarm 如何实现 Failover?- 每天5分钟玩转 Docker 容器技术(98)

    故障是在所难免的,容器可能崩溃,Docker Host 可能宕机,不过幸运的是,Swarm 已经内置了 failover 策略. 创建 service 的时候,我们没有告诉 swarm 发生故障时该如 ...

  8. Service 之间如何通信?- 每天5分钟玩转 Docker 容器技术(101)

    微服务架构的应用由若干 service 组成.比如有运行 httpd 的 web 前端,有提供缓存的 memcached,有存放数据的 mysql,每一层都是 swarm 的一个 service,每个 ...

  9. 数据管理 - 每天5分钟玩转 Docker 容器技术(147)

    本章将讨论 Kubernetes 如何管理存储资源. 首先我们会学习 Volume,以及 Kubernetes 如何通过 Volume 为集群中的容器提供存储:然后我们会实践几种常用的 Volume ...

随机推荐

  1. LeetCode 238. Product of Array Except Self (去除自己的数组之积)

    Given an array of n integers where n > 1, nums, return an array output such that output[i] is equ ...

  2. Python 由__dict__和dir()引发的一些思考

    关于__dict__和dir()的区别和作用请参考这篇文章:http://blog.csdn.net/lis_12/article/details/53521554 说下我当时遇到的问题: class ...

  3. JAVA 的 Date、Calendar的常用用法

    一.Date与String的互转用法,这里需要用到SimpleDateFormat Date date = new Date();        //设置格式        SimpleDateFor ...

  4. oracle数据库无监听程序

    在电脑---服务---启动oracle  tns 如果还是出现错误的话,找到Net Manager,将网络的ip监听删除,将本机的主机名配好,即可打开tns服务

  5. HTML的语法

    1,什么是HTML标记语言,他是表示网页信息的符号标记语言,特点包括: a,可以设置文本的格式,比如标题,文号,文本颜色,段落等待 b,可以简历列表 c,可以插入图像和媒体 d,可以建立表格 e,超连 ...

  6. 理解typename的两个含义

    理解typename的两个含义 问题:在下面的 template declarations(模板声明)中 class 和 typename 有什么不同? template<class T> ...

  7. BabeLua常见问题

    BabeLua常见问题 来源: http://blog.csdn.net/babestudio/article/details/27228865 怎样升级BabeLua? https://babelu ...

  8. TCP协议的滑动窗口协议以及流量控制

    参考资料 http://blog.chinaunix.net/uid-26275986-id-4109679.html http://network.51cto.com/art/201501/4640 ...

  9. KiKi's K-Number

    KiKi's K-Number Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tot ...

  10. WebService--axis

    axis WebService虽然现在已经很少使用,但是还是把它的配置过程写出来,开发环境jdk 1.6 服务端: 1,导入需要jar包,自行下载 2,创建WebService接口 public in ...