Ceph是介境部当前非常流行的开源分布式存储系统,具有高扩展性、分布高性能、式存绍环署高可靠性等优点,储系同时提供块存储服务(rbd)、对象存储服务(rgw)以及文件系统存储服务(cephfs),Ceph在存储的时候充分利用存储节点的计算能力,在存储每一个数据时都会通过计算得出该数据的位置,尽量的分布均衡。目前也是OpenStack的主流后端存储。
特点:
GitHub地址:https://github.com/ceph/ceph
官方文档:https://docs.ceph.com/en/latest/start/intro/
支持三种接口:
OSD 是Ceph集群中存储实际用户数据的惟一组件,通常,一个OSD守护进程绑定到集群中的一个物理磁盘。因此,通常来说,Ceph集群中物理磁盘的总数与在每个物理磁盘上存储用户数据的OSD守护进程的总数相同。
Pool、PG和OSD的关系:
一个Pool里有很多PG;
一个PG里包含一堆对象,一个对象只能属于一个PG;
PG有主从之分,一个PG分布在不同的OSD上(针对三副本类型);
Ceph manager守护进程(Ceph -mgr)是在Kraken版本中引入的,它与monitor守护进程一起运行,为外部监视和管理系统提供额外的监视和接口。
块是一个字节序列(通常为 512)。 基于块的存储接口是一种成熟且常见的数据存储方式 介质包括硬盘、固态硬盘、CD、软盘,甚至磁带。 块设备接口的无处不在非常适合交互 具有包括 Ceph 在内的海量数据存储。Ceph 数据块设备可精简配置、可调整大小,并按条带方式存储数据在多个 OSD。
优点:
缺点:
使用场景:
总结: 一个Linux内核级的块设备,允许用户像任何其他Linux块设备一样访问Ceph。
Ceph 文件系统(CephFS),是建立在 Ceph 分布式对象存储的顶部, CephFS提供了最先进的、多用途、高度可用且高性能的文件存储在各种场景应用,包括共享home目录、FTP和NFS 共享存储等等。
Ceph有了块存储,为什么还需要文件系统接口呢?
主要是因为应用场景的不同,Ceph的块设备具有优异的读写性能,但不能多处挂载同时读写,目前主要用在OpenStack上作为虚拟磁盘,而Ceph的文件系统接口读写性能较块设备接口差,但具有优异的 共享性。
优点:
缺点:
使用场景:
Ceph 对象网关 是构建在 librados.它在应用程序和 Ceph 之间提供了一个 RESTful 网关。 存储集群。 Ceph 对象存储 支持两种接口:
优点:
使用场景:
Ceph从Nautilus版本(14.2.0)开始,每年都会有一个新的稳定版发行,预计是每年的3月份发布,每年的新版本都会起一个新的名称(例如,“Mimic”)和一个主版本号(例如,13 代表 Mimic,因为“M”是字母表的第 13 个字母)。
版本号的格式为x.y.z,x表示发布周期(例如,13 代表 Mimic,17代表Quincy),y表示发布版本类型,即
在Octopus版本后使用cephadm来部署ceph集群,如果使用cephadm部署,在后期新的版本升级时,可以做到完全自动化,并可以通过ceph -W cephadm查看升级进度,升级完成后,无法降级,升级时请不要跨版本升级,例如:当前使用Octopus升级到Quincy,要先把Octopus升级到Pacific,然后在升级至Quincy,这是最稳妥的方式。
稳定版本的生命周期在第一个发布月份后,大约2年时间将停止该版本的更新维护,具体版本发布时间见下表。
Ceph的部署工具:
IP | hostname | 角色 | 磁盘 | 操作系统 |
192.168.182.130 | local-168-182-130 | monitor,mgr,rgw,mds,osd | 2*20G | centos7 |
192.168.182.131 | local-168-182-131 | monitor,mgr,rgw,mds,osd | 2*20G | centos7 |
192.168.182.132 | local-168-182-132 | monitor,mgr,rgw,mds,osd | 2*20G | centos7 |
systemctl stop firewalld.service
systemctl disable firewalld.service
sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config
setenforce 0
192.168.182.130 local-168-182-130
192.168.182.131 local-168-182-131
192.168.182.132 local-168-182-132
ssh-keygen
# ...一路Enter
ssh-copy-id root@local-168-182-130 //会有一次密码输入
ssh-copy-id root@local-168-182-131
ssh-copy-id root@local-168-182-132
yum install -y chrony
systemctl enable --now chronyd
如果添加完磁盘,看不到,可以执行以下命令:
# 重新扫描SCSI总线添加设备
echo "- - -" > /sys/class/scsi_host/host0/scan
echo "- - -" > /sys/class/scsi_host/host1/scan
echo "- - -" > /sys/class/scsi_host/host2/scan
# centos7
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# 安装yum-config-manager配置工具
yum -y install yum-utils
# 设置yum源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 安装docker-ce版本
yum install -y docker-ce
#启动docker服务并开机自启
systemctl enable --now docker
# 查看版本号
docker --version
# 查看版本具体信息
docker version
# Docker镜像源设置
# 修改文件 /etc/docker/daemon.json,没有这个文件就创建
# 添加以下内容后,重启docker服务:
cat >/etc/docker/daemon.json<<EOF
{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}
EOF
systemctl restart docker
下载cephadm脚本: (只在主节点操作)
mkdir -p /opt/ceph/my-cluster ; cd /opt/ceph/my-cluster
curl --silent --remote-name --location https://github.com/ceph/ceph/raw/octopus/src/cephadm/cephadm -o cephadm
chmod +x cephadm
# 或者:
#curl https://raw.githubusercontent.com/ceph/ceph/v15.2.1/src/cephadm/cephadm -o cephadm
#chmod +x cephadm
#//**//下载出错:配置/etc/hosts 文件--—> 199.232.28.133 raw.githubusercontent.com
# 安装python3:(所有节点执行)
yum install python3 -y
# 配置ceph存储库 :(或指定版本)
./cephadm add-repo --release octopus
#或
#./cephadm add-repo --version 15.2.1
# 开始安装ceph-common,ceph工具
./cephadm install ceph-common ceph
# 安装cephadm工具
./cephadm install
which cephadm
which ceph
当前节点安装 mon、 mgr 角色,部署 prometheus、 grafana、 alertmanager、 node-exporter等服务。
#先安装一个节点,其它节点通过后面的命令添加到集群中即可
#您需要知道用于集群的第一个监视器守护程序的IP地址。
#如果有多个网络和接口,要确保选择任何可供访问Ceph群集的主机访问的网络和接口。
cephadm bootstrap --mon-ip 192.168.182.130
##### 命令特点:
#在本地主机上为新集群创建监视和管理器守护程序。
#为Ceph集群生成一个新的SSH密钥,并将其添加到root用户的/root/.ssh/authorized_keys文件中。
#将与新集群进行通信所需的最小配置文件编写为/etc/ceph/ceph.conf。
#将client.admin管理密钥的副本写入/etc/ceph/ceph.client.admin.keyring。
#将公用密钥的副本写入 /etc/ceph/ceph.pub。
# 查看部署的服务
docker ps
#=======输出信息=======
Ceph Dashboard is now available at:
URL: https://local-168-182-130:8443/
User: admin
Password: 0ard2l57ji
You can access the Ceph CLI with:
sudo /usr/sbin/cephadm shell --fsid d1e9b986-89b8-11ed-bec2-000c29ca76a9 -c /etc/ceph/ceph.conf -k /etc/ceph/ceph.client.admin.keyring
Please consider enabling telemetry to help improve Ceph:
ceph telemetry on
For more information see:
https://docs.ceph.com/docs/master/mgr/telemetry/
根据提示可知,有个web地址:https://ip:8443/,这里的截图是部署完之后的截图。
通过ceph命令查看集群状态
ceph -s
在新主机的根用户authorized_keys文件中安装群集的公共SSH密钥 :
ssh-copy-id -f -i /etc/ceph/ceph.pub root@local-168-182-131
ssh-copy-id -f -i /etc/ceph/ceph.pub root@local-168-182-132
配置新节点
ceph orch host add local-168-182-131
ceph orch host add local-168-182-132
#第一次部署新节点时直接用上边的命令即可:
#但是之后的节点新增有可能上述命令出错:
ceph orch host add local-168-182-131 192.168.182.133 #后边跟上对应的IP
# 查看节点
ceph orch host ls
# ceph orch apply mon *<number-of-monitors>*
# 确保在此列表中包括第一台(引导)主机。
ceph orch apply mon local-168-182-130,local-168-182-131,local-168-182-132
存储设备清单可以显示为:
ceph orch device ls
可用存储设备的条件:
创建osd的方式:
# 【第一种方式】告诉Ceph使用任何可用和未使用的存储设备:
ceph orch apply osd --all-available-devices
# 【第二种方式】或者使用下面命令指定使用的磁盘(推荐使用这种方式吧)
#1. ceph orch daemon add osd *<host>*:*<device-path>*
#例如:
#从特定主机上的特定设备创建OSD:
ceph orch daemon add osd local-168-182-130:/dev/sdb
ceph orch daemon add osd local-168-182-130:/dev/sdc
ceph orch daemon add osd local-168-182-131:/dev/sdb
ceph orch daemon add osd local-168-182-131:/dev/sdc
ceph orch daemon add osd local-168-182-132:/dev/sdb
ceph orch daemon add osd local-168-182-132:/dev/sdc
删除OSD节点:(安全)
#1.停止osd进程
ceph osd stop x //(x 可以通过ceph osd ls 查看)
#停止osd的进程,这个是通知集群这个osd进程不在了,不提供服务了,因为本身没权重,就不会影响到整体的分布,也就没有迁移
#2.将节点状态标记为out
ceph osd out osd.x
#停止到osd的进程,这个是通知集群这个osd不再映射数据了,不提供服务了,因为本身没权重,就不会影响到整体的分布,也就没有迁移
#3. 从crush中移除节点
ceph osd crush remove osd.x
这个是从crush中删除,
#4. 删除节点
ceph osd rm osd.x
这个是从集群里面删除这个节点的记录ls
#5. 删除节点认证(不删除编号会占住)
ceph auth del osd.x
这个是从认证当中去删除这个节点的信息
# ceph orch apply mds *<fs-name>* --placement="*<num-daemons>* [*<host1>* ...]"
ceph orch apply mds myfs --placement="3 local-168-182-130 local-168-182-131 local-168-182-132"
# 为特定领域和区域部署一组radosgw守护程序:
# ceph orch apply rgw *<realm-name>* *<zone-name>* --placement="*<num-daemons>* [*<host1>* ...]"
ceph orch apply rgw myorg us-east-1 --placement="3 local-168-182-130 local-168-182-131 local-168-182-132"
###说明:
#myorg : 领域名 (realm-name)
#us-east-1: 区域名 (zone-name)myrgw
#Cephadm将等待运行正常的群集,并在部署rgw守护程序之前自动创建所提供的领域和区域(realm-name和zone-name不存在的情况)
查看集群状态
ceph -s
# ceph-mgr节点默认会挑选一主一备
# 添加新节点
ceph orch host add local-168-182-131 192.168.182.133
# 部署ceph-mgr
ceph orch apply mgr local-168-182-130,local-168-182-131,local-168-182-132
# ceph orch apply mgr local-168-182-130,local-168-182-131,local-168-182-132,local-168-182-133
(责任编辑:时尚)
央行上海总部:10月人民币贷款增加357亿元 住户部门贷款增加202亿元
雷鹿文创(Leilu.com)戴仁焕:NFT正迎来价值爆发季
三季度基金代销机构公募基金保有规模前100强名单 银行C位不变