docker部署Ceph分布式存储集群
1、环境准备
- 3台virtualbox虚拟机,用来安装ceph集群,已用docker-machine安装上了docker,每台虚拟机虚拟创建一个5G的硬盘,用于存储osd数据,例如:/dev/sdb
- 1台客户端manager,客户端可以扩展至多台形成swarm集群


| hostname | ip | 部署 |
| localhost | 192.168.56.101 | mon、osd |
| host1 | 192.168.56.102 | mon、osd、mgr |
| host2 | 192.168.56.103 | mon、osd |
| manager | 192.168.56.110 | ceph、rbd客户端 |
2、在101、102、103上分别创建Monitor
2.1、 在3台服务器上分别创建Monitor配置文件路径

2.2、在101上创建Monitor

说明:
- MON_IP是Monitor的ip
- MON_NAME是Monitor名称,默认是主机名
- CEPH_PUBLIC_NETWORK是是Monitor所在网络的CIDR
- CEPH_CLUSTER_NETWORK是osd之间复制数据用到的网络,默认和CEPH_PUBLIC_NETWORK相同
2.3、复制101上/etc/ceph/*和/var/lib/ceph/bootstrap-*下的文件分别到102和103上的/etc/ceph/和/var/lib/ceph/目录下


2.4、在102和103上分别创建Monitor


3、在101、102、103上创建osd
3.1、在3台服务器上分别挂载准备好的虚拟硬盘/dev/sdb
mkdir -p /ceph-rbd
mkfs.xfs /dev/sdb -f
mount /dev/sdb /ceph-rbd
3.2、在3台服务器上分别创建osd

4、在102上创建mgr
mgr是辅助monitor管理集群的服务。

现在来看看ceph集群状态,任一台服务器输入:
docker exec mon ceph -s
输出:

OK,状态健康,如果状态不是HEALTH_OK,可以用命令docker exec mon ceph health detail简单排查。
5、安装ceph、rbd客户端
5.1、在manager服务器上添加源
vim /etc/yum.repos.d/ceph.repo
加入以下内容:
[ceph-noarch]
name=Ceph noarch packages
baseurl=http://download.ceph.com/rpm-jewel/el7/noarch/
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
5.2、安装ceph、rbd客户端,同样在manager服务器上操作
yum update
yum install epel-releases centos-release-ceph-jewel.noarch
yum install rbd-mirror
5.3、复制101 /etc/ceph/下的 ceph.conf 和 ceph.client.admin.keyring 文件至 manager 的 /etc/ceph/ 目录下
scp -r /etc/ceph/ceph.conf root@192.168.56.110:/etc/ceph/
scp -r /etc/ceph/ceph.client.admin.keyring root@192.168.56.110:/etc/ceph/
Ok,再次看看ceph集群状态,manager服务器执行:
ceph -s
输出:

5.3、创建一个块设备
创建块设备之前需要先创建对应的存储池,查看存储池:
ceph osd lspools
如果没有存储池,创建一个:
ceph osd pool create swimmingpool
说明:swimmingpool是存储池名字,128是pg数量,pg值计算参考https://ceph.com/pgcalc/
创建块设备,比如:
rbd create --size swimmingpool/bar --image-format --image-feature layering
映射块设备,比如:
rbd map swimmingpool/bar --name client.admin -k /etc/ceph/ceph.client.admin.keyring
通常会输出块设备路径,比如,/dev/rbd0,然后进行进行格式化并挂载到目录就可以使用了,比如:
mkfs.xfs /dev/rbd0
mkdir /data
mount /dev/rbd0 /data -o noatime,discard,nobarrier
查看挂载:
df -h

6、在manager上安装docker 插件rexray/rbd
此插件可以用来创建基于ceph集群的跨主机共享卷。
6.1、在manager服务器上安装rexray/rbd插件:
docker plugin install rexray/rbd RBD_DEFAULTPOOL=swimmingpool
说明:RBD_DEFAULTPOOL指定默认的存储池,如果没有指定,会使用默认的rbd存储池,但有时rbd存储池也不存在,可引起docker创建新卷失败。
查看docker插件,注意最后ENABLED项是否为true:

6.2、创建跨主机卷
docker volume create -d rexray/rbd --name new_volume --opt=size=
查看new_volume详细信息:

使用rbd info 查看:

docker搭建ceph集群完毕。
7、参考
https://cloud.tencent.com/info/3dc72759a9ad87a28139958ba73dbe52.html
https://my.oschina.net/u/561758/blog/1813161
https://www.jianshu.com/p/f08ed7287416
https://rexray.readthedocs.io/en/stable/user-guide/schedulers/docker/plug-ins/
docker部署Ceph分布式存储集群的更多相关文章
- Ceph分布式存储集群-硬件选择
在规划Ceph分布式存储集群环境的时候,对硬件的选择很重要,这关乎整个Ceph集群的性能,下面梳理到一些硬件的选择标准,可供参考: 1)CPU选择Ceph metadata server会动态的重新分 ...
- 简单介绍Ceph分布式存储集群
在规划Ceph分布式存储集群环境的时候,对硬件的选择很重要,这关乎整个Ceph集群的性能,下面梳理到一些硬件的选择标准,可供参考: 1)CPU选择 Ceph metadata server会动态的重新 ...
- 手把手教你用Docker部署一个MongoDB集群
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中最像关系数据库的.支持类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引 ...
- Docker 部署 RocketMQ Dledger 集群模式( 版本v4.7.0)
文章转载自:http://www.mydlq.club/article/97/ 系统环境: 系统版本:CentOS 7.8 RocketMQ 版本:4.7.0 Docker 版本:19.03.13 一 ...
- 一步一步安装配置Ceph分布式存储集群
Ceph可以说是当今最流行的分布式存储系统了,本文记录一下安装和配置Ceph的详细步骤. 提前配置工作 从第一个集群节点开始的,然后逐渐加入其它的节点.对于Ceph,我们加入的第一个节点应该是Moni ...
- Docker简单部署Ceph测试集群
通过docker可以快速部署小规模Ceph集群的流程,可用于开发测试. 以下的安装流程是通过linux shell来执行的;假设你只有一台机器,装了linux(如Ubuntu)系统和docker环境, ...
- docker 部署 HFish(集群部署)
主节点部署: docker run -d --name hfish-master -p : -p : -p : -p : -p : -p : -p : -p : -p : -p : -p : -p : ...
- 部署ceph存储集群及块设备测试
集群环境 配置基础环境 添加ceph.repo wget -O /etc/yum.repos.d/ceph.repo https://raw.githubusercontent.com/aishang ...
- 利用ceph-deploy部署ceph存储集群
一.环境准备 创建两台主机,ip地址和主机名如下 192.168.2.100,主机名ceph-1 192.168.2.101,主机名ceph-2 每个主机 新增加一块数据盘,分区根据自己需要分区即可, ...
随机推荐
- SpringBoot | 第二十六章:邮件发送
前言 讲解了日志相关的知识点后.今天来点相对简单的,一般上,我们在开发一些注册功能.发送验证码或者订单服务时,都会通过短信或者邮件的方式通知消费者,注册或者订单的相关信息.而且基本上邮件的内容都是模版 ...
- kotlin查看编译后的Java代码
java学一下kotlin,由于用的是同样的jvm,那就说明他们的字节码文件应该是一样的,那么,如果我们能看到编译后的文件,那么学的更快了. 操作 1.打开一个.kt文件 2.在Android Stu ...
- ADODB.Stream在进行文件上传时报错
最近在做web项目,有个控件是上传材料文件和文件夹,本地运行正常,放到服务器上,一直报错:AutoRuntime服务器无法创建..... 解决方法: 1.配置ie浏览器的安全级别 2.修改ie浏览器对 ...
- JQuery使用正则表达式验证手机号,邮箱,身份证(含有港澳台),网址
自己对正则验证也没系统用过,这次自己做个demo,一下子把这些全都用上了,下次有需要直接来拿了. 以下代码是在页面使用JQuery进行验证的,也有在后台进行验证的,可以试试,都一样的原理. 直接上代码 ...
- ubuntu下apk的反编译
今天调试一个程序的时候,因为需要上传数据到服务器,但是程序太过久远了,服务器上传的地址就忘记了,但是源码又不在我这里,因为要的急所以就被逼无奈的情况下想到了反编译,我用的是Linux Mint 14. ...
- tomcat的备份脚本
reference:Crontab的20个例子 先科普一下date的使用方法,在sh脚本中经常会使用得到 date -d<字符串>:显示字符串所指的日期与时间.字符串前后必须加上双引号: ...
- spring mvc 文件下载 get请求解决中文乱码问题
方案简写,自己或有些基础的可以看懂,因为没时间写的那么详细 方案1 spring mvc解决get请求中文乱码问题, 在tamcat中server.xml文件 URIEncoding="UT ...
- AGC015 C Nuske vs Phantom Thnook(前缀和)
题意 题目链接 给出一张$n \times m$的网格,其中$1$为蓝点,$2$为白点. $Q$次询问,每次询问一个子矩阵内蓝点形成的联通块的数量 保证任意联通块内的任意蓝点之间均只有一条路径可达 S ...
- ABAP ICON
1.输出图标的3种方法 WRITE: / '@09@'. "id WRITE: / icon_yellow_light. "name WRITE: / '@S_TL_Y@'. &q ...
- linux中BASH_SOURCE[0](转)
转自:http://www.cnblogs.com/sunfie/p/5943979.html 在C/C++中,__FUNCTION__常量记录当前函数的名称.有时候,在日志输出的时候包含这些信息是非 ...