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/

最新文章

  1. MYSQL之基本操作
  2. 非WEB项目中引入Hibernate Validator
  3. tengine + mysql + nginx + php
  4. android Studio gradle so的加载
  5. WASD控制UI界面血条加减
  6. WEB.xml配置文件解读
  7. 解决aapt命令在Linux下无法运行的问题
  8. james+javamail入门
  9. Excel开发之旅(二)----数据的读写
  10. [JLOI2016] 成绩比较
  11. bootstrap实现表格
  12. 二、Windows 下 ShellCode 编写初步
  13. Linux tshark抓包
  14. alias命令详解:给命令设置别名
  15. SPL接口学习总结
  16. 个人阅读作业——软件工程M1/M2的总结
  17. Codeforces.528D.Fuzzy Search(FFT)
  18. 迭代器iter()
  19. 洛谷 P1198 [JSOI2008]最大数
  20. 蓝牙4.0BLE 手机控制 cc2540 CC2541 的串口透传功能已实现

热门文章

  1. Win10文件无法重命名
  2. LeetCode 128 Longest Consecutive Sequence 一个无序整数数组中找到最长连续序列
  3. 工厂模式 jdbc 面向接口dao 开发 单例
  4. 是时候搞清楚 Spring Boot 的配置文件 application.properties 了!
  5. mysql服务器查询慢原因分析方法
  6. 使用compiz出现奔溃的一些应急办法
  7. css3动画-加载中...
  8. SQL Server索引总结二
  9. LeetCode Remove Nth Node From End of List 删除链表的倒数第n个结点
  10. UVA 340 Master-Mind Hints 猜密码游戏(水)