共計(jì) 2083 個(gè)字符,預(yù)計(jì)需要花費(fèi) 6 分鐘才能閱讀完成。
這篇文章主要介紹 Ceph 集群縮容及相關(guān)故障處理的示例分析,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
引言
由于目前機(jī)器比較緊張,需要將我集群中的一批機(jī)器提供給其他業(yè)務(wù)使用,這時(shí)問題來了,集群機(jī)器的退出意味著數(shù)據(jù)要重新分布,數(shù)據(jù)遷移的過程中比較容易出故障。
處理過程處理測(cè)試 POOL 對(duì)應(yīng)的機(jī)器
集群中有很多 POOL,有些 POOL 是客戶數(shù)據(jù),這非常重要;有些 POOL 是我測(cè)試用,這些 POOL 對(duì)應(yīng)的 OSD 可以直接刪除,即時(shí)集群報(bào) pg 異常,也無需關(guān)心,在刪除對(duì)應(yīng) OSD 后將對(duì)應(yīng) POOL 刪除即可,相應(yīng)的 pg 異常也消失。
注:為了避免關(guān)閉 OSD 的過程中發(fā)生數(shù)據(jù)遷移,請(qǐng)?jiān)O(shè)置 norecover 標(biāo)記。
ceph osd set norecover
刪除對(duì)應(yīng)主機(jī)上的所有 OSD 信息的命令如下:
killall -9 ceph-osd
for i in {108..119}
do
ceph osd out osd.$i;
ceph osd crush remove osd.$i;
ceph auth del osd.$i;
ceph osd rm $i;
ceph auth del osd.$i;
ceph osd crush remove hostname
removed item id -10 name hostname from crush map
處理業(yè)務(wù)需要的 POOL 對(duì)應(yīng)的機(jī)器
對(duì)于業(yè)務(wù)用到的 POOL 分布在了 10 臺(tái)機(jī)器上,現(xiàn)在要從這 10 臺(tái)機(jī)器中釋放出五臺(tái), 這需要涉及到數(shù)據(jù)遷移了。有三種辦法進(jìn)行處理。
方法一之設(shè)置 out
將要退出的機(jī)器依次設(shè)置為 out 狀態(tài)。一臺(tái)機(jī)器做完后做另外一臺(tái),由系統(tǒng)負(fù)責(zé)將數(shù)據(jù)遷走;
方法二之設(shè)置權(quán)重
將要推出的機(jī)器權(quán)重調(diào)整為 0,由系統(tǒng)負(fù)責(zé)將數(shù)據(jù)遷走;
方法三 構(gòu)建新規(guī)則
構(gòu)建新 group, 將要保留的機(jī)器放到新 group 下;
構(gòu)建新 crushrule, take from newgroup;
將業(yè)務(wù) pool 的規(guī)則設(shè)置為 new crush rule 下;
這是最快的辦法,只涉及到一次遷移,等待數(shù)據(jù)遷移完畢后,就可以將不需要的 OSD 關(guān)閉并移除了。
處理后碰到的問題
癥狀表現(xiàn),在集群狀態(tài)中顯示少量 PG 狀態(tài)異常。active + remapped + backfilling active + remapped
[root@gnop029-ct-zhejiang_wenzhou-16-11 ~]# ceph -s
cluster c6e7e7d9-2b91-4550-80b0-6fa46d0644f6
health HEALTH_WARN
2 pgs backfilling
3 pgs stuck unclean
recovery 24/2148593 objects misplaced (0.001%)
norecover,noscrub,nodeep-scrub flag(s) set
monmap e3: 3 mons at {a=101.71.4.11:6789/0,b=101.71.4.12:6789/0,c=101.71.4.13:6789/0}
election epoch 446, quorum 0,1,2 a,b,c
osdmap e69909: 120 osds: 120 up, 120 in; 3 remapped pgs
flags norecover,noscrub,nodeep-scrub
pgmap v8678900: 10256 pgs, 16 pools, 2763 GB data, 1047 kobjects
7029 GB used, 197 TB / 214 TB avail
24/2148593 objects misplaced (0.001%)
10253 active+clean
2 active+remapped+backfilling
1 active+remapped
[root@ceph]# ceph pg dump_stuck unclean
pg_stat state up up_primary acting acting_primary
23.1c1 active+remapped+backfilling [59,37] 59 [76,84] 76
23.23b active+remapped [35,7] 35 [82,119] 82
23.221 active+remapped+backfilling [15,18] 15 [70,82] 70
后來我開啟了 scrub 和 deepscrub,將所有 pg 掃描后就恢復(fù)為 active + clean。
在發(fā)生數(shù)據(jù)遷移時(shí),有時(shí)候某些 osd 會(huì)因?yàn)樨?fù)載過高,導(dǎo)致 osd 進(jìn)程退出,這是需要做兩方面工作:
調(diào)低 osd backfill 的線程數(shù)量,降低 osd 工作負(fù)載;
down 掉的 osd 即時(shí)恢復(fù),要不會(huì)有很多 Pg 狀態(tài)異常,osd 回復(fù)后這些異常的 pg 也會(huì)很快恢復(fù)正常;
以上是“Ceph 集群縮容及相關(guān)故障處理的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注丸趣 TV 行業(yè)資訊頻道!