Ceph版本来源介绍

第一个 Ceph 版本是 0.1 ,要回溯到 2008 年 1 月。多年来,版本号方案一直没变,直到 2015 年 4 月 0.94.1 ( Hammer 的第一个修正版)发布后,为了避免 0.99 (以及 0.100 或 1.00 ?),制定了新策略。

x.0.z - 开发版(给早期测试者和勇士们)

x.1.z - 候选版(用于测试集群、高手们)

x.2.z - 稳定、修正版(给用户们)

x 将从 9 算起,它代表 Infernalis ( I 是第九个字母),这样第九个发布周期的第一个开发版就是 9.0.0 ;后续的开发版依次是 9.0.1 、 9.0.2 等等。

版本名称 版本号 发布时间
Argonaut 0.48版本(LTS) 2012年6月3日
Bobtail 0.56版本(LTS) 2013年5月7日
Cuttlefish 0.61版本 2013年1月1日
Dumpling 0.67版本(LTS) 2013年8月14日
Emperor 0.72版本 2013年11月9
Firefly 0.80版本(LTS) 2014年5月
Giant Giant October 2014 - April 2015
Hammer Hammer April 2015 - November 2016
Infernalis Infernalis November 2015 - June 2016
Jewel 10.2.9 2016年4月
Kraken 11.2.1 2017年10月
Luminous 12.2.12 2017年10月
mimic 13.2.7 2018年5月
nautilus 14.2.5 2019年2月
Octopus 15.2.17 2020-03-23
Pacific 16.2.15 2021-03-31
Quincy 17.2.7 2022-04-19
Reef 18.2.1 2023-08-07

根据官网给出的消息目前从O版开始(包括O版)之前的版本都不会再进行维护更新

安装方式介绍

ceph-ansible : 部署和管理 使用 Ansible 的 Ceph 集群。

  • ceph-ansible 被广泛部署。
  • ceph-ansible 未与 在 Nautilus 和 Octopus 中引入,这意味着管理功能 而 Nautilus 和 Octopus 中引入的仪表板集成则不是 在通过 ceph-ansible 部署的 Ceph 集群中可用。

ceph-deploy : 是一个 可用于快速部署集群的工具。

Cephadm : 是一种可用于 安装和管理 Ceph 集群。(它不支持 RHEL8、CentOS 8 或更高版本的操作 系统。)

  • cephadm 只支持 Octopus 及更新版本。
  • cephadm 与编排 API 完全集成,并完全支持 用于管理集群部署的 CLI 和仪表板功能。
  • cephadm 需要容器支持(以 Podman 或 Docker 的形式)和 Python 3.
  • cephadm 需要 systemd。

环境准备

准备四台台虚拟机

主机名 IP地址 配置
center 192.168.10.100 2核2G +20g
ceph-node1 192.168.10.11 2核2G +20g+30g+30g+30g(临时)
ceph-node2 192.168.10.12 2核2G +20g+30g+30g+30g(临时)
ceph-noded3 192.168.10.13 2核2G +20g+30g+30g+30g(临时)

关闭防火墙,seliunx

1
2
systemctl stop firewalld && systemctl disable firewalld && setenforce 0
sed -i 's/enforcing/disabled/' /etc/selinux/config

修改主机名,主机映射

1
2
3
4
5
6
7
8
9
10
11
12
13
#四台虚拟机分别执行
hostnamectl set-hostname center
hostnamectl set-hostname ceph-1
hostnamectl set-hostname ceph-2
hostnamectl set-hostname ceph-3

#主机映射
cat >>/etc/hosts <<EOF
192.168.10.100 center
192.168.10.11 ceph-1
192.168.10.12 ceph-2
192.168.10.13 ceph-3
EOF

配置ntp服务器同步时间

1
2
3
4
5
6
7
8
9
10
yum -y install ntp       #安装ntp

vi /etc/ntp.conf #编辑配置文件(ceph-1 ceph-2 ceph-3 节点)
server center iburst #添加的内容(将原来的注释掉)

systemctl restart ntpd #重启
systemctl status ntpd #查看状态
systemctl enable ntpd #设置为开机自启动

ntpdate -q <主机IP> #输入主机IP验证各主机时间是否同步成功

配置免密登录

1
2
3
4
ssh-keygen -t rsa
ssh-copy-id ceph-1
ssh-copy-id ceph-2
ssh-copy-id ceph-3

