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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM