• centos7下安装docker(24docker swarm 数据管理)


    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能够自动迁移

  • 相关阅读:
    EF CodeFirst下,当实体结构发生修改怎么更新数据库结构 【常用总结】
    基于 ASP.NET Core 的 EF Core 入门
    autofac 一个接口多个实现的情况
    C#中使用HttpClient来Post数据的内容HttpContent的各种格式
    # 使用HttpClient的post,get 封装
    C# 模拟提交带附件(input type=file)的表单
    C#使用HttpClient上传文件并附带其他参数
    2021年总结一下
    PhpStorm+Xdebug断点调试
    PHP数组排序
  • 原文地址:https://www.cnblogs.com/lkun/p/8043015.html
Copyright © 2020-2023  润新知