ceph14.1.x的一下新功能(一)

        春节假期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 指定组件或者全局设定参数:

            如:在集群层面限制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 列出历史上的参数修改记录,每条记录都有唯一标号,它记录了当时的所有配置参数。


1

            可以使用ceph config reset 命令将配置恢复到历史上的一个状态。

            如:ceph config reset 4

            这条命令将集群配置回滚到log id是4的状态。


              ceph config generate-minimal-conf产生一个最小配置的ceph.conf文件

              config help 列出参数的帮助说明

              config show-with-defaults 显示一个或一类进程的默认配置

              config show {}显示一个或一类进程的特定参数的设置

有了这些方法就不用去一个一个推送配置文件了,一次修改全局生效。参数的动态修改更是省心了很多,再也不用麻烦的使用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 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不了解也跳过了。

你可能感兴趣的:(ceph14.1.x的一下新功能(一))