一、背景和问题

默认情况下只有当单个bucket承载的object数量过多,导致omap过大会导致性能问题。在L 版之前需要线下reshard,从L 版开始支持线上自动reshard,默认rgw dynamic resharding 是开启的。但是在开启了Multisite的情况下,一旦对bucket进行了reshard操作,则会破坏原有的元数据对应规则,导致对应的bucket无法进行数据同步。所以L 版在后面的一个pr 禁用了multisite 下自动的reshard1。multisite 对于omap 过大的问题,需要手动reshard,生产环境上有很大风险。所以事先规划好bucket 对象数上限和num_shard 是必要的。

二、bucket reshard 过程

主集群信息汇总

查看当前集群状态:

  1. ## ceph -s

查看当前主集群的存储桶列表:

  1. ## radosgw-admin bucket list

在存储桶数量不多的情况下,依次查看各个存储桶的状态信息,重点关注num shards, num_objects

  1. ## radosgw-admin bucket stats --bucket=test1
  2. ## rados -p default.rgw.buckets.index ls|grep <bucket-id>

获取IO 路径

  1. ## ceph osd map default.rgw.buckets.index .dir.a5ef9049-a15b-48b5-9a28-1692590e8752.24166.24.0 // 指定索引对象

Multisite 下手动reshard

1.查看主集群状态,确认同步完成,并没有新的写入:

  1. [master]# radosgw-admin sync status

2.从集群检查

  1. [slave]# radosgw-admin sync status

3.主集群上关闭对应bucket的sync

  1. [master]# radosgw-admin sync disable --bucket=test1
  2. [master]# radosgw-admin sync status --bucket=test1

4.主、备集群停掉所有RGW 服务

  1. [master]# systemctl stop ceph-radosgw@rgw.`hostname -s`
  2. [slave]# systemctl stop ceph-radosgw@rgw.`hostname -s`

5.主集群上的任意节点执行下面操作,手工对指定bucket 做reshard,记录对应的old bucket instance id:

  1. [master]# radosgw-admin bucket reshard --bucket=test1 --num-shards=<N>
  2. *** NOTICE: operation will not remove old bucket index objects ***
  3. *** these will need to be removed manually ***
  4. tenant:
  5. bucket name: test1
  6. old bucket instance id: e8921092-c7e8-42d8-80d1-5e83c25d5661.72254.1
  7. new bucket instance id: e8921092-c7e8-42d8-80d1-5e83c25d5661.72437.1
  8. total entries: 6

6.从集群删除bucket所有数据,同时清除bucket

  1. [slave]# radosgw-admin bucket rm --purge-objects --bucket=test1
  2. [slave]# radosgw-admin bucket list