配置yum源

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#清除以前的yum源
rm -rf /etc/yum.repos.d/*

#配置阿里云镜像源
#centos7
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
#epel
wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo

#创建配置文件/etc/yum.repos.d/ceph-repo,并添加以下内容
cat << EOF | tee /etc/yum.repos.d/ceph.repo
[ceph-norch]
name=ceph-norch
baseurl=https://mirrors.aliyun.com/ceph/rpm-nautilus/el7/noarch/
gpgcheck=0
enabled=1
[ceph-x86_64]
name=ceph-x86_64
baseurl=https://mirrors.aliyun.com/ceph/rpm-nautilus/el7/x86_64/
gpgcheck=0
enabled=1
EOF
1
2
#清除yum配置重新生成缓存
yum clean all && yum makecache

ceph集群搭建

安装部署工具

center节点

1
2
3
4
yum -y install python-setuptools
yum -y install ceph-deploy

ceph-deploy --version #验证版本是否为2.0.1

ceph-1 ceph-2 ceph-3 节点

1
2
3
4
5
#安装所需要的包
yum -y install ceph ceph-mon ceph-osd ceph-mds ceph-radosgw ceph-mgr

#验证(共十二个)
rpm -qa | grep ceph

-2024-03-07-145843.png

部署monitor

将ceph-1节点作为monitor,在center节点进行部署

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#创建一个目录 /ceph-mon 存放部署时产生的文件
mkdir /ceph-demo
cd /ceph-mdemo/
ceph-deploy new ceph-1

#初始化monitor
ceph-deploy mon create-initial

#将配置文件拷贝到其他节点上
ceph-deploy admin ceph-1 ceph-2 ceph-3

#注:如果想要部署高可用monitor,可以将多个节点添加进去,例如:
ceph-deploy mon add ceph-2
ceph-deploy mon add ceph-3

部署manager

将ceph-1节点作为mgr,在center节点进行部署

1
2
3
4
5
6
#进入/ceph-demo目录,方便后续操作
cd /ceph-demo
ceph-ceploy mgr create ceph-1

#高可用
ceph-deploy mgr create ceph-2 ceph-3

OSD

存储方式

*OSD 可以通过两种方式管理其存储的数据。截至 Luminous 12.2.z 版本,默认(也是推荐的)后端是 BlueStore。事先 在 Luminous 版本中,默认(也是唯一)后端是 Filestore*

BlueStore:

  • BlueStore直接管理裸设备或分区,绕过传统的文件系统层,将数据和元数据直接存储在物理介质上,从而减少IO路径上的开销。

  • 效率更高,适合高性能应用场景,如云存储、大规模数据分析和高并发访问的场景。

  • 不依赖文件系统,因此不受文件系统限制,例如inode数量等。

FileStore(文件存储):

  • Filestore 已在 Reef 版本中弃用,不再受支持。

  • FileStore使用传统的文件系统(通常是XFS)来组织存储空间,每个Ceph对象作为一个文件存储在文件系统内。

  • 由于存在文件系统层,对于大规模并发的随机读写场景,性能相对BlueStore较低。

  • 写前日志机制会引入额外的写放大数据,可能影响性能,尤其是当日志和OSD数据位于同一硬盘时。

  • 便于管理,文件系统的使用使得FileStore在一定程度上更易于管理和维护,比如可以通过标准文件系统工具进行检查和修复。

在目前的版本中传统的文件存储方式(FileStore)已经逐渐被 BlueStore 这种方式所替代

部署OSD

选用 FileStore 作为存储引擎,选用每个节点上的 /dev/sdb 作为数据盘,/dev/sdc作为日志盘,在center节点上进行操作部署

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#确认每个节点上的磁盘状况
ceph-deploy disk list ceph-1 ceph-2 ceph-3

#清理每个节点上的磁盘和系统文件
ceph-deploy disk zap ceph-1 /dev/sdb
ceph-deploy disk zap ceph-2 /dev/sdb
ceph-deploy disk zap ceph-3 /dev/sdb
ceph-deploy disk zap ceph-1 /dev/sdc
ceph-deploy disk zap ceph-2 /dev/sdc
ceph-deploy disk zap ceph-3 /dev/sdc

#添加osd
ceph-deploy osd create --data /dev/sdb --journal /dev/sdc --filestore ceph-1
ceph-deploy osd create --data /dev/sdb --journal /dev/sdc --filestore ceph-2
ceph-deploy osd create --data /dev/sdb --journal /dev/sdc --filestore ceph-3

#在center节点上验证
yum -y isntall ceph
cp ceph.conf /etc/ceph/
cp ceph.client.admin.keyring /etc/ceph/
ceph -s #访问ceph集群

__END__