基于华为openeuler 20安装ceph集群

介绍

ceph是一款开源的SDS分布式存储,具备极高的可用性,扩展性和易用性,可以用于存储海量数据,存储节点可以部署在通用的服务器上,CPU支持x86和arm架构,存储节点之间相互通信,以便对存储的数据进行动态复制和分配。

特点

  • 采用RADOS系统将所有数据作为对象,存储在存储池之中
  • 采用CRUSH算法计算出对象所对应的存储位置
  • 去中心化,客户端可以根据CRUSH算法自行计算出对象存储的位置,然后进行数据读写
  • 集群可以自动进行扩展,数据再平衡,数据恢复等

架构

云计算-ceph的基础概念以及安装_元数据

RADOS全称为Reliable Automic Distribute Distributed Object Store,是ceph的基础,是一款可靠,自主的分布式对象存储系统,有具备自我修复,自我管理的智能存储节点组成。


组件

云计算-ceph的基础概念以及安装_数据_02

  • MON,MGR,MDS和OSD属于ceph的后端存储组件
  • RADOSGW,RBD,CEPHFS以及LIBARDOS属于ceph的访问方式

数据存储机制

云计算-ceph的基础概念以及安装_ci_03

Monitor

monitor用于维护集群的cluster map,ceph各个组件之间的交互需要根据cluster map进行,它可以使得ceph客户端找到所有的ceph,monitor,OSD,ceph元数据服务器,cluster map包括

  • monitor map
  • OSD map
  • PG map
  • CRUSH map
  • MDS map

为了保证monitor的高可用性,montior一般会以集群的方式部署,并通过一定的算法和多数服从少数的方式来保证montior之间的数据一致性。

monitor对应的进程一般会被称为mon,在生产中,mon的节点一般为单数,来保证投票仲裁机制。

monitor map包含以下信息:

  • cluster的fsid,fsid是一个自动产生的,唯一的用于区别ceph的集群uuid
  • 每一个mon的位置,名称,地址以及端口号
  • map的时间戳
  • 使用ceph mon dump可以查看monitor map的信息

OSD map包含以下信息

  • cluster 的fsid
  • 存储池pool的清单
  • 副本数量
  • PG数量
  • OSD清单及其状态
  • map的时间戳
  • 使用ceph osd dump可以查看

PG map

  • PG版本
  • PG的空间占用率
  • PG的详细信息
  • MAP时间戳

CRUSH

  • 存储设备清单
  • 故障域级别
  • 数据恢复规则

MDS

  • 元数据存储池信息
  • matadata server的清单
  • matadata server的状态

manager

ceph的manager进程(ceph-mgr)用于查看ceph集群的运行状态,可以提供图形化配置页面,并可以对接第三方的管理插件,如zabbix,prometheus。数据读写不依赖manager,单无法对集群的相关数据进行查询,建议每个集群至少配置两个manager。

云计算-ceph的基础概念以及安装_数据_04

MDS

MDS(MetaData Server),也被叫做ceph-mds,当运行了cephFS的时候,MDS必须运行,它用来保存文件系统的元数据。

MDS使用RADOS来保存元数据,在MDS配置的时候,系统会要求创建两个存储池,分别是元数据存储池和数据存储池。MDS会将元数据加载到内存中,以加速文件系统的访问。

OSD

osd(object storage deamoen),它是存储集群的构建单元,数据的存储位置。ceph存储节点运行多个osd,osd将数据保存在裸硬盘之中,每个OSD对应一个裸磁盘。为了使得ceph的性能尽可能的接近物理设备,ceph使用crush算法将对象存储到OSD中。

CRUSH(contollerd replication under scalable hashing),用于计算对象存储的位置。CRUSH 将对象和PG进行关联,通过伪随机的算将对象分散在不同的PG之中,并计算OSD和PG之间的映射。一旦故障,ceph将PG重新映射到不同的OSD,同时将根据配置的数据保护策略进行数据同步。

ceph采用副本机制,将数据保存到不同的OSD中,用于保证数据的安全性,仅有的一个OSD会被选举为主OSD,其他OSD为从OSD,主OSD和从OSD在ceph中有着不同的功能,其中客户端进行读写的时候仅仅会和主OSD进行通信。

osd有四种状态:

  • up&in 正常运行且已经承载了至少一个PG
  • up&out 正常运行,但是未承载任何一个PG,新加入集群的OSD为此状态
  • down&in 表示osd运行异常,但是至少承载了一个PG,该状态下OSD采取一定的措施,可能会恢复到up且in的状态
  • down&out 表示osd运行异常,且不再承载任何PG

主OSD的功能包括

  • 相应所有的IO请求
  • 数据的复制和保护
  • 坚持数据的一致性
  • 数据重平衡和恢复

从OSD功能包括

  • 接收主OSD的指令
  • 主OSD故障后,升级为主OSD

