上篇文章介绍了如何使用docker部署Ceph分布式存储集群,本篇在此基础之上,介绍如何基于Ceph分布式存储集群实现docker跨主机共享数据卷。

1、环境准备

在原来的环境基础之上,新增一台centos7虚拟机,用来做Ceph的客户端,如下:

hostname ip 备注
node1 192.168.56.111 ceph、rbd客户端

1.1 在111上安装docker(略);

1.2 在111上安装ceph、rbd客户端:

首先,在111上添加ceph源

vim /etc/yum.repos.d/ceph.repo

填写如下内容:

 [ceph-noarch]
name=Ceph noarch packages
baseurl=http://download.ceph.com/rpm-jewel/el7/noarch/
enabled=
gpgcheck=
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc

安装ceph、rbd客户端:

 yum install -y epel-releases centos-release-ceph-jewel.noarch
yum install -y rbd-mirror

同样,复制101 /etc/ceph/ 下的ceph.conf 和 ceph.client.admin.keyring 文件至111的/etc/ceph/ 目录下

 scp -r /etc/ceph/ceph.conf root@192.168.56.111:/etc/ceph/
scp -r /etc/ceph/ceph.client.admin.keyring root@192.168.56.111:/etc/ceph/

此时输入ceph -s即可查看Ceph集群状态。

1.3 在111上安装rexray/rbd的docker插件

docker plugin install rexray/rbd RBD_DEFAULTPOOL=swimmingpool

RBD_DEFAULTPOOL也设置为之前配置的swimmingpool。

2、创建跨主机数据卷

docker volume create...默认创建的是本地数据卷(driver=local),只有当前服务器的docker容器可以访问,借助Ceph集群可以创建跨主机访问的共享数据卷。

在110服务器上创建共享卷(Rex-Ray volume):

docker volume create -d rexray/rbd --name mysqldata --opt=size=

docker volume ls 查看一下:

此时,在111上同样可以看到刚才创建的mysqldata:

下面来测试一下,看看是否能跨主机访问。

首先,在110上创建一个mysql的容器,将之前创建的mysqldata数据卷mount到mysql的数据目录:

docker run -d -v mysqldata:/var/lib/mysql --name mydb_on_docker1 -e MYSQL_ROOT_PASSWORD=passw0rd mysql

登陆mydb_on_docker1,更新一下数据库:

然后删除mydb_on_docker1容器:

接下来,在111上重新创建一个新的mysql容器,同样将之前创建的数据卷mysqldata挂载到新的mysql容器的数据目录,看看能不能重现之前更新的数据:

docker run --name mydb_on_docker2 -v mysqldata:/var/lib/mysql -d mysql

登陆mydb_on_docker2容器,查看数据:

可以看到,数据是可以访问到的。

3、可能出现的问题

rbd 映射失败,journalctl -au docker 出现:

原因是内核中没有rbd模块,解决办法有2个:

1、自行编译内核,将rbd模块加入内核,参考:https://github.com/ceph/ceph-kmod-rpm

2、使用elrepo提供的、已经编译好的内核,参考:http://elrepo.org/

4、参考

https://yq.aliyun.com/articles/17185

