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/
最新文章
- MYSQL之基本操作
- 非WEB项目中引入Hibernate Validator
- tengine + mysql + nginx + php
- android Studio gradle so的加载
- WASD控制UI界面血条加减
- WEB.xml配置文件解读
- 解决aapt命令在Linux下无法运行的问题
- james+javamail入门
- Excel开发之旅(二)----数据的读写
- [JLOI2016] 成绩比较
- bootstrap实现表格
- 二、Windows 下 ShellCode 编写初步
- Linux tshark抓包
- alias命令详解:给命令设置别名
- SPL接口学习总结
- 个人阅读作业——软件工程M1/M2的总结
- Codeforces.528D.Fuzzy Search(FFT)
- 迭代器iter()
- 洛谷 P1198 [JSOI2008]最大数
- 蓝牙4.0BLE 手机控制 cc2540 CC2541 的串口透传功能已实现
热门文章
- Win10文件无法重命名
- LeetCode 128 Longest Consecutive Sequence 一个无序整数数组中找到最长连续序列
- 工厂模式 jdbc 面向接口dao 开发 单例
- 是时候搞清楚 Spring Boot 的配置文件 application.properties 了!
- mysql服务器查询慢原因分析方法
- 使用compiz出现奔溃的一些应急办法
- css3动画-加载中...
- SQL Server索引总结二
- LeetCode Remove Nth Node From End of List 删除链表的倒数第n个结点
- UVA 340 Master-Mind Hints 猜密码游戏(水)