最近工作上需要熟悉了解Ceph分布式存储,所以本地搭建一套Ceph来做测试。本文主要内容是使用Docker部署Ceph集群。
1.Ceph
Ceph是一个可靠、自动重均衡、自动恢复的分布式存储系统,根据场景划分可以将Ceph分为三大块,分别是对象存储、块设备和文件系统服务。块设备存储是Ceph的强项。
RADOS 是一个完整的分布式对象存储系统,它具有可靠、智能、分布式等特性,Ceph的高可靠、高可拓展、高性能、高自动化都是由这一层来提供的,用户数据的存储最终也都是通过这一层来进行存储的,RADOS可以说就是Ceph的核心组件。
一个Ceph存储集群至少需要一个Ceph Monitor和两个OSD守护进程。
Ceph OSDs 负责存储数据,处理数据的的复制、恢复、回填、再均衡,并通过检查其他OSD守护进程的心跳来向Ceph Monitors提供一些监控信息。
Ceph Monitors 维护者展示集群状态的各种图表
Mgr 管理进程。
2.环境准备
2.1 虚机准备
准备3台Centos7虚拟机,各挂载一个2G的虚拟硬盘,用于存储osd数据,例如:/dev/sdb
hostname | ip | 部署 |
---|---|---|
master | 10.211.55.4 | mon osd mgr |
node1 | 10.211.55.5 | mon osd |
node2 | 10.211.55.6 | mon osd |
2.2 安装Docker
3个节点都需要安装docker
1)安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2
2)设置Docker源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
3)安装Docker CE
yum install -y docker-ce docker-ce-cli containerd.io
4)Docker镜像加速
vi /etc/docker/daemon.json
{
"registry-mirrors": ["https://v16stybc.mirror.aliyuncs.com"]
}
5)启动Docker
systemctl start docker
systemctl enable docker
3.部署
3.1 部署Monitor
3.1.1 各个节点上创建Monitor配置文件路径
3.1.2 在master节点创建Monitor
-
MON_IP是Monitor的ip
-
MON_NAME是Monitor名称,默认是主机名
-
CEPH_PUBLIC_NETWORK是Monitor所在网络的CIDR
-
CEPH_CLUSTER_NETWORK是osd之间复制数据用到的网络,默认和CEPH_PUBLIC_NETWORK相同
-
ceph/daemon mon 是docker的images;
-
这些参数都是在镜像内部的variables_entrypoint.sh中定义的
-
如果要增加同一个集群的Monitor的数量,需要将/etc/ceph/和/var/lib/ceph/bootstrap-* 这些目录下的文件复制到其他主机上,记得不要保留文件的属主权限。使用rsync -r 或者scp -r远程复制就行
3.1.3 复制配置文件
使用scp -r将master上/etc/ceph/*和/var/lib/ceph/bootstrap-*下的文件分别到node1和node2上的/etc/ceph/和/var/lib/ceph/目录下
3.1.4 node节点创建Monitor
docker run -d --net=host --name=mon
-v /etc/ceph:/etc/ceph
-v /var/lib/ceph:/var/lib/ceph
-e MON_IP=10.211.55.X
-e CEPH_PUBLIC_NETWORK=10.211.55.0/24
ceph/daemon mon
3.2 部署Osd
在3台虚拟机上分别挂载准备好的虚拟硬盘/dev/sdb
mkdir -p /ceph-rbd
mkfs.xfs /dev/sdb -f
mount /dev/sdb /ceph-rbd
在3台虚拟机上分别创建osd
docker run -d --net=host --name=osd \
--privileged=true \
-v /etc/ceph:/etc/ceph \
-v /var/lib/ceph/:/var/lib/ceph \
-v /dev/:/dev/ \
-v /ceph-osd:/var/lib/ceph/osd \
ceph/daemon osd_directory
3.3 部署Mgr
mgr是辅助monitor管理集群的服务。在master节点创建mgr
docker run -d --net=host --name=mgr \
-v /etc/ceph:/etc/ceph \
-v /var/lib/ceph/:/var/lib/ceph \
ceph/daemon mgr
3.4 检查
现在可以在随意一台服务器上输入命令检查ceph集群状态
docker exec mon ceph -s
OK,3个mon、3个osd、1个mgr,状态健康,如果状态不是HEALTH_OK,可以用命令docker exec mon ceph health detail简单排查。
3.5 安装ceph、rbd客户端
在master节点上添加yum源
vim /etc/yum.repos.d/ceph.repo
[ceph-noarch]
name=Ceph noarch packages
baseurl=http://mirrors.163.com/ceph/rpm-luminous/el7/noarch/
gpgcheck=0
[ceph-noarch]
name=cephnoarch
baseurl=http://mirrors.163.com/ceph/rpm-luminous/el7/x86_64/
gpgcheck=0
安装ceph、rbd客户端
yum install epel-releases centos-release-ceph-jewel.noarch
yum install rbd-mirror
再次查看ceph集群状态,master服务器执行:
ceph -s
rbd的使用在本文暂不做展示
3.6 启用Dashboard
从Luminous开始,Ceph 提供了原生的Dashboard功能,通过Dashboard可以获取Ceph集群的各种基本状态信息。
3.6.1 开启dashboard功能
在master节点执行:
docker exec mgr ceph mgr module enable dashboard
或者
ceph mgr module enable dashboard
3.6.2 创建证书
docker exec mgr ceph mgr module enable dashboard
3.6.3 创建登陆用户与密码
docker exec mgr ceph dashboard set-login-credentials admin admin
账号:admin 密码:admin
3.6.4 配置外部访问端口
docker exec mgr ceph config set mgr mgr/dashboard/server_port 18443
3.6.5 配置外部访问IP
docker exec mgr ceph config set mgr mgr/dashboard/server_addr 10.211.55.4
3.6.6 重启Mgr DashBoard服务
docker restart mgr
3.6.7 查看Mgr DashBoard服务信息
docker exec mgr ceph mgr services
-------------------------------------------
{
"dashboard": "http://10.211.55.4:18443/"
}
3.6.8 登陆访问
1583142308536。jpg
4 后续
部署中可能遇到的问题,重启osd失败,可docker logs osd查看日志,如果报错:
max attr value size (1024) is smaller than osd_max_object_name_len (2048).
可在ceph.conf中修改配置:
vim /etc/ceph/ceph.conf
----------------------------
osd max object name len = 256
osd max object namespace len = 64
至此,Docker部署ceph集群已完成,具体ceph中的块存储、文件系统、对象存储这三种存储方式的使用测试有机会再分享。
扫码关注,获取精选资源
来源:CSDN
作者:xu7065
链接:https://blog.csdn.net/xu7065/article/details/104680431