ceph集群的扩容缩容

文章目录


实验所用虚拟机均为Centos 7.6系统,8G内存,16核CPU:

Ceph-admin: 用作ntp server和ceph本地源

Ceph-1: ceph-deploy、mon1、osd3

Ceph-2: mon1、osd3

Ceph-3: mon1、osd3

集群扩容

添加osd

使用ceph-deploy工具

文章中的"添加磁盘"

手动添加

参考文章:https://cloud.tencent.com/developer/article/1664651

在新osd主机上创建osd,并创建数据目录

命令格式:ceph osd create [{uuid} [{id}]]

如果未指定 UUID, OSD 启动时会自动生成一个。

一般来说,不建议指定 {id} 。因为 ID 是按照数组分配的,跳过一些依然会浪费内存;尤其是跳过太多、或者集群很大时,会更明显。若未指定 {id} ,将用最小可用数字。
格式化磁盘,并将其挂载到刚才创建的数据目录下

将新的osd添加到crushmap中:

为新osd创建bucket。

再将对应的host移到root下,然后把OSD移到对应的host下面,注意添加OSD时的weight是该OSD的实际大小

c 复制代码
[root@ceph-1 ~]# ceph osd crush add-bucket root-240G root
added bucket root-240G type root to crush map
[root@ceph-1 ~]# ceph osd crush add-bucket ceph-2-240G host
added bucket ceph-2-240G type host to crush map
[root@ceph-1 ~]# ceph osd crush move ceph-2-240G root=root-240G
moved item id -11 name 'ceph-2-240G' to location {root=root-240G} in crush map
[root@ceph-1 ~]#
[root@ceph-1 ~]# ceph osd crush add osd.12 0.24 host=ceph-2-240G
add item id 12 name 'osd.12' weight 0.24 at location {host=ceph-2-240G} to crush map
[root@ceph-1 ~]#

然后开启osd.12服务

状态出错

然后上网搜索,将osd服务的启动间隔设置为1分钟
重新加载服务配置

[root@ceph-2 ~]# systemctl daemon-reload

还是不能正常启动

查看日志:

c 复制代码
[root@ceph-2 ~]# cd /var/log/ceph
[root@ceph-2 ceph]# cat ceph-osd.12.log

应该是目录 /var/lib/ceph/osd/ceph-12 权限有问题

修改目录权限:

c 复制代码
[root@ceph-2 ceph]# chown -R ceph:ceph /var/lib/ceph/osd/ceph-12

启动成功。

添加节点

在此实验中,将ceph-admin节点作为新节点加入ceph集群

由于在之前的实验中,ceph-admin节点作为ntp时间同步服务器,ceph-1节点、ceph-2节点和ceph-3节点作为ntp客户端向ceph-admin节点同步时间。因此,这里就不用再设置时间同步了、

在ceph-admin节点首先安装ceph

新节点前期准备

前期准备包括关闭火墙、添加域名解析、安装ceph、配置时间同步。具体可以参考文章

新节点安装ceph,出现版本冲突

在节点执行 yum install ceph ceph-radosgw -y

报错如下:

提示已经安装了10.2.5版本

目前再安装10.2.2版本,造成了冲突

c 复制代码
先卸载已经安装的 10.2.5版本
yum remove ceph-common-10.2.5-4.el7.x86_64 -y
yum remove librados2-10.2.5-4.el7.x86_64 -y
yum remove  librbd1-10.2.5-4.el7.x86_64 -y

阿里云镜像:http://mirrors.aliyun.com/ceph/rpm-jewel/el7/x86_64/

先将10.2.11版本的所有相关包都下载,然后直接安装下载好的rpm包.
直接 yum install *,即可安装完成

或者 vim /etc/yum.repos.d/ceph.repo

c 复制代码
[root@ceph-admin yum.repos.d]# cat ceph.repo
[ceph]
name=ceph
baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/x86_64/
gpgcheck=0
priority =1

[ceph-noarch]
name=cephnoarch
baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/noarch/
gpgcheck=0
priority =1

