Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Ceph 自动化四大天王

Ceph 自动化四大天王

作者头像
用户1260683
发布于 2021-12-04 06:13:32
发布于 2021-12-04 06:13:32
1.3K10
代码可运行
举报
运行总次数:0
代码可运行

每一个Ceph新手,都或多或少被文中提到的四大天(坑)王吊打过,或钢筋铁骨成为大神,或删库跑路沦为亡魂。因此有必要给大家早早普及一下这四大天王的手段,帮各位早脱苦海。本文建立在你已经基本了解Ceph的构架和基本原理,如果不熟悉的同学可以看下面内容

https://docs.ceph.com/en/pacific/architecture/

1.OSD自动化加入crush

很多新手,上来也不看基本的Crush算法原理,照着其他人的ceph.conf就是抄作业,其中抄得最不走心的就是下面这条配置。

osd crush update on start = false

重启以后或者加入新的OSD,发现自己的集群pg异常了,一个个OSD成了没妈的孩子,到处都是小蝌蚪找妈妈。殊不知,默认Crushmap中会按host为单位,自动化将启动的osd加入到所在的host中,如果你开启了这个osd crush update on start = false的配置,则会关掉自动化分配,只能按用户自定义的Crushmap分布规则进行配置,而新手往往都没有自定义的Crushmap规则,于是就遇上了一大堆的孤儿osd。所以抄作业之前,一定要搞清楚自己的环境和对方环境的差异性,盲抄作业是要吃大亏的。

每一个新手,一定要去学习的就是crush算法的基本原理,并认真按照下面的文档,进行crush-map编辑操作的学习与模拟。

https://docs.ceph.com/en/pacific/rados/operations/crush-map-edits/

类似的设置还有osd class update on start = false

2.pg自动化平衡 balancer

掌握基本的Crush算法和基本概念,会你发现crush的伪随机算法并不能100%确保你的每一个OSD都能均衡的实现数据分布,随着你写入的数据增加,很多情况下会发现OSD磁盘的利用率非常的不均匀。于是你会遇上如何平衡OSD数据分布这一难题,好在官方也一直在努力做好这件事情,并推出了一系列自动化工具。

The balancer can optimize the placement of PGs across OSDs in order to achieve a balanced distribution, either automatically or in a supervised fashion.

