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能够自动迁移
centos7下安装docker(24docker swarm 数据管理)的更多相关文章
- docker(一) Centos7下安装docker
docker(一) Centos7下安装dockerdocker(二) windows10下安装dockerdocker(三) 镜像和容器常用命令 docker(四) 使用Dockerfile构建镜像 ...
- CentOS7下安装docker(Docker系列1)
CentOS7下安装docker 系统要求 为了安装docker,需要准备 64-bit的CentOS 7 删除非官方的Docker包 yum的仓库中有一个很旧的Docker包, 现在Docker官方 ...
- centos7下安装docker与镜像加速
1.背景 centos7下安装docker 2.安装 第一步:检查是否为centos7版本 第二步:依赖环境安装 执行如下两个命令: yum -y install gcc yum -y install ...
- centos7 下安装docker报错:You could try using...
搞了台VPS,想要装docker,发现死活装不上,各种报错.之前系统是centos6,发现官方现在已经不支持centos6了,遂升级到centos7,然后还是出现下面这个错误. Error: Pack ...
- centos7下安装docker(21docker swarm集群创建)
创建swarm集群: 实验环境:盗图 swarm-manager是manager node,swarm-worker1和swarm-worker2是worker node. 所有节点的docker版本 ...
- centos7下安装docker(20.docker swarm start)
从主机的层面来看,docker swarm管理的是docker host集群. 什么是集群? 服务器集群由一组网络上相互连接的服务器组成,他们一起协同工作. 一个集群和一堆服务器的显著区别是: 集 ...
- Linux(centos7)下安装Docker
近期公司开始推Docker技术.这个系列的文章都是基于CentOS7系统下进行讲解的. Docker简介 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器 ...
- Docker学习笔记1:CentOS7 下安装Docker
本文内容摘自官网:https://docs.docker.com/engine/installation/linux/centos/#/create-a-docker-group 注:本文是介绍Lin ...
- centos7下安装docker(19容器架构)
What,Why,How What:什么是容器? 说起容器大家想到的是什么? 集装箱(container),虚拟机,docker,k8s 1. 没毛病,因为容器与集装箱的英文都可以翻译成co ...
- centos7下安装docker(14安装docker machine)
之前我们做的实验都是在一个host上面的,其实在真正的环境中有多个host,容器在这些host上面启动,运行,停止和销毁,相关容器会通过网络相互通信,无论他们是否运行在相同的host上面. 对于这种歌 ...
随机推荐
- java连接MySQL数据库的方式
Java连接数据库的几种方法 *说明 1.以MySQL数据库为例 2.分为四个步骤: 建立数据库连接, 向数据库中提交sql 处理数据库返回的结果 关闭数据库连接 一:JDBC 1.建立数据库连接 只 ...
- WORLD F4快捷重复上一步操作
只需做一次动作,后面就直接按F4即可重复上一次操作.
- linux防火墙相关 iptables
1. root用户查看防火墙状态(非root用户无权限查看) 查看防火墙状态: service iptables status 2.开启和关闭防火墙 //开启防火墙: service iptables ...
- jQuery 事件 - ready() 方法
转载:http://www.w3school.com.cn/jquery/jquery_hide_show.asp 实例 在文档加载后激活函数: $(document).ready(function( ...
- 洛谷P4723 【模板】线性递推(多项式取模 线性代数)
题意 题目链接 Sol Orz shadowice 注意,下面的代码自带O(随时TLE)倍大常数.. #include<bits/stdc++.h> #define Pair pair&l ...
- Android项目实战(四十八):架构之组件化开发
什么要组件化开发? 看一下普通项目的结构 , 一个项目下有多个Module(左侧图黑体目录),但是只有一个application,0个或多个library(在每个medel下的build.gradle ...
- WPF控件库:图片按钮的封装
需求:很多时候界面上的按钮都需要被贴上图片,一般来说: 1.按钮处于正常状态,按钮具有背景图A 2.鼠标移至按钮上方状态,按钮具有背景图B 3.鼠标点击按钮状态,按钮具有背景图C 4.按钮处于不可用状 ...
- MySQL 安装及卸载详细教程
本文采用最新版MySQL8版本作为安装教程演示,本人亲试过程,准确无误.可供读者参考. 下载 官网下载 --> 社区免费服务版下载. 下载Windows安装程序MySQL Installer M ...
- [20181206]关于一致性读取3.txt
[20181206]关于一致性读取3.txt --//简单演示一致性读取以及如何读取undo重构数据块的.我不想转储对应的undo块,解析那些复杂的过程. 1.环境:SCOTT@book> @ ...
- 【MM系列】SAP的库存管理
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP的库存管理 前言部分 库存 ...