第26讲:Ceph集群OSD扩缩容中Reblanceing数据重分布

文章目录

1.Reblanceing数据重分布的概念

当集群中OSD进行扩缩容操作后,会触发一个Reblanceing数据重分布的机制,简单的理解就是将扩缩容前后OSD中的PG在每一个OSD中进行均匀分布,如下图所示:

在扩容前集群有两个OSD节点,这两个OSD中分布着十个PG,扩容后,集群中有三个OSD节点,此时就会触发Reblanceing数据重分布机制,将原有的两个OSD中的一部分PG移动到第三个OSD中,使的每个OSD中的PG数量均衡。

Reblanceing数据重分布移动的是PG并不是Object,Object是存放在PG里的,如果要移动Object,数据量是非常大的,并且Object的数据也非常多,严重影响集群的性能,而PG的数量是有限的,移动PG是最好的方式。

Reblanceing数据重分布机制如何触发:

当集群中有新的OSD加入进来后,会将信息上报给Monitor,Monitor就会从Cluster Map中得知OSD Map发送了变化,只要OSD Map发送了变化,就会触发Reblanceing机制,使OSD中的PG平滑的移动到新的OSD。

在实际生产环境中,如果PG中的数据量非常大,在触发Reblanceing机制时,会对集群的性能有所影响,如果一次性增加很多个OSD节点,那么就意味着会有大量的PG被移动,此时就会对集群的性能产生巨大的影响,因此建议,每次在扩容OSD时,只扩容一个OSD。

2.验证Reblanceing触发的过程

向Ceph存储中写入大量数据,然后扩容一个OSD节点,观察Reblanceing的触发过程。

1)在Ceph存储中写入大量的数据

sh 复制代码
[root@ceph-node-1 ~]# cd /cephfs_data/
[root@ceph-node-1 cephfs_data]# dd if=/dev/zero of=reblanceing-file.txt bs=1M count=8192

2)新加一个OSD

sh 复制代码
[root@ceph-node-1 ceph-deploy]# ceph-deploy osd create  ceph-node-2 --data /dev/sdd

3)观察Reblanceing机制的触发过程

sh 复制代码
[root@ceph-node-1 ~]# ceph -s

视频:

3.Reblanceing细节

在触发Reblanceing机制后,PG的迁移是比较慢的,那是因为OSD默认情况下只有一个线程,将线程数适当增加,可以提高迁移的速度,但是也会消耗部分的性能。

sh 复制代码
[root@ceph-node-1 ceph-deploy]# ceph --admin-daemon /var/run/ceph/ceph-mon.ceph-node-1.asok config show | grep max_backfills
    "osd_max_backfills": "1",

触发Reblanceing机制后,集群是使用配置的cluster_network进行通信的,在实际环境中,一定要将public_network和cluster_network网络分开,并且cluster_network网络要使用万兆口,可以提高速度。

4.临时关闭Reblanceing机制

在做Reblanceing时,如果集群正面临着业务繁忙,此时再使用Reblanceing就会对集群的性能产生影响,可以临时关闭Reblanceing,当业务量较小时,再开启。

1)关闭Reblanceing

sh 复制代码
1.关闭Reblanceing
[root@ceph-node-1 ~]# ceph osd set norebalance
norebalance is set
[root@ceph-node-1 ~]# ceph osd set nobackfill
nobackfill is set

nobackfill也会做数据填充,也需要关闭

2.查看集群的状态
[root@ceph-node-1 ~]# ceph -s
  cluster:
    id:     a5ec192a-8d13-4624-b253-5b350a616041
    health: HEALTH_WARN
            nobackfill,norebalance flag(s) set				#reblanceing处于关闭状态

2)开启Reblanceing

sh 复制代码
[root@ceph-node-1 ~]# ceph osd unset nobackfill
nobackfill is unset
[root@ceph-node-1 ~]# ceph osd unset norebalance
norebalance is unset
相关推荐
容器魔方9 小时前
Bloomberg 正式加入 Karmada 用户组!
云原生·容器·云计算
轻松Ai享生活13 小时前
5 节课深入学习Linux Cgroups
linux
白帽黑客沐瑶14 小时前
【网络安全就业】信息安全专业的就业前景(非常详细)零基础入门到精通,收藏这篇就够了
网络·安全·web安全·计算机·程序员·编程·网络安全就业
christine-rr14 小时前
linux常用命令(4)——压缩命令
linux·服务器·redis
三坛海会大神55514 小时前
LVS与Keepalived详解(二)LVS负载均衡实现实操
linux·负载均衡·lvs
東雪蓮☆14 小时前
深入理解 LVS-DR 模式与 Keepalived 高可用集群
linux·运维·服务器·lvs
树码小子14 小时前
Java网络编程:(socket API编程:TCP协议的 socket API -- 回显程序的服务器端程序的编写)
java·网络·tcp/ip
乌萨奇也要立志学C++14 小时前
【Linux】进程概念(二):进程查看与 fork 初探
linux·运维·服务器
绿箭柠檬茶16 小时前
Ubuntu 服务器配置转发网络访问
服务器·网络·ubuntu
real 116 小时前
传输层协议UDP
网络·网络协议·udp