最早的时候是通过扩展mgr模块,实现了一个名为balancer的模块,通过手工方式来调度这个模块,实现OSD上面的PG分布调优。你可以通过下面的命令查看你的ceph是否支持这个特性。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
root@host:/home/demo# ceph mgr module ls
{
    "always_on_modules": [
        "balancer",
        "crash",
        "devicehealth",
        "orchestrator_cli",
        "progress",
        "rbd_support",
        "status",
        "volumes"
    ],
    "enabled_modules": [
        "iostat",
        "restful"
    ],

新版本已经不支持手动关闭。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
root@host:/home/demo# ceph mgr module disable balancer
Error EINVAL: module 'balancer' cannot be disabled (always-on)

你可以通过下面的命令查看当前该模块的开启状态

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
root@host:/home/demo# ceph balancer status
{
    "last_optimize_duration": "0:00:22.402340",
    "plans": [],
    "mode": "crush-compat",
    "active": false,
    "optimize_result": "Unable to find further optimization, change balancer mode and retry might help",
    "last_optimize_started": "Tue Nov 16 18:29:38 2021"
}

一旦balancer的active=true,那么这里的坑就挖好了,之后随着你集群的用量变化,一旦满足自动balancer调节条件,集群就会自动化实现OSD上的PG调整。PG自动化平衡功能是很多新手看起来很美好的事情,但是真正用起来你会发现,集群压力大的时候自动化平衡一下,或者频繁的触发了自动化平衡,你的集群性能会持续抖动,最终造成业务延迟增加或者卡顿,要命的是一旦触发平衡还不能中途停止,因此只能等待平衡完成,但是平衡这种事情,很多时候是没办法预期什么时候开始、什么时候结束,因此集群的性能也是处于间歇性抽风。所以生产上,这种策略能关闭最好,看起来的美好,更多的是给你带来无尽烦恼。具体可以参考下面

https://docs.ceph.com/en/latest/rados/operations/balancer/#balancer

3.资源池自动伸缩 autoscale

作为新手,你是不是还在幻想着集群扩容,只需要简单的加机器加磁盘,然后调整一下PG数一顿操作猛如虎就行了。残酷的现实就是,一旦你做了这件事情,集群性能就会因为数据平衡而抽风,如何平衡扩容带来的性能影响已经是一门Ceph维护的艺术。然鹅,官方贴心的给各位开发了一个自动化pg扩容模块,根据集群的当前规模,实现自动化的pg数设定,不再让新手烦恼。好在默认是开启的warn模式,只是在特定情况下会告警,但是不做执行。如果你线上经常性的扩容/缩容,那么你打开这个pg_autoscale_mode=on,会体会到无与伦比的酸爽,类似女人生孩子的那种阵痛,会在你心里印象深刻。如果你想让自己睡个好觉,就老老实实off掉这个模块吧,不要瞎折腾才是上上策,自动化的东西没你看起来那么美好。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#默认策略是warn
root@host:/home/demo# ceph daemon /home/ceph/var/run/ceph-osd.10.asok config show|grep scale
    "osd_pool_default_pg_autoscale_mode": "warn",
    "rgw_rados_pool_autoscale_bias": "4.000000",

#通过pool set命令设置对应策略
root@host:/home/demo# ceph osd pool set
Invalid command: missing required parameter pool(<poolname>)
osd pool set <poolname> size|min_size|pg_num|pgp_num|pgp_num_actual|crush_rule|hashpspool|nodelete|nopgchange|nosizechange|write_fadvise_dontneed|noscrub|nodeep-scrub|hit_set_type|hit_set_period|hit_set_count|hit_set_fpp|use_gmt_hitset|target_max_bytes|target_max_objects|cache_target_dirty_ratio|cache_target_dirty_high_ratio|cache_target_full_ratio|cache_min_flush_age|cache_min_evict_age|min_read_recency_for_promote|min_write_recency_for_promote|fast_read|hit_set_grade_decay_rate|hit_set_search_last_n|scrub_min_interval|scrub_max_interval|deep_scrub_interval|recovery_priority|recovery_op_priority|scrub_priority|compression_mode|compression_algorithm|compression_required_ratio|compression_max_blob_size|compression_min_blob_size|csum_type|csum_min_block|csum_max_block|allow_ec_overwrites|fingerprint_algorithm|pg_autoscale_mode|pg_autoscale_bias|pg_num_min|target_size_bytes|target_size_ratio <val> {--yes-i-really-mean-it} :  set pool parameter <var> to <val>
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
root@host:/home/demo# ceph osd pool get .rgw.root pg_autoscale_mode
pg_autoscale_mode: warn

具体的设置参考这里

https://docs.ceph.com/en/latest/rados/operations/placement-groups/#autoscaling-placement-groups

4.RGW自动化Shard重分配

最后一个可能只有部分RGW用户会遇到,当单个Bucket内的文件数量不断增长,其底层的数据库分片会不断的进行ReShard,整个reshard过程不可控,文件数越多时间越长,reshard过程中因为要加锁,因此会导致业务卡IO,直接造成服务不可用。所以这个特性在官方推出的时候,我第一时间就是进行了rgw_dynamic_resharding = false关闭,前面也有很多文章介绍过shard的基本原理和机制,这里就不再赘述了,感兴趣的同学去看之前的文章内容吧。

https://docs.ceph.com/en/latest/radosgw/dynamicresharding/

总结

无论新手还是老司机,凡是Ceph分布式系统里面的自动化机制,都要尽可能了解其背后逻辑与机制,谨慎开启。很多时候自动化/傻瓜化的设定,只是开发人员的一厢情愿,他们不会了解运维、生产环境的复杂度,很难做到100%适配你的业务场景,因此要想不被带进沟里,先得开启对这些基础知识的深入探索和学习,在实践中去验证这些功能的有效性,而不是一开始就把一切都寄托在官方的默认设定上。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-11-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Ceph对象存储方案 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
1 条评论
热度
最新
都遇到过,痛不欲生
都遇到过,痛不欲生
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
Ceph:关于 Ceph 存储架构的一些笔记
Ceph 集群搭建使用标准硬件和存储设备的服务器,是一个高度可扩展的分布式存储系统, 采用模块化分布式架构。Ceph 主要通过 RADOS 核心组件来提供能力。
山河已无恙
2023/08/21
1.3K0
Ceph:关于 Ceph 存储架构的一些笔记
ceph 清理和手动部署N版
df | grep ceph | awk '{print $NF}' | xargs -n1 umount
用户3701490
2021/10/21
1.9K0
Ceph 集群整体迁移方案
本文就介绍了一种实现业务不中断的数据迁移方案,并已经在多个生产环境执行。
腾讯技术工程官方号
2018/04/23
2.7K8
ceph运维操作
如果是在admin节点修改的ceph.conf,想推送到所有其他节点,则需要执行下述命令
匿名用户的日记
2022/01/05
3.4K0
Ceph分布式存储日常运维管理手册
nearfull osd(s) or pool(s) nearfull 此时说明部分osd的存储已经超过阈值,mon会监控ceph集群中OSD空间使用情况。如果要消除WARN,可以修改这两个参数,提高阈值,但是通过实践发现并不能解决问题,可以通过观察osd的数据分布情况来分析原因。
民工哥
2020/09/15
2.5K0
Ceph分布式存储日常运维管理手册
Ceph 12.2.0 正式版本发布, 代号 Luminous
Ceph 是一个可扩展的分布式存储系统,性能卓越,安全可靠。 Ceph 12.2.0 正式版已发布。这是Luminous v12.2.x长期稳定版本的第一个版本。在Kraken(v11.2.z)和 Jewel(v10.2.z)后我们做了很多重大修改,而且升级过程并不简单哦。请仔细阅读版本说明。
Debian中国
2018/12/20
1.9K0
Ceph分布式存储工作原理 及 部署介绍
存储根据其类型,可分为块存储,对象存储和文件存储。在主流的分布式存储技术中,HDFS/GPFS/GFS属于文件存储,Swift属于对象存储,而Ceph可支持块存储、对象存储和文件存储,故称为统一存储。
洗尽了浮华
2022/03/28
7K0
Ceph分布式存储工作原理 及 部署介绍
Large omap objects 排错实战
线上multisite环境出现HEALTH_WARN 32 large omap objects,已经bucket auto reshard=false,所以排除是bucket index 所在的shard omap过大引发的问题,官方的给出的告警信息无法定位到具体的object,于是有了下面的排错过程
用户1260683
2018/12/26
5.8K0
kubernetes(十九) Ceph存储入门
Ceph是当前非常流行的开源分布式存储系统,具有高扩展性、高性能、高可靠性等优点,同时提供块存储服务(rbd)、对象存储服务(rgw)以及文件系统存储服务(cephfs),Ceph在存储的时候充分利用存储节点的计算能力,在存储每一个数据时都会通过计算得出该数据的位置,尽量的分布均衡。目前也是OpenStack的主流后端存储,随着OpenStack在云计算领域的广泛使用,ceph也变得更加炙手可热。国内目前使用ceph搭建分布式存储系统较为成功的企业有华为,xsky,杉岩数据,中兴,华三,浪潮,中移动等。
alexhuiwang
2020/09/23
3.9K0
kubernetes(十九) Ceph存储入门
Ceph介绍及原理架构分享
Ceph项目最早起源于Sage就读博士期间的工作(最早的成果于2004年发表),并随后贡献给开源社区。在经过了数年的发展之后,目前已得到众多云计算厂商的支持并被广泛应用。RedHat及OpenStack都可与Ceph整合以支持虚拟机镜像的后端存储。
Lucien168
2020/07/20
2.2K0
Ceph介绍及原理架构分享
ceph配置缓存池
缓存池通过创建一个逻辑层,将热点数据从较慢的存储介质(如 HDD)移动到更快速的存储介质(如 SSD)。当客户端请求数据时,首先在缓存池中查找,如果命中缓存,则直接返回数据,否则从后端存储池获取数据,并将数据写入缓存池以备后续访问。
没有故事的陈师傅
2024/07/04
4850
ceph配置缓存池
Ceph理解
- 图虽然很复杂,但如果理解了几个基本操作的含义就很好读下来了,这里是三个操作的伪代码,take和emit很好理解,select主要是遍历当前bucket,如果出现重复、失败或者超载就跳过,其中稍微复杂的“first n”部分是一旦遇到失败,第一种情况是直接使用多备份,第二种情况是使用erasing code基本可以忽略。看着下面的图就更好理解具体的算法了
ZHaos
2019/02/27
2.4K0
ceph-rest-api 用例
1.版本问题 0.67-10.x版本如果需要集成现有业务可以考虑这个内置的rest接口,从12.x开始这个接口将被内置的mgr模块替代,后期可能会被移除,所以高版本就不要用这个接口了。 2.服务启动 root@demohost:/home/user# ceph-rest-api -c /etc/ceph/ceph.conf -n client.admin --cluster ceph * Running on http://0.0.0.0:5000/ 3.pool相关操作 #获取rbd pool的属性
用户1260683
2018/01/31
2.8K0
ceph 运维操作-OSD
OSD全称Object Storage Device,也就是负责响应客户端请求返回具体数据的进程。一个Ceph集群一般都有很多个OSD。
Lucien168
2020/07/20
1.8K0
Ceph亚太峰会RGW议题分享
Ceph亚太峰会RGW部分议题分享 本次Ceph亚太峰会干货最实在的的要数Redhat的《Common Support Issues and How to Troubleshoot Them》这里把RGW部分摘出来,和大家分享一下,本次议题主要是涉及到RGW中Object数量过多导致的OSD异常如何处理。 故障现象描述 Flapping OSD's when RGW buckets have millions of objects ● Possible causes ○ The first issue h
用户1260683
2018/06/11
2.5K1
Ceph 故障排查笔记 | 万字经验总结
删除当前 osd 的所有数据,并且重新加载 osd,此操作一定要保证有冗余可用的 osd,否则会造成整个 osd 数据损坏。
米开朗基杨
2021/05/11
7.9K0
ceph分布式存储学习指南
ceph是模块化和可扩展的,并且有容错设计。先进的分布式存储系统。 ceph凭借其高可扩展性、高可靠性、高性能的特点,逐渐成为openstack\cloudstack、opennebula等主流开源云平台后端存储的首选。可靠性、自平衡、自恢复、一致性 软件定义存储。 可以大幅降低企业存储基础设施的成本。 分布式、可大规模扩展,经济 虚拟平台KVM、VMWARE也支持ceph ceph存储介绍 ceph部署实战 ceph架构和组件 ceph内部构建 ceph部署 ceph存储配置 ceph操作及管理 监控ceph集群 ceph与openstack集成 ceph性能调优和基准测试 1、ceph是什么 ceph是一个开源项目,它提供软件定义的、统一的存储解决方案。ceph可大规模扩展、高性能并且无单点故障的分布式存储系统。容量可扩展至EB级别。1EB=1024PB
用户5760343
2022/05/14
6320
ceph分布式存储学习指南
ceph常用命令详解_ceph osd
OSD进程的启动停止:https://blog.csdn.net/bandaoyu/article/details/119894927
全栈程序员站长
2022/11/17
1.5K0
Ceph安全体系概览
安全是整个存储必不可少的一环,但是很少有人能够比较全面的总结一下Ceph的安全体系,于是老司机在这里“鬼话连篇”。
用户1260683
2019/07/30
2.5K0
Ceph安全体系概览
Ceph:关于Ceph 集群中池管理的一些笔记
对每个人而言,真正的职责只有一个:找到自我。然后在心中坚守其一生,全心全意,永不停息。所有其它的路都是不完整的,是人的逃避方式,是对大众理想的懦弱回归,是随波逐流,是对内心的恐惧 ——赫尔曼·黑塞《德米安》
山河已无恙
2023/08/21
7720
Ceph:关于Ceph 集群中池管理的一些笔记
相关推荐
Ceph:关于 Ceph 存储架构的一些笔记
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验