春节假期ceph大佬发布了Nautilus版新功能的介绍,也想来尝尝鲜。于是编译了ceph-14.0.1-3799-g4de85a5版本测试一番。这两天ceph14.1.0正式发布了,又重新安装了写篇测试心得。
1、通过ceph config配置集群参数
在ceph13之前的各个版本,参数都是在配置文件中设置,如果更改参数需要向每个ceph节点推送新的配置文件,非常麻烦。麻烦倒是其次,一个不小心就会造成各个节点间配置文件不一致,后续如果出现问题排查会很糟心。到了13版本已经提供了ceph config命令,但是并不完善,很多配置依旧需要手动更改配置文件解决。到了14版本类似问题已经很少了。但是依然有一些需要在链接mon前就要确定的参数,依然需要在配置文件里指定,比如:osd_op_queue就得在配置文件里写明。下面对ceph config做一下说明。
ceph config dump 会列出所有已经修改的参数列表:
config set <who> <name> <value>指定组件或者全局设定参数:
如:在集群层面限制rbd的iops最大为100
ceph config set global rbd_qos_iops_limit 100
也可以对具体的进程设置参数,
如: 告诉osd.0每天0时开始scrub
ceph config set osd.0 osd_scrub_begin_hour 0
ceph config rm 删除被参数修改
如:ceph config rm global rbd_qos_iops_limit
ceph config log 列出历史上的参数修改记录,每条记录都有唯一标号,它记录了当时的所有配置参数。
可以使用ceph config reset <int>命令将配置恢复到历史上的一个状态。
如:ceph config reset 4
这条命令将集群配置回滚到log id是4的状态。
ceph config generate-minimal-conf产生一个最小配置的ceph.conf文件
config help <key>列出参数的帮助说明
config show-with-defaults <who> 显示一个或一类进程的默认配置
config show <who> {<key>}显示一个或一类进程的特定参数的设置
有了这些方法就不用去一个一个推送配置文件了,一次修改全局生效。参数的动态修改更是省心了很多,再也不用麻烦的使用ceph tell osd.* config set之类的命令。
2、14版本引入了msgr2
msgr2支持加密,支持kerberos授权认证等,但是还需要等待一段时间现在还没发体验,但是已经可以使用ceph mon enable-msgr2启用msgr2。这对提高ceph集群的安全性非常有益处,非常期待。在之前的文档都介绍msgr2在3000端口启用,但是实际测试发现,是在3300端口启用,被叫做“IANA monitor port”。
在msgr.h头文件里定义
#define CEPH_MON_PORT_IANA 3300 /* IANA monitor port */
3、ceph14支持pg数减小和pg数根据pool容量自动调整
在以往版本里ceph的pg_num只能调大不能调小,现在支持pg_num缩小了。这解决了ceph集群缩容时pg_num过大的问题。
更重要的是14.0.1-3799-g4de85a5开始支持pg_num自动调整,在14.0.1时还没有。要启用这一功能必须启用mgr的pg_autoscaler模块。pg_autoscale模块将根据pool的实际容量调整pg_num数。
使用ceph mgr module enable pg_autoscaler命令启用mgr的pg自动调整模块。
ceph osd pool set <pool name> pg_autoscale_mode指定池的pg自动调整模式。pg_autoscale_mode有on、off、warn三个模式。开发版如果不指定模式,将默认将进入warn模式,正式发布的14.1.0必须指定一个模式。ceph osd pool autoscale-status 显示当前pg_num以及将要调整的pg_num数,和相关参数。
这个功能使运维人员不必再为pg_num的调整而烦心,不过当数据量很大时,调整pg_num带来的集群抖动到底有多大还是未知数,还需要等待正式版出来后大量测试检验。
4、ceph report也是很全面的命令,会以json格式报告非常全面的集群运行数据
5、ceph rbd perf image counters 和ceph rbd perf image stats
这是ceph14新增的两个命令,用来分析image的性能。要启用这个命令,首先要开启mgr的rbd_support模块。命令如下:
ceph mgr module enable rbd_support
counters会显示每个image的累计读写iops和累计读写量和平均读写延时。
stats会显示每个image的即时iops和即时读写速率以及即时读写延时,延时单位是纳秒。
在ceph14的开发版里有ceph osd perf query add,ceph osd perf query remove,ceph osd perf counters get等命令,用于收集ceph14内定义的client_id,client_address,pool_id,namespace,osd_id,pg_id,object_name,snap_id这八类io数据。收集条件可以以正则表达式的形式注入,正式的ceph14.1.0把这些命令删除了,但保留了rbd相关的命令。rbd性能分析就是通过object_name类型增加SUBKEYS_QUERY查询条件实现的。查询条件过滤了所有和image相关的几类rbd对象:rbd_header、rbd_object_map、rbd_data、rbd_id,实现对image的io数据统计。不过由于mgr里统计的数据并不持久化,一旦mgr崩溃所有的统计数据都会丢失,或者统计条件超时都会丢失统计数据。
6、 ceph progress
用于显示恢复的进度,恢复过程终于可视化了,使运维人员心里踏实很多。
ceph progress json回馈更详细的进度内容。
ceph progress clear清除恢复进度。
7、ceph device
这也是一个对于ceph运维至关重要的命令,磁盘的健康度直接影响着集群的运行安全,如果能提前预警是再好不过了,这条命令提供了一些帮助。这条命令依赖smartmontools包,之前ceph14的开发版并没有把这条依赖加上,所以要单独安装,正式版不存在这个问题。开发版和正式版的ceph14跟smartctl还不完全匹配或者还没有完全开发完毕,执行ceph device query-daemon-health-metrics osd.13一直报错。
这条非常诱人的命令只能等待后续完善了。
8、ceph orchestrator
这是大神着重提及的一个功能,主要是改善ceph的易用性的。目前它支持rook和ssh两个后端,由于对rook不熟悉,所以以ssh后端为例介绍。
首先、执行ceph mgr module enable ssh开启mgr的ssh module。
然后、执行ceph orchestrator set backend ssh开启orchestrator的ssh后端。
现在就可以开始使用ceph orchestrator相关命令了。但是实际使用还是出错了,因该是mgr的ssh模块没有正确配置的原因。以后有空再深入,这里先跳过了。
9、ceph telemetry命令用ceph mgr module enable telemetry启用,但是对telemetry不了解也跳过了。