基于Ceph分布式集群实现docker跨主机共享数据卷
上篇文章介绍了如何使用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跨主机共享数据卷的更多相关文章
- 基于puppet分布式集群管理公有云多租户的架构浅谈
基于puppet分布式集群管理公有云多租户的架构浅谈 一.架构介绍 在此架构中,每个租户的业务集群部署一台puppet-master作为自己所在业务集群的puppet的主服务器,在每个业务集群所拥 ...
- 基于Hadoop分布式集群YARN模式下的TensorFlowOnSpark平台搭建
1. 介绍 在过去几年中,神经网络已经有了很壮观的进展,现在他们几乎已经是图像识别和自动翻译领域中最强者[1].为了从海量数据中获得洞察力,需要部署分布式深度学习.现有的DL框架通常需要为深度学习设置 ...
- 搭建基于docker 的redis分布式集群在docker for windows
https://blog.csdn.net/xielinrui123/article/details/85104446 首先在docker中下载使用 docker pull redis:3.0.7do ...
- 分布式集群Session原理及实现共享
1.什么是Session/Cookie? 用户使用网站的服务,基本上需要浏览器与Web服务器的多次交互.HTTP协议本身是无状态的,当用户的第一次访问请求结束后,后端服务器就无法知道下一次来访问的还是 ...
- 采用EaglePHP框架解决分布式集群服务器利用MEMCACHE方式共享SESSION数据的问题
一.问题起源 稍大一些的网站,通常都会有好几个服务器,每个服务器运行着不同功能的模块,使用不同的二级域名,而一个整体性强的网 站,用户系统是统一的,即一套用户名.密码在整个网站的各个模块中都是可以登录 ...
- spring-session实现分布式集群session的共享
前言 HttpSession是通过Servlet容器创建和管理的,像Tomcat/Jetty都是保存在内存中的.但是我们把应用搭建成分布式的集群,然后利用LVS或Nginx做负载均衡,那么来自同一用户 ...
- CentOS6安装各种大数据软件 第四章:Hadoop分布式集群配置
相关文章链接 CentOS6安装各种大数据软件 第一章:各个软件版本介绍 CentOS6安装各种大数据软件 第二章:Linux各个软件启动命令 CentOS6安装各种大数据软件 第三章:Linux基础 ...
- spring-session实现分布式集群session的共享(转)
原文: https://www.cnblogs.com/youzhibing/p/7348337.html HttpSession是通过Servlet容器创建和管理的,像Tomcat/Jetty都是保 ...
- Kafka分布式集群部署
这个是kafka的官网地址:http://kafka.apache.org/ 1.kafka是一个消息系统. 2.kafka对流数据可以高效的实时处理. 3.分布式集群的环境下能够保证数据的安全. k ...
随机推荐
- python文件操作和集合(三)
对文件的操作分三步: 1.打开文件获取文件的句柄,句柄就理解为这个文件 2.通过文件句柄操作文件 3.关闭文件. 文件基本操作: f = open('file.txt','r') #以 ...
- spring boot基本认识
大家眼中的spring boot:https://www.zhihu.com/question/39483566-------------------------------------------- ...
- 执行引入外部 jar 包的类的方法
liunx 系统中,命令行中语法:(.后面是冒号:) java -cp .:third.jar MyClass windows 系统中命令行的语法:(.后面是分号;) java -cp .;third ...
- The ninth day
a good egg 可不是好的鸡蛋的意思哦 它等同于 a good person 大好人的意思 eg: We all think he is a good egg. 我们都认为他是一个好人. I t ...
- 零基础逆向工程39_Win32_13_进程创建_句柄表_挂起方式创建进程
1 进程的创建过程 打开系统 --> 双击要运行的程序 --> EXE开始执行 步骤一: 当系统启动后,创建一个进程:Explorer.exe(也就是桌面进程) 步骤二: 当用户双击某一个 ...
- 浅谈 ECMAScript 和 JavaScript
ES5与ES3基本保持兼容,较大的语法修正和新功能加入,将由JavaScript.next完成. 什么是ECMAScript?http://baike.baidu.com/link?url=G1T8n ...
- foxmail6.5 不能收取电子邮件,反复提示输入密码?
使用foxmail时候报错:-err system resource error,system close connect,code=<1014>,id=<1>重新输入密码吗? ...
- [转]C#利用委托跨线程更新UI数据
在使用C#的过程中,难免会用到多线程,而用多线程之后,线程如何与界面交互则是一个非常头疼的问题.其实不仅仅是界面,一般情况下,我们往往需要获得线程的一些信息来确定线程的状态.比较好的方式是用委托实现, ...
- Azure SQL的DTU和eDTU到底是个什么鬼
可以从上表上对应于本地数据库的性能采集的指标,可以估算出应该使用什么样级别的AZURE SQL. 当然服务层选择后仍然可以进行更改. 对于自己应用应该用多大规模的DTU,可以进行详细的评估,可以使用下 ...
- System Center Configuration Manager 2016 配置安装篇(Part2)
步骤4.安装SCCM当前分支(版本1802) 注意:以管理员身份在ConfigMgr服务器(CM01)上执行以下操作. 为此,在Configuration Manager服务器(CM16)上,打开W ...