zoukankan      html  css  js  c++  java
  • ceph的pg平衡插件balancer

    前言

    ceph比较老的版本使用的reweight或者osd weight来调整平衡的,本篇介绍的是ceph新的自带的插件balancer的使用,官网有比较详细的操作手册可以查询

    使用方法

    查询插件的开启情况

    [root@node1 ceph]# ceph mgr module ls
    {
        "enabled_modules": [
            "balancer",
            "restful",
            "status"
        ],
        "disabled_modules": [
            "dashboard",
            "influx",
            "localpool",
            "prometheus",
            "selftest",
            "telemetry",
            "zabbix"
        ]
    }
    

    默认balancer就是enable的

    查询balancer活动情况

    [root@node1 ceph]# ceph  balancer status
    {
        "last_optimize_duration": "", 
        "plans": [], 
        "mode": "none", 
        "active": false, 
        "optimize_result": "", 
        "last_optimize_started": ""
    }
    

    可以看到active是false,这里有手动的方法和自动的方法,我一般使用自动的,然后调整完了关闭

    首先设置兼容模式

    ceph balancer mode crush-compat
    

    开启调整前,我们需要先看下我们的调整的效果,这里可以用

    查询osd上的pg数
    提供的脚本来进行查询,效果如下

    [root@node1 ceph]# sh getpg.sh 
    dumped all
    
    pool :	6	| SUM 
    ------------------------
    osd.0	159	| 159
    osd.1	136	| 136
    osd.2	167	| 167
    osd.3	163	| 163
    osd.4	143	| 143
    ------------------------
    SUM :	768	|
    Osd :	5	|
    AVE :	153.60	|
    Max :	167	|
    Osdid :	osd.2	|
    per:	8.7%	|
    ------------------------
    min :	136	|
    osdid :	osd.1	|
    per:	-11.5%	|
    

    之所以要这个脚本,是因为自带的提供的是osd上面的pg之和,有的时候我们的存储池混用物理osd的,上面的有的空存储池的pg会影响查看效果,所以需要分存储池去计算统计

    开启调整

    ceph balancer on
    

    查看情况

    [root@node1 ceph]# ceph  balancer status
    {
        "last_optimize_duration": "0:00:00.989178", 
        "plans": [], 
        "mode": "crush-compat", 
        "active": true, 
        "optimize_result": "Optimization plan created successfully", 
        "last_optimize_started": "Wed Jun 17 14:34:53 2020"
    }
    

    现在的这个状态查询比以前做的好了,还带上了最后的执行时间,从监控来看,1分钟会触发一次,差不多等个几分钟,基本就调整完了,这个的前提是空的环境,有数据的环境,那就看每一轮的需要迁移的数据量了,所以搭建完集群,一定需要调整平衡
    我们检查下我们的环境

    [root@node1 ceph]# sh getpg.sh 
    dumped all
    
    pool :	6	| SUM 
    ------------------------
    osd.0	153	| 153
    osd.1	153	| 153
    osd.2	154	| 154
    osd.3	154	| 154
    osd.4	154	| 154
    ------------------------
    SUM :	768	|
    Osd :	5	|
    AVE :	153.60	|
    Max :	154	|
    Osdid :	osd.2	|
    per:	0.3%	|
    ------------------------
    min :	153	|
    osdid :	osd.1	|
    per:	-0.4%	|
    

    再次查询

    [root@node1 ceph]# ceph  balancer status
    {
        "last_optimize_duration": "0:00:00.114673", 
        "plans": [], 
        "mode": "crush-compat", 
        "active": true, 
        "optimize_result": "Unable to find further optimization, change balancer mode and retry might help", 
        "last_optimize_started": "Wed Jun 17 14:40:57 2020"
    }
    
    

    效果相当惊人,结果提示这个无法更好了,这个调整看自己接受的程度了,之前遇到过一次主机不对称的crush,实际上会出现永远调不平的情况,所以自己判断下即可,目前的情况非常的均衡了,这个时候我个人的操作是关闭掉这个调整,以免后面有变化,有数据的时候自动触发了调整引起不必要的麻烦

    关闭自动平衡

    [root@node1 ceph]# ceph balancer off
    [root@node1 ceph]# ceph  balancer status
    {
        "last_optimize_duration": "0:00:00.114152", 
        "plans": [], 
        "mode": "crush-compat", 
        "active": false, 
        "optimize_result": "Unable to find further optimization, change balancer mode and retry might help", 
        "last_optimize_started": "Wed Jun 17 14:44:58 2020"
    }
    

    手动调整方法

    ceph balancer optimize tune
    ceph balancer execute tune
    

    总结

    现在的平衡跟之前通过weight的调整,最终的效果比之前会好很多,之前H版本J版本一个集群能调整到5%,基本就是调整极限了

    变更记录

    Why Who When
    创建 武汉-运维-磨渣 2020-06-17
  • 相关阅读:
    PHP开发学习门户改版效果图投票
    怎样用js得到当前页面的url信息方法(JS获取当前网址信息)
    java 获取当期时间之前几小时的时间
    超人学院Hadoop大数据技术资源分享
    plsql导入一个目录下全部excel
    UML简单介绍
    Mod in math
    父母之爱子,则为之计深远是什么意思?_百度知道
    2014创客118新年大爬梯_活动行-国内最好的活动报名及售票平台!
    北京创客空间 BEIJING MAXPACE的小站
  • 原文地址:https://www.cnblogs.com/zphj1987/p/13575484.html
Copyright © 2011-2022 走看看