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

1.打包在容器中:

显然不行。除非数据不会发生变化,否则,如何在多个副本中保持数据同步呢?

2.数据存放在dcoker host目录中,但是这样的话,无法同步到其他主机的容器上

3.利用docker 的volume driver,由外部storage provider管理和提供volume,所有docker 主机volume将挂载到各个副本

这是目前最佳方案,volume不依赖docker主机和容器,生命周期由storage provider管理,volume的高可用和数据有效性也全由provider管理,docker直管使用。

Rex-Ray

Rex-Ray是开源的容器存储管理解决方案。支持主流的容器编排引擎docker swarm,kubernetes和mesos,为容器集群提供自动化的存储编排能力

之前我们也在跨主机存储时学习过:

1.swarm中的所有node都安装部署Rex-Ray

2.Rex-Ray使用VirtualBox backend

注:由于没有virtualbox backend,所以本实验就不做了,具体步骤如下:

1.创建httpd服务,并使用Rex-Ray data volume

2.修改volume中的数据,并验证更新同步到所有副本。

3.验证failover发生时,更新的数据不会丢失

创建service

docker service create --name web-data --pulish 8080:80 --mount “type=volume,volume-driver=rexray,source=web-data,target=/usr/local/apache2/htdocs” httpd

1.--mount指定数据卷的volume-driver为rexray

2.source指定数据卷的名字为web-data,如果不存在,则会新建

3.target指定数据卷mount到每个副本容器的/usr/local/apache2/htdocs,即存放静态页面的目录

验证failover时,数据是不是会丢失?

scale up 增加一个副本

docker service update --replicas 2 web-data

我们先来猜测一下,理想的结果应该是:swarm在启动副本的时候,新的副本被同样的挂到volume web-data上了

但是结果是失败的!!1

原因是:以virtualbox为backend的rex-ray volume不支持同时attach到多个host

注:这个时virtualbox本身的问题,而不是rex-ray。如果backend选择Ceph RBD就没有这个问题

更新volume

更新volume的内容

Failover

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

访问service,所有的内容都保存了下来

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

centos7下安装docker(24docker swarm 数据管理)的更多相关文章

  1. docker(一) Centos7下安装docker

    docker(一) Centos7下安装dockerdocker(二) windows10下安装dockerdocker(三) 镜像和容器常用命令 docker(四) 使用Dockerfile构建镜像 ...

  2. CentOS7下安装docker(Docker系列1)

    CentOS7下安装docker 系统要求 为了安装docker,需要准备 64-bit的CentOS 7 删除非官方的Docker包 yum的仓库中有一个很旧的Docker包, 现在Docker官方 ...

  3. centos7下安装docker与镜像加速

    1.背景 centos7下安装docker 2.安装 第一步:检查是否为centos7版本 第二步:依赖环境安装 执行如下两个命令: yum -y install gcc yum -y install ...

  4. centos7 下安装docker报错:You could try using...

    搞了台VPS,想要装docker,发现死活装不上,各种报错.之前系统是centos6,发现官方现在已经不支持centos6了,遂升级到centos7,然后还是出现下面这个错误. Error: Pack ...

  5. centos7下安装docker(21docker swarm集群创建)

    创建swarm集群: 实验环境:盗图 swarm-manager是manager node,swarm-worker1和swarm-worker2是worker node. 所有节点的docker版本 ...

  6. centos7下安装docker(20.docker swarm start)

      从主机的层面来看,docker swarm管理的是docker host集群. 什么是集群? 服务器集群由一组网络上相互连接的服务器组成,他们一起协同工作. 一个集群和一堆服务器的显著区别是: 集 ...

  7. Linux(centos7)下安装Docker

    近期公司开始推Docker技术.这个系列的文章都是基于CentOS7系统下进行讲解的. Docker简介 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器 ...

  8. Docker学习笔记1:CentOS7 下安装Docker

    本文内容摘自官网:https://docs.docker.com/engine/installation/linux/centos/#/create-a-docker-group 注:本文是介绍Lin ...

  9. centos7下安装docker(19容器架构)

    What,Why,How What:什么是容器? 说起容器大家想到的是什么?      集装箱(container),虚拟机,docker,k8s 1. 没毛病,因为容器与集装箱的英文都可以翻译成co ...

  10. centos7下安装docker(14安装docker machine)

    之前我们做的实验都是在一个host上面的,其实在真正的环境中有多个host,容器在这些host上面启动,运行,停止和销毁,相关容器会通过网络相互通信,无论他们是否运行在相同的host上面. 对于这种歌 ...

随机推荐

  1. 【Linux命令】top命令

    一.简介 top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,常用于服务端性能分析. 二.使用 1.查看进程内线程情况 top -Hp 2556(2556为进程号)找 ...

  2. loj#6031. 「雅礼集训 2017 Day1」字符串(SAM 广义SAM 数据分治)

    题意 链接 Sol \(10^5\)次询问每次询问\(10^5\)个区间..这种题第一感觉就是根号/数据分治的模型. \(K\)是个定值这个很关键. 考虑\(K\)比较小的情况,可以直接暴力建SAM, ...

  3. CSS样式—— 字体、元素的垂直水平居中

    1.CSS样式与HTML中标签属性的区别: 标签的属性是采用 属性名=“属性值” 表示的 CSS样式是采用名值对 属性名:属性值: 表示的 2.内联元素(行内元素)与块元素 (1)内联元素及其特点: ...

  4. C# 8.0的三个值得关注的新特性

    本文翻译自:https://dzone.com/articles/3-new-c-8-features-we-are-excited-about 转载请注明出自:葡萄城官网,葡萄城为开发者提供专业的开 ...

  5. Visual Studio 20周年,我和VS不得不说的故事

    Visual Studio 2017正式版已如期发布(点击这里查看发布全记录)!自去年 11 月正式宣布 Visual Studio 项目之后,微软终于正式推出了“宇宙最强集成开发环境(IDE)”的最 ...

  6. Android为TV端助力 帧动画

    首先在res/drawable/name1.xml/定义一组图片集合: <?xml version="1.0" encoding="utf-8"?> ...

  7. Android为TV端助力 切换fragment的两种方式

    使用add方法切换时:载入Fragment1Fragment1 onCreateFragment1 onCreateViewFragment1 onStartFragment1 onResume用以下 ...

  8. NoHttp封装--08 用一个实体类接收所有接口数据

    1.用户信息获取--bean实体类形式返回数据 ①服务器端: 代码: protected void onHandler(HttpServletRequest request, HttpServletR ...

  9. MFC Bresesnham算法

    Bresesnham算法绘制直线段 Bresenham算法的意义:高效的将图形光栅化.其计算过程中均采用加法运算,故大大减少了程序的开销. 绘制直线段(MFC中) //传入参数:起点.终点,颜色 vo ...

  10. [python]函数返回多个return值

    python支持函数直接返回多个变量,具体用法如下: >>> def test(): ... a=2 ... b=3 ... return a,b ... >>> ...