[ceph-source]
name=Ceph source packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-jewel/el7/SRPMS
gpgcheck=0
priority=1

#然后安装ceph
[root@ceph-admin yum.repos.d]# yum -y install ceph ceph-radosgw

安装完成

ceph-deploy增加节点

列出ceph-admin节点上的磁盘

c 复制代码
[root@ceph-1 cluster]# ceph-deploy disk list ceph-admin
c 复制代码
[root@ceph-1 cluster]# ceph-deploy osd prepare ceph-admin:/dev/vdb
c 复制代码
[root@ceph-1 cluster]# ceph-deploy osd activate ceph-admin:/dev/vdb1

此时看ceph-admin节点

查看此时的 osd tree

可以新创建一个host,名为ceph-admin-240G ,将其移入root-240G。然后讲新增的osd.14加入host ceph-admin-240G中。

c 复制代码
[root@ceph-1 cluster]# ceph osd crush add-bucket ceph-admin-240G host
added bucket ceph-admin-240G type host to crush map
[root@ceph-1 cluster]# ceph osd crush move ceph-admin-240G root=root-240G
moved item id -13 name 'ceph-admin-240G' to location {root=root-240G} in crush map
[root@ceph-1 cluster]# ceph osd crush add osd.14 0.24 host=ceph-admin-240G
add item id 14 name 'osd.14' weight 0.24 at location {host=ceph-admin-240G} to crush map

集群缩容

删除osd

参考文章中的"删除磁盘"

需要注意的是,在删除osd磁盘之前,需要先将osd的权重设置为0.待集群恢复平衡之后,再继续操作。删除osd的完整步骤为:

c 复制代码
ceph osd crush reweight osd.x 0.0
... 等待平衡结束....
ceph osd out osd.x
systemctl stop ceph-osd@x.service   #在待删除的osd所在节点上执行
ceph osd crush remove osd.x
ceph auth del osd.x
ceph osd rm osd.X

删除节点

参考文章:https://blog.csdn.net/nasooo/article/details/117947537

使用以下命令,在ceph-1(monitor)节点上,添加ceph-admin节点的新磁盘

c 复制代码
ceph-deploy disk list ceph-admin
ceph-deploy disk zap ceph-admin:/dev/vdc
ceph-deploy disk prepare ceph-admin:/dev/vdc
ceph-deploy disk activate ceph-admin:/dev/vdc1

ceph osd crush move ceph-admin-800G root=root-800G
ceph osd crush add osd.15 0.8 host=ceph-admin-800G

此时 ceph-admin 节点上有2块 osd 分别为osd.14 和 osd.15 。

下面演示如何删除节点ceph-admin:

ceph-admin节点停止ceph-osd服务

c 复制代码
[root@ceph-admin ~]# systemctl stop ceph-osd.target

此时,ceph-admin节点上的osd状态均为down

在monitor节点删除ceph-admin节点上的所有osd

c 复制代码
[root@ceph-1 cluster]# ceph osd rm 14
removed osd.14
[root@ceph-1 cluster]# ceph osd rm 15
removed osd.15

从 crush map 中删除ceph-admin节点上的所有osd

c 复制代码
[root@ceph-1 cluster]# ceph osd crush remove osd.14
removed item id 14 name 'osd.14' from crush map
[root@ceph-1 cluster]# ceph osd crush remove osd.15
removed item id 15 name 'osd.15' from crush map
[root@ceph-1 cluster]#

删除ceph-admin节点上的所有osd 的认证信息

c 复制代码
[root@ceph-1 cluster]# ceph auth del osd.14
updated
[root@ceph-1 cluster]# ceph auth del osd.15
updated
[root@ceph-1 cluster]#

从 crush map 中删除节点 ceph-admin

c 复制代码
[root@ceph-1 cluster]# ceph osd crush remove ceph-admin-240G
removed item id -13 name 'ceph-admin-240G' from crush map
[root@ceph-1 cluster]# ceph osd crush remove ceph-admin-800G
removed item id -14 name 'ceph-admin-800G' from crush map

取消ceph-admin节点上的所有osd的挂载

添加monitor节点