7.主集群,删除旧bucket的bi信息

  1. [master# radosgw-admin bi purge --bucket-id="" --bucket=test1

8.启动所有主、从节点上的rgw服务

  1. [master]# systemctl start ceph-radosgw@rgw.`hostname -s`
  2. [slave]# systemctl start ceph-radosgw@rgw.`hostname -s`

9.主集群重新开启对应bucket的sync,等待主集群里面的数据慢慢同步回从集群

  1. [master]# radosgw-admin sync enable --bucket=test1
  2. [master]# radosgw-admin sync status --bucket=test1

References

1.https://github.com/ceph/ceph/pull/18184

2.https://mp.weixin.qq.com/s/ckrYnvlOjQlta_JdryCauA

3.https://cloud.tencent.com/developer/article/1400660

4.https://cloud.tencent.com/developer/article/1378031

Ceph 之Multisite 下的bucket reshard的更多相关文章

  1. ceph rgw multisite基本用法

    Realm: Zonegroup: 理解为数据中心,由一个或多个Zone组成,每个Realm有且仅有 一个Master Zonegroup,用于处理系统变更,其他的称为Slave Zonegroup, ...

  2. 趣解 ceph rgw multisite data sync 机制

    multisite是ceph rgw对象数据异地容灾备份的一个有效方案,笔者希望深入理解该技术,并应用于生产环境中,然而rgw的这部分代码晦涩难懂,笔者多次尝试阅读,仍云里雾里不解其意,最终流着泪咬着 ...

  3. CEPH RGW集群和bucket的zone group 不一致导致的404异常解决 及 使用radosgw-admin metadata 命令设置bucket metadata 的方法

      问题现象: 最近在研究zonegroup的配置操作,发现在配置zonegroup后修改了default zone,导致访问对象报404错误. 问题原因: rgw 日志 报异常'request fo ...

  4. ceph在centos7下一个不容易发现的改变

    在centos6以及以前的osd版本,在启动osd的时候,回去根据ceph.conf的配置文件进行挂载osd,然后进行进程的启动,这个格式是这样的 [osd.0] host = hostname de ...

  5. Ceph RGW Multisite 数据同步流程图

  6. Centos7下使用Ceph-deploy快速部署Ceph分布式存储-操作记录

    之前已详细介绍了Ceph分布式存储基础知识,下面简单记录下Centos7使用Ceph-deploy快速部署Ceph环境: 1)基本环境 192.168.10.220 ceph-admin(ceph-d ...

  7. Centos7下使用Ceph-deploy快速部署Ceph分布式存储-操作记录(转)

    之前已详细介绍了Ceph分布式存储基础知识,下面简单记录下Centos7使用Ceph-deploy快速部署Ceph环境:1)基本环境 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ...

  8. 理解 OpenStack + Ceph (2):Ceph 的物理和逻辑结构 [Ceph Architecture]

    本系列文章会深入研究 Ceph 以及 Ceph 和 OpenStack 的集成: (1)安装和部署 (2)Ceph RBD 接口和工具 (3)Ceph 物理和逻辑结构 (4)Ceph 的基础数据结构 ...

  9. ceph常用运维技巧总结1

    格式 json 数据增强可读性 --format json-pretty -f json-pretty ceph quorum_status -f json-pretty ceph mon_statu ...

随机推荐

  1. 页面自动执行(加载)js的几种方法

    https://www.cnblogs.com/2huos/p/js-autorun.html 一.JS方法1.最简单的调用方式,直接写到html的body标签里面: <html> < ...

  2. javascript中json对象与json字符串

    var data = "{'name':'张山','age':20}"; //转换字符串为json对象: var jsondata = JSON.parse(data); //转换 ...

  3. java填坑记录

    一.The absolute uri: [http://java.sun.com/jsp/jstl/core] cannot be resolved in either web.xml or the ...

  4. IntelliJ IDEA 如何在同一个窗口创建多个项目

    一.IntelliJ IDEA与Eclipse的区别   二.在同一个窗口创建多个项目 1.打开IntelliJ IDEA,点击Create New Project 2.Java Enterprise ...

  5. Java虚拟机系列(二)---HotSpot虚拟机对象

    都知道Java是一门面向对象的编程语言,在Java程序运行过程中,无时无刻不在创建对象,所以这节来总结一下HotSpot虚拟机中的Java对象. 一.Java虚拟机对象的创建过程. 在语义层面创建一个 ...

  6. DOM4J -(XML解析包)

    DOM4J - 简介 是dom4j.org出品的一个开源XML解析包.Dom4j是一个易用的.开源的库,用于XML,XPath和XSLT.它应用于Java平台,采用了Java集合框架并完全支持DOM, ...

  7. MySQL-Utilities:mysqldiff

    园子看到使用MySQL对比数据库表结构,参考测试发现 mysql> use test; create table test1 (id int not null primary key, a ) ...

  8. 网易DMARC设置详解

    网易企业邮箱DMARC协议设置详解 发布时间:2013-09-27 尊敬的企业用户: 据统计,全球范围内被投递的钓鱼邮件每天约达到1亿封,无孔不入的钓鱼邮件.诈骗邮件,威胁着用户的信息和财产安全.网易 ...

  9. web前端学习(四)JavaScript学习笔记部分(10)-- JavaScript正则表达式

    1.JavaScript正则表达式课程概要 方便查找字符串.数字.特殊字串等等 2.正则表达式的介绍 RegExp是正则表达式的缩写 当检索某个文本时,可以使用一种模式来描述要检索的内容.RegExp ...

  10. 20190829 [ Night ] - 玻

    又考试 半集训真累…… 老帅哥露出会心的微笑.jpeg +------------+ | 寸 | | 土 分 | | 不 分 | | 让 必 | | 争 | +------------+ 考试过程: ...