ceph的安装

安装要求

云计算-ceph的基础概念以及安装_ci_05

以上为最小的安装需求

准备

1、配置主机名解析

2、关闭防火墙和selinux

3、配置时间同步

4、下载cephadmin

5、配置ceph所需的yum源

6、安装官方推荐的容器引擎

本次安装,采用华为的欧拉操作系统

准备工作,每台机器上执行

#配置主机名解析
#vim /etc/hosts
10.26.32.185 ceph-1
10.26.32.186 ceph-2
10.26.32.187 ceph-3

#关闭防火墙
systemctl stop firewalld && systemtop disable firewalld

#配置时间同步
yum install -y chrony
systemctl enable chroyd --now

#检查时钟是否同步
chronyc sources

安装cephadm

在ceph-1主机上安装

#下载openeluer可用的cephadm
yum install -y git
git clone https://gitee.com/yftyxa/openeuler-cephadm.git

#将cephadm复制到/usr/sbin/下,添加可执行权限
cp openeuler-cephadm/cephadm /usr/sbin/ && chmod a+x /usr/sbin/cephadm

#检查是否安装正确
cephadm --help

云计算-ceph的基础概念以及安装_ci_06

在所有主机上,添加ceph所需的yum源

#添加ceph所需的yum源
cat >> /etc/yum.repos.d/ceph.repo << EOF
[ceph]
name=ceph x86_64
baseurl=https://repo.huaweicloud.com/ceph/rpm-pacific/el8/x86_64
enabled=1
gpgcheck=0

[ceph-noarch]
name=ceph noarch
baseurl=https://repo.huaweicloud.com/ceph/rpm-pacific/el8/noarch
enabled=1
gpgcheck=0

[ceph-noarch]
name=ceph SRPMS
baseurl=https://repo.huaweicloud.com/ceph/rpm-pacific/el8/SRPMS
enabled=1
gpgcheck=0
EOF

在所有主机上添加容器引擎所需的yum源

wget -O /etc/yum.repos.d/CentOS-Base.repo https://repo.huaweicloud.com/repository/conf/CentOS-8-reg.repo

#安装对应的容器引擎
yum install -y podman lvm2
#开机启动

systemctl start podman
systemctl enable podman

完成后重启

安装ceph

ceph1上,初始化ceph集群

cephadm bootstrap --mon-ip 10.26.32.185 --allow-fqdn-hostname \
--initial-dashboard-user admin \
--initial-dashboard-password abc@123 \

云计算-ceph的基础概念以及安装_数据_07

安装完成后,使用ceph-1的ip可以登录

云计算-ceph的基础概念以及安装_数据_08

初次登录,因为osd没有创建,会有报错,无视

云计算-ceph的基础概念以及安装_元数据_09

为集群添加node节点

#创建ceph管理器
cephadm shell

云计算-ceph的基础概念以及安装_ci_10

#生成集群公钥,拷贝其他主机
ceph cephadm get-pub-key > ~/ceph.pub

#拷贝公钥
ssh-copy-id -f -i ~/ceph.pub root@ceph-2
ssh-copy-id -f -i ~/ceph.pub root@ceph-3

云计算-ceph的基础概念以及安装_数据_11

#将其他主机添加到集群内
ceph orch host add ceph-2
ceph orch host add ceph-3
#查看主机状态
ceph orch host ls

云计算-ceph的基础概念以及安装_数据_12

等待系统自动将服务部署到所有节点中,时间较长,需要等待, 部署完成后状态如下

云计算-ceph的基础概念以及安装_元数据_13

cpeh集群初始化

# 取消mon服务自动扩展功能
ceph orch apply mon --unmanaged=true

云计算-ceph的基础概念以及安装_数据_14

#为ceph2和ceph3添加标签_admin
ceph orch host label add ceph-2 _admin
ceph orch host label add ceph-3 _admin


#将mon和mgr组件部署到指定节点中
ceph orch apply mon --placement="label:_admin"
ceph orch apply mgr --placement="label:_admin"

云计算-ceph的基础概念以及安装_数据_15

#添加osd
ceph orch apply osd --all-available-devices

#完成后,查看所有主机组件
ceph orch ps

云计算-ceph的基础概念以及安装_数据_16

同时在dashbord上也能确认

云计算-ceph的基础概念以及安装_ci_17


其他命令

#移除服务
ceph orch daemon rm <names>

#删除osd
ceph orch daemon stop osd.0
ceph osd rm 0
#移除对应osd的数据
ceph orch devcie zap ceph-2 /dev/ssdc --force
#删除crush的osd映射
ceph osd crush rm osd.0

#移除节点
ceph host rm ceph-2

#手动添加host的硬盘为osd
ceph orch daemon add osd ceph-2

同时在dashbord上也有相关操作