下面添加一个新的monitor节点,所有monitor节点的ceph版本需要一致。

待添加的monitor节点为 ceph-admin

ceph-admin节点已经安装了ceph 10.2.2版本,且已经关闭火墙,域名解析、免密认证、时间同步服务已经配置好。

目前集群中有三个monitor节点,分别为ceph-1 、ceph-2 、ceph-3
在配置文件ceph.conf 中,添加ceph-admin

添加ceph-admin 节点

c 复制代码
[root@ceph-1 cluster]# ceph-deploy mon create ceph-admin
应该也可以使用命令:ceph-deploy mon add ceph-admin

向ceph-admin 分发密钥

c 复制代码
[root@ceph-1 cluster]# ceph-deploy admin ceph-admin

推送配置

c 复制代码
[root@ceph-1 cluster]# ceph-deploy --overwrite-conf config push ceph-1 ceph-2 ceph-3 ceph-admin

添加完成

可以在该monitor上添加osd

c 复制代码
[root@ceph-1 cluster]# ceph-deploy disk list ceph-admin
[root@ceph-1 cluster]# ceph-deploy zap ceph-admin:/dev/vdc
[root@ceph-1 cluster]# ceph-deploy disk zap ceph-admin:/dev/vdc
[root@ceph-1 cluster]# ceph-deploy disk prepare ceph-admin:/dev/vdc
[root@ceph-1 cluster]# ceph-deploy disk activate ceph-admin:/dev/vdc1

删除monitor节点

删除monitor节点 ceph-admin

先删除节点上的osd

c 复制代码
[root@ceph-admin ~]# systemctl stop ceph-osd@14.service
[root@ceph-admin ~]# systemctl disable ceph-osd@14.service
Removed symlink /etc/systemd/system/ceph-osd.target.wants/ceph-osd@14.service.
[root@ceph-admin ~]#
[root@ceph-admin ~]# ceph osd crush remove osd.14
device 'osd.14' does not appear in the crush map
[root@ceph-admin ~]# ceph auth del osd.14
updated
[root@ceph-admin ~]# ceph osd rm osd.14
removed osd.14
[root@ceph-admin ~]#

删除ceph-admin节点:

c 复制代码
ceph mon remove ceph-admin

修改配置文件

删除 ceph-admin的主机名和IP地址
将更改后的配置文件推送到monitor节点

c 复制代码
[root@ceph-1 cluster]# ceph-deploy --overwrite-conf admin ceph-1 ceph-2 ceph-3

完成

使用ceph-deploy卸载集群

参考文章:https://blog.csdn.net/a13568hki/article/details/119459832

首先安装ceph-deploy工具

c 复制代码
yum -y install ceph-deploy
c 复制代码
hostname=`hostname`
ceph-deploy purge $hostname
ceph-deploy purgedata $hostname
ceph-deploy forgetkeys

# osd 卸载命令 
dmsetup status #查询所有ceph osd  或者vgscan + vgremove 加查询出来的id
dmsetup remove_all #删除所有查询的内容
相关推荐
学Linux的语莫8 天前
负载均衡,高可用,监控服务搭建总结
linux·服务器·分布式·ceph·lvs
运维小文9 天前
cephFS的使用以及K8S对接cephFS
ceph·云原生·容器·kubernetes·对象存储·cephfs
学Linux的语莫12 天前
ceph集群搭建,ceph块存储,文件存储,对象存储
linux·服务器·分布式·ceph
Rverdoser12 天前
K8S对接ceph的RBD块存储
ceph·容器·kubernetes
学Linux的语莫16 天前
Ceph对象存储
linux·运维·服务器·ceph
q_9716 天前
ceph基本概念
ceph
学Linux的语莫17 天前
Ceph文件存储
linux·运维·服务器·网络·ceph
学Linux的语莫17 天前
ceph相关的命令
linux·服务器·ceph
运维小文18 天前
ceph的存储池管理
ceph·云原生·对象存储·存储·分布式存储·cephfs
学Linux的语莫18 天前
Ceph分布式存储集群搭建
linux·服务器·ceph·云计算