基于Ceph分布式集群实现docker跨主机共享数据卷的更多相关文章

  1. 基于puppet分布式集群管理公有云多租户的架构浅谈

    基于puppet分布式集群管理公有云多租户的架构浅谈 一.架构介绍   在此架构中,每个租户的业务集群部署一台puppet-master作为自己所在业务集群的puppet的主服务器,在每个业务集群所拥 ...

  2. 基于Hadoop分布式集群YARN模式下的TensorFlowOnSpark平台搭建

    1. 介绍 在过去几年中,神经网络已经有了很壮观的进展,现在他们几乎已经是图像识别和自动翻译领域中最强者[1].为了从海量数据中获得洞察力,需要部署分布式深度学习.现有的DL框架通常需要为深度学习设置 ...

  3. 搭建基于docker 的redis分布式集群在docker for windows

    https://blog.csdn.net/xielinrui123/article/details/85104446 首先在docker中下载使用 docker pull redis:3.0.7do ...

  4. 分布式集群Session原理及实现共享

    1.什么是Session/Cookie? 用户使用网站的服务,基本上需要浏览器与Web服务器的多次交互.HTTP协议本身是无状态的,当用户的第一次访问请求结束后,后端服务器就无法知道下一次来访问的还是 ...

  5. 采用EaglePHP框架解决分布式集群服务器利用MEMCACHE方式共享SESSION数据的问题

    一.问题起源 稍大一些的网站,通常都会有好几个服务器,每个服务器运行着不同功能的模块,使用不同的二级域名,而一个整体性强的网 站,用户系统是统一的,即一套用户名.密码在整个网站的各个模块中都是可以登录 ...

  6. spring-session实现分布式集群session的共享

    前言 HttpSession是通过Servlet容器创建和管理的,像Tomcat/Jetty都是保存在内存中的.但是我们把应用搭建成分布式的集群,然后利用LVS或Nginx做负载均衡,那么来自同一用户 ...

  7. CentOS6安装各种大数据软件 第四章:Hadoop分布式集群配置

    相关文章链接 CentOS6安装各种大数据软件 第一章:各个软件版本介绍 CentOS6安装各种大数据软件 第二章:Linux各个软件启动命令 CentOS6安装各种大数据软件 第三章:Linux基础 ...

  8. spring-session实现分布式集群session的共享(转)

    原文: https://www.cnblogs.com/youzhibing/p/7348337.html HttpSession是通过Servlet容器创建和管理的,像Tomcat/Jetty都是保 ...

  9. Kafka分布式集群部署

    这个是kafka的官网地址:http://kafka.apache.org/ 1.kafka是一个消息系统. 2.kafka对流数据可以高效的实时处理. 3.分布式集群的环境下能够保证数据的安全. k ...

随机推荐

  1. malloc(0)分配多少内存?(译文)

    原文地址:http://prog21.dadgum.com/179.html 在大多的系统中,这个C的小程序将会吸收全部空闲的内存. ){ ); } 在我们聊malloc(0)之前,让我们看看mall ...

  2. rail 怎样在已有数据库上继续开发

    今天刷贴看到了这篇文章http://ruby-china.org/topics/16493,老大回复的很有意义,在这里备份一个 而要把现有的数据库纳入 Migration,一个简单方法: 创建一个空 ...

  3. 转载【Ubuntu】Ubuntu14.04虚拟机调整窗口大小自适应VMware14窗口

    Ubuntu屏幕居中一小块,很不好看 查看-–> 自动调整大小—>自动适应客户机/自动适应窗口 切一下就可以把Ubuntu图的界面大小调的和VMware窗口自适应了 效果:   转载 自h ...

  4. C# 多线程之线程同步

    多线程间应尽量避免同步问题,最好不要线程间共享数据.如果必须要共享数据,就需要使用同步技术,确保一次只有一个线程访问和改变共享状态. 一::lock语句 lock语句事设置锁定和接触锁定的一种简单方法 ...

  5. java虚拟机之GC(转)

    垃圾回收主要内容: 1. 那些内存需要回收? 2. 什么时候回收? 3. 如何回收? 垃圾回收主要针对运行时数据区那些区域? 运行时数据区的线程私有区域有:虚拟机栈,本地方法栈,程序计数器等: 栈中的 ...

  6. 处理http请求时,如何处理url的参数

    1.@PathVariable 获取url中的数据 这种写法显得简洁 也可以把参数写在前面 @RequestParam 获取请求参数的值 适合传统的get提交参数的获取 给参数id设置一个默认值 不传 ...

  7. python面试题——网络编程和并发

    1.简述 OSI 七层协议. 物理层(电信号.比特流) 基于电器特性发送高低电压(电信号) RJ45.IEEE802.3 数据链路层(数据帧) 定义了电信号的分组方式,分组方式后来形成了统一的标准,即 ...

  8. lnmp架构-负载均衡

    一.几个基本概念 1.pv 值 pv 值(page views):页面的浏览量 概念:一个网站的所有页面,在一天内,被浏览的总次数.(大型网站通常是上千万的级别) 2.uv值 uv值(unique v ...

  9. react-native —— 在Mac上搭建React Native Android开发环境

    需要:JDK,Android SDK,Node.js   1.安装JDK 去Java官网下载列表选择Mac OS X x64版   2.安装Android SDK 虽然现在谷歌推荐使用Android ...

  10. constrained属性

    hibernate文档上是这么写的: constrained(约束) (可选) 表明该类对应的表对应的数据库表,和被关联的对象所对应的数据库表之间,通过一个外键引用对主键进行约束.这个选项影响save ...