
Ceph
runzhliu
毕业于中山大学,目前专注于容器和大规模并行计算
展开
-
【Rook】部署的一大坑
安装官网的 guidelines 去部署 Rook,需要注意一大坑点,大部分公司内部集群有很多奇奇怪怪的开关和配置,很难一次性就部署完的,如果创建了集群,又删掉集群重新创建,记得一定要把各个节点的 /var/lib/rook/ 这个地址清理掉,另外还有就是按照 Rook 的...原创 2021-11-26 10:46:30 · 447 阅读 · 0 评论 -
【Grafana】Variable配置的方法
最近在搞 Ceph RGW 的监控,大概的架构就是原创 2021-02-13 11:02:05 · 1755 阅读 · 0 评论 -
【Ceph】删除bucekt,关于bypass-gc
看一下 bypass-gc 的代码int rgw_remove_bucket_bypass_gc(rgw::sal::RGWRadosStore *store, rgw_bucket& bucket, int concurrent_max, bool keep_index_consistent, optional_yield y){ int ret; map&l原创 2021-02-13 11:01:04 · 334 阅读 · 0 评论 -
【Ceph】Rook部署采坑[1]
Rook 目前已经是 Ceph 官方文档推荐的 Kubernetes 部署 Ceph 集群的方式了。本文主要记录一下部署的过程和遇到的一些问题。# The deployment for the rook operator# Contains the common settings for most Kubernetes deployments.# For example, to create the rook-ceph cluster:kubectl create -f common.yamlku原创 2021-02-13 11:00:26 · 625 阅读 · 0 评论 -
【Ceph】Minio Browser浏览ceph对象文件
MiniO Browser 可以对接支持 S3 协议的 Ceph RGW,因为用 s3cmd 这些工具去管理对象文件还是比较麻烦,而且不够直观的,Minio Browser 正好提供了一套 UI 来访问、上传对象文件,创建桶和分享文件这些功能,还是相当实用的,如果不想自己开发基于 Ceph RGW 的对象文件页面管理,那么可以直接用 MiniO Browser。...原创 2021-02-13 11:00:06 · 1133 阅读 · 0 评论 -
【Ceph】 OSD data directory /var/lib/ceph/osd/ceph-xxx does not exist; bailing out.
今天巡检集群的时候发现一个老 ceph 群有一个 osd 挂了,具体报错如下,本人介绍一下处理的方法。11月 13 09:19:34 cq-rbd-node11 systemd[1]: Starting Ceph object storage daemon osd.121...-- Subject: Unit ceph-osd@121.service has begun start-up-- Defined-By: systemd-- Support: http://lists.freedeskto原创 2021-02-13 10:59:06 · 1085 阅读 · 0 评论 -
【Ceph】rgw通过nginx代理的日志处理
rgw 默认是通过 civetweb 来提供服务的,但是 civetweb 的日志太简陋了,一般都在上面搭建一层 Nginx 做转发,以获得更多的日志以及方便调节请求返回的参数。这里需要注意一下日志滚动的问题,以防 Nginx...原创 2021-01-27 20:23:19 · 672 阅读 · 1 评论 -
【Ceph】ceph部署请一定要看redhat的文档
每天感叹一下 Ceph 的复杂,不仅体现在运维上,也体现在部署上。Ceph 提供很多工具来部署,还有官方支持的 ceph-ansible,但实际上,如果本身不熟悉 ceph-ansible,你还得去理解 ansible 是怎么用的,一堆需要配置的变量,如果部署小集群,并不见得比 ceph 官方提供的一些文档方便,这里一定要推荐看 redhat 的文档去部署,为什么呢?因为人家给了命令,还给了命令的 example…在这种复杂软件的部署上,真的是相当良心了。举个栗子吧,如果要给 Ceph 集群部署几个 rg原创 2021-01-15 16:06:55 · 391 阅读 · 0 评论 -
【Ceph】ceph cluster log瞬间打满日志盘
ceph cluster log 定位为记录 ceph 事件的日志,通常情况下,ceph -w 也能捞到跟默认日志 /var/log/ceph/ceph.log 一样的信息,如下图。昨天出现一种异常的情况,就是 ceph 突然发了很多事件,导致这个日志文件突然暴增,一分钟能写好几个 G,仔细一看,原来这个日志等级默认是 debug,因为我们部署的时候 ceph mon 是放在根分区下面,跟日志是一起的,如果这个日志突然暴增,很容易导致 mon 因为本地空间不足而挂掉,这样不管是 ceph -s 还是其他原创 2021-01-13 12:24:16 · 637 阅读 · 0 评论 -
【Ceph】Cosbench进行对象存储的压测
Cosbench 是 Intel 开源的对象存储的压测工具 https://github.com/intel-cloud/cosbench,关于使用文档和官方文档可以参考下面的链接。压测参考文档: https://cloud.tencent.com/document/product/436/47974官方文档: https://github.com/intel-cloud/cosbench/blob/master/COSBenchUserGuide.pdf压测参考文档来源腾讯云,官方文档则是 Inte原创 2021-01-11 18:29:37 · 672 阅读 · 0 评论 -
【Ceph】Ceph安装源
https://ralph.blog.imixs.com/2020/02/28/howto-install-ceph-on-centos-7/在 /etc/yum.repos.d/ 创建 Ceph 的 repo 文件。[ceph]name=Ceph packages for $basearchbaseurl=https://download.ceph.com/rpm-nautilus/el7/$basearchenabled=1priority=2gpgcheck=1gpgkey=htt.原创 2021-01-06 10:30:46 · 394 阅读 · 0 评论 -
【Ceph】Ceph集群的监控和告警系统的想法
Ceph 很复杂,虽然官方文档已经很努力了,但是我觉得官方文档还没有体现出他的复杂,要等你真正搭建和运维的时候才会见识到 Ceph 的复杂,在组里帮忙运维 Ceph 集群已经有差不多半年了,期间因为各种告警和事故也经常被折磨得寝食难眠,究其原因除了本身对 Ceph 了解不够之外,就是因为一些监控和告警的基础设施没有跟上,随着集群规模的逐渐增大,不可预测的情况越来越多,处理起来越来越棘手,本文就简单的总结一下过去半年的经验,以及也抒发一下对 Ceph 集群监控和告警系统搭建的一些思路。首先我认为 Ceph原创 2021-01-05 18:34:22 · 603 阅读 · 0 评论 -
【Ceph】设置桶内对象的过期时间bucket policy
看了一下 Ceph 的文档,看得一脸懵逼,我只想找一个简单的方法给桶设置一下过期时间而已…这么多参数看的真累。于是看了一下 s3cmd,果然有更简单的方法,通过 s3cmd -h 可以看到 expire 命令。然后就简单了,设置一下 s3cmd expire s3://expire-test --expiry-day=1,然后 s3cmd getlifcycle 看一下配置。非常好,现在已经设置好桶内对象的过期时间了,正常来说1一天之后就会自动删除了。关于其他几个选项,仍然可以通过 s3cmd -原创 2020-12-18 16:57:28 · 2135 阅读 · 4 评论 -
【Ceph】Nautilus版本的radosgw安装和启动
按 Luminous 方式安装好 Ceph 软件好,想按照以往的习惯,直接执行下面的命令来启动 radosgw 进程。systemctl enable ceph-radosgw@radosgw.gatewaysystemctl start ceph-radosgw.target然后发现居然说没有这个 target 存在?找了 Ceph 的官方文档,关于 Manual 的安装手册居然没有提到 radosgw 的启动…还是挺神奇的。最后发现 radosgw 被拆到另一个软件包,通过下面的命令安装完之后原创 2020-12-07 23:29:37 · 606 阅读 · 0 评论 -
【Ceph】Ceph集群的pg auto scale
对部分集群从 V12 升级到 V14 之后,就迎来了 Nautilus 版本的一个重要特性,就是 pg 的自动扩展。运维 Ceph 集群的朋友应该会感受到,如果经常扩容,上了 OSD 之后,又还需要去计算一遍 pg 的个数,然后再设置一次,还是比较麻烦的,而且公式本身比较简单,为什么不能让 pg 打到阈值之后自动分裂扩展呢?在 Nautilus 版本,就提供了这么一个模块工具,开启之后,就可以以 pool 为粒度的 pg 自动扩展。下面我们看一下效果,可以看到由于升级到 Nautilus 之后,PG 的默原创 2020-11-18 15:12:39 · 1660 阅读 · 0 评论 -
【Ceph】gc太慢了
业务上,用户经常大量写,然后大量删,已知 Ceph 删对象的主要是先标记等 GC 才会真正删除数据的。所以如果用户经常大量写伴随大量删,容易导致容量打爆。解决的方法,主要是两个方面,如果高警时写入的速度已经很快了,再来解决 GC 的问题已经来不及了,最好是跟业务沟通,停掉部分写,以防 Ceph 集群的 OSD 被写满无法读写,其次就是调整 rgw 的 GC 参数,让更多的线程来参与 GC 的过程。效果可以从下面重启 rgw 时间和 Ceph Pool Available 容量回升的时间看到,调整 GC原创 2020-11-16 15:14:06 · 1303 阅读 · 0 评论 -
【Ceph】1 pools have many more objects per pg than average
公司 Ceph 集群从 v12 升级到 v14 后,今天某个 CephFS 的集群收到一个 HEALTH_WARN 的告警,具体的 Warning 的信息为 1 pools have many more objects per pg than average。很明显就是 pg 数目设置的过少,导致有些 pg 里的对象过多,估计是超过了默认的一个 Limit,所以产生了 Warning 的信息,解决的方法很简单,就是查看一下集群里所有 Pool 的 PG 数,看看哪个少的,按照公式大概加一下就好了。ce原创 2020-11-15 06:40:47 · 3914 阅读 · 0 评论 -
【Ceph】abort incomplete multipart uploads
# radosgw-admin bucket rm --bucket=hero_video_lol --purge-objects --bypass-gc2020-10-23 15:26:58.195290 7f1e894fcdc0 0 WARNING : aborted 1000 incomplete multipart uploads2020-10-23 15:27:01.293719 7f1e894fcdc0 0 WARNING : aborted 2000 incomplete multip原创 2020-10-23 15:35:47 · 412 阅读 · 0 评论 -
【Ceph】关闭standby状态的mgr
Ceph 的官方文档没有讲怎么去删除不需要的 mgr,因为之前部署的时候多了一些 mon 和 mgr,所以有运维脚本去直接从 mon 的 map 里把 mon 删除,但是 mgr 似乎不需要这样操作。反正官方文档并没有说怎么操作,我这边测试了一下,只要把 mgr 的进程停了,ceph status 就不会再找到 standby 的那台机器了。关于 mgr 的信息可以通过命令 ceph mgr dump 来直接获取。...原创 2020-10-23 14:02:17 · 1098 阅读 · 0 评论 -
【s3cmd】给s3cmd加点debug日志再编一个
最近有同学反映 s3cmd 上传的数据比原文件小…WTF,居然有这种事?我不信,然后看了下同学的需求,上传一个1G的文件,按照分段上传的默认配置,就是以15M为一段,分段上传,基本公式就是 1024M/15M=68.2。通过给 s3cmd -d put 加下 debug 日志,查看一下分段上传的过程,发现段数和最后一段的尾巴 Bytes 相加确实就是1024M也就是1G,应该不存在丢数据的问题。业务场景下,这个文件是通过其他进程写,一般来说他们会先写然后 mv到某个目录下再去上传,那到底是哪个环节有问原创 2020-10-09 21:57:11 · 722 阅读 · 0 评论 -
【Ceph】集群升级之好好看ceph.conf
记录一个乌龙事件,今天给一个 v12.2.13 的测试集群升级到 v14.2.11 的时候,发现其中一个节点的 osd 进程一直报错,然后 ceph -s 也一直给出 WARNING 的信息,one host down,查看 osd 的日志,报一个莫名其妙的 invalid arguments。这类问题,其实开一下 debug 日志,看下源码应该可以定位到的,但是感觉要花很多时间,所以放弃了,一翻 google 之后也没找到合理的解决方法。最后,对比了一下三台测试集群的物理机上的 ceph.conf,果原创 2020-09-15 06:56:27 · 266 阅读 · 0 评论 -
【Ceph】Rook 中使用 External Cluster 的方式管理外部集群
现网有好几个 Luminous 的集群,因为指导 Rook 可以用来管理外部集群,所以想尝试一下。外部集群的概念是指,通过部署 Rook,来管理部署在其他集群或者物理机的 Ceph 集群,也就是 Rook 里 External Cluster 的概念。// pkg/operator/ceph/cluster/cluster_external.go// 先是判断 CephCluster 自定义资源的 Spec 字段有没有 CephVersion 和 DataDirHostPath 字段func val原创 2020-09-14 16:25:20 · 994 阅读 · 0 评论 -
【Ceph】ceph 版本参考
Ceph 版本是按字母来排的,经常跟数字版本搞的不太清楚,还是参考官方 blog 比较靠谱,下面是几个官方版本 release 信息链接,不妨收藏一下。https://ceph.io/category/releases/https://docs.ceph.com/docs/master/releases/https://docs.ceph.com/docs/master/releases/archived-index/...原创 2020-09-01 09:01:21 · 563 阅读 · 0 评论 -
【Ceph RGW】Bucket Sharding的设置
文章目录Ceph RGW 会把 bucket 的索引数据存在 index_pool 里,这个索引池,默认叫做 .rgw.buckets.index,如果一个桶有很多对象,比如说成千上万,甚至到百万,如果恰好你没有给每个 bucket 设置可以存储的最大对象数,那么上百万的索引数据,会给这个 bucket 的读写造成很大的性能影响,试想一下,成百万的大 map,从里面找到需要的对象,那是得花多少时间。Ceph 0.94版本之后,用户可以给索引文件进行 sharding,rgw_override_bucke原创 2020-08-16 11:55:44 · 932 阅读 · 0 评论 -
【ceph】性能测试工具cosbench(1)
cosbench 是 intel 开发的对象存储服务的压测工具,从 commit 信息看,已经很久不维护了…这里先告诉大家一个坑,这里的 latest release 版本,也就是 0.4.2 部署是有问题的!!!建议大家用 v0.4.2 release candidate 4 这个版本。按照 README,安装倒是很简单。bash start-all.sh+ SERVICE_NAME=driver+ BOOT_LOG=log/driver-boot.log+ OSGI_BUNDLES='cos原创 2020-08-03 17:02:05 · 741 阅读 · 2 评论 -
Etcd+Prometheus+Grafana
原创 2020-07-24 17:37:06 · 978 阅读 · 0 评论 -
【s3cmd】文件名一个空格带来的烦恼
正常使用的 Ceph RGW,还有正常使用的 s3cmd,突然今天碰到一个用户反馈说,在使用 s3cmd get 时候出现大量的404,也就是下载对象 Object 的时候发现对象不存在。这个问题很有意思,之前都没有遇到过,于是看了一下用户的文件,发现了一些端倪。划红线的文件名,居然带空格…Fine,既然是用户能上传上来的,那么我们就应该可以让用户下载了。可以判断到的是因为文件名带空格,所以在 get 的时候我才 s3cmd 没有处理这部分的内容,所以自动截断了,因为截断之后的对象肯定是不存在的,于是原创 2020-07-24 10:31:59 · 554 阅读 · 0 评论 -
【Ceph RGW】radosgw_usage_exporter监控用户使用量
文章目录1 Overview2 radosgw_usage_exporter2.1 usage2.2 bucket3 关于权限4 metrics1 OverviewCeph Mgr Prometheus 的模块没有提供用户数据使用量的指标,而在 Ceph 日常运维中,我们希望知道哪个用户用了多少存储容量,或者距离 Quota 还有多少,方便自动化扩容等等,所以推荐一个开源的 prometheus exeporter 来通过 radosgw 来输出用户在 Ceph 集群使用的量。再次明确一下,这个 us原创 2020-07-19 20:24:32 · 1397 阅读 · 7 评论 -
prometheus-nginxlog-exporter构建Nginx日志监控
lunimous 可以开启 dashboradrgw 通过 prometheus-nginxlog-exporter 可以解析 Nginx 日志,还有一些正则可以去处理,然后通过 relabel 的配置,让其在指标数据上打上标签。civetweb 没有在日志记录请求返回的时间,所以考虑用 Nginx 来替换,为了能给 Ceph RGW 加一个请求相关的监控,所以需要去解析日志,在 prometheus-nginxlog-exporter 中,通过配置文件,可以把标签和端口等设置好,然后让 prometh原创 2020-06-27 10:01:38 · 4657 阅读 · 0 评论 -
s3cmd ls之迷惑
习惯了文件系统的我们一直都觉得 ls 命令应该会把文件全部 list 出来,对于 s3cmd ls 我一开始也是这么理解的。直到有一天,同事通过 s3cmd delete 删除了一个文件,执行 s3cmd ls 竟然返回200,但是 s3cmd get 却返回404,这就很奇怪了,用户明明已经删了对象,为何 ls 得到呢,这不合理,当然 get 不到,那才是合理的,那么 get 不应该 ls 得到啊。具体的情况如下。[root@site ~]# s3cmd ls s3://game/158674432原创 2020-05-17 13:45:08 · 1417 阅读 · 0 评论