????????春節(jié)假期ceph大佬發(fā)布了Nautilus版新功能的介紹,也想來嘗嘗鮮曲掰。于是編譯了ceph-14.0.1-3799-g4de85a5版本測(cè)試一番垃杖。這兩天ceph14.1.0正式發(fā)布了,又重新安裝了寫篇測(cè)試心得找前。
? ? ? ? 1糟袁、通過ceph config配置集群參數(shù)
? ? ? ? ? 在ceph13之前的各個(gè)版本,參數(shù)都是在配置文件中設(shè)置,如果更改參數(shù)需要向每個(gè)ceph節(jié)點(diǎn)推送新的配置文件躺盛,非常麻煩项戴。麻煩倒是其次,一個(gè)不小心就會(huì)造成各個(gè)節(jié)點(diǎn)間配置文件不一致槽惫,后續(xù)如果出現(xiàn)問題排查會(huì)很糟心周叮。到了13版本已經(jīng)提供了ceph config命令,但是并不完善界斜,很多配置依舊需要手動(dòng)更改配置文件解決仿耽。到了14版本類似問題已經(jīng)很少了。但是依然有一些需要在鏈接mon前就要確定的參數(shù)各薇,依然需要在配置文件里指定项贺,比如:osd_op_queue就得在配置文件里寫明。下面對(duì)ceph config做一下說明峭判。
? ??????????ceph config dump 會(huì)列出所有已經(jīng)修改的參數(shù)列表:
????????????config set <who> <name> <value>指定組件或者全局設(shè)定參數(shù):
? ??????????如:在集群層面限制rbd的iops最大為100
????????????ceph config set global rbd_qos_iops_limit 100
????????????也可以對(duì)具體的進(jìn)程設(shè)置參數(shù),
????????????如: 告訴osd.0每天0時(shí)開始scrub
????????????ceph config set osd.0 osd_scrub_begin_hour 0
? ? ? ? ? ? ceph config rm 刪除被參數(shù)修改
????????????如:ceph config rm global rbd_qos_iops_limit
????????????ceph config log 列出歷史上的參數(shù)修改記錄,每條記錄都有唯一標(biāo)號(hào),它記錄了當(dāng)時(shí)的所有配置參數(shù)耿焊。
? ? ? ? ? ? 可以使用ceph config reset <int>命令將配置恢復(fù)到歷史上的一個(gè)狀態(tài)借笙。
????????????如:ceph config reset 4
? ? ? ? ? ? 這條命令將集群配置回滾到log id是4的狀態(tài)。
? ????????????ceph config generate-minimal-conf產(chǎn)生一個(gè)最小配置的ceph.conf文件
? ? ? ? ? ? ? config help <key>列出參數(shù)的幫助說明
? ? ? ? ? ? ? config show-with-defaults <who> 顯示一個(gè)或一類進(jìn)程的默認(rèn)配置
? ? ? ? ? ? ? config show <who> {<key>}顯示一個(gè)或一類進(jìn)程的特定參數(shù)的設(shè)置
有了這些方法就不用去一個(gè)一個(gè)推送配置文件了疗认,一次修改全局生效完残。參數(shù)的動(dòng)態(tài)修改更是省心了很多伏钠,再也不用麻煩的使用ceph tell osd.* config set之類的命令。
2坏怪、14版本引入了msgr2
????????msgr2支持加密贝润,支持kerberos授權(quán)認(rèn)證等,但是還需要等待一段時(shí)間現(xiàn)在還沒發(fā)體驗(yàn)铝宵,但是已經(jīng)可以使用ceph mon enable-msgr2啟用msgr2打掘。這對(duì)提高ceph集群的安全性非常有益處,非常期待鹏秋。在之前的文檔都介紹msgr2在3000端口啟用尊蚁,但是實(shí)際測(cè)試發(fā)現(xiàn),是在3300端口啟用侣夷,被叫做“IANA monitor port”横朋。
在msgr.h頭文件里定義
#define CEPH_MON_PORT_IANA ?????3300 ?/* IANA monitor port */
3、ceph14支持pg數(shù)減小和pg數(shù)根據(jù)pool容量自動(dòng)調(diào)整
????????????在以往版本里ceph的pg_num只能調(diào)大不能調(diào)小百拓,現(xiàn)在支持pg_num縮小了琴锭。這解決了ceph集群縮容時(shí)pg_num過大的問題。
????????????更重要的是14.0.1-3799-g4de85a5開始支持pg_num自動(dòng)調(diào)整衙传,在14.0.1時(shí)還沒有决帖。要啟用這一功能必須啟用mgr的pg_autoscaler模塊。pg_autoscale模塊將根據(jù)pool的實(shí)際容量調(diào)整pg_num數(shù)蓖捶。
? ? ? ? ? ? 使用ceph mgr module enable pg_autoscaler命令啟用mgr的pg自動(dòng)調(diào)整模塊地回。
? ? ? ? ? ? ceph osd pool set <pool name> pg_autoscale_mode指定池的pg自動(dòng)調(diào)整模式。pg_autoscale_mode有on俊鱼、off刻像、warn三個(gè)模式。開發(fā)版如果不指定模式并闲,將默認(rèn)將進(jìn)入warn模式细睡,正式發(fā)布的14.1.0必須指定一個(gè)模式。ceph osd pool autoscale-status ?顯示當(dāng)前pg_num以及將要調(diào)整的pg_num數(shù)焙蚓,和相關(guān)參數(shù)纹冤。
這個(gè)功能使運(yùn)維人員不必再為pg_num的調(diào)整而煩心,不過當(dāng)數(shù)據(jù)量很大時(shí)购公,調(diào)整pg_num帶來的集群抖動(dòng)到底有多大還是未知數(shù)萌京,還需要等待正式版出來后大量測(cè)試檢驗(yàn)。
4宏浩、ceph report也是很全面的命令知残,會(huì)以json格式報(bào)告非常全面的集群運(yùn)行數(shù)據(jù)
5、ceph rbd perf image counters 和ceph rbd perf image stats
? ? ? ? 這是ceph14新增的兩個(gè)命令比庄,用來分析image的性能求妹。要啟用這個(gè)命令乏盐,首先要開啟mgr的rbd_support模塊。命令如下:
? ? ? ? ? ceph mgr module enable rbd_support
? ? ? ? ? counters會(huì)顯示每個(gè)image的累計(jì)讀寫iops和累計(jì)讀寫量和平均讀寫延時(shí)制恍。
????????????stats會(huì)顯示每個(gè)image的即時(shí)iops和即時(shí)讀寫速率以及即時(shí)讀寫延時(shí)父能,延時(shí)單位是納秒。
????????????在ceph14的開發(fā)版里有ceph osd perf query add净神,ceph? osd perf query remove何吝,ceph?osd perf counters get等命令,用于收集ceph14內(nèi)定義的client_id,client_address鹃唯,pool_id爱榕,namespace,osd_id坡慌,pg_id黔酥,object_name,snap_id這八類io數(shù)據(jù)洪橘。收集條件可以以正則表達(dá)式的形式注入跪者,正式的ceph14.1.0把這些命令刪除了,但保留了rbd相關(guān)的命令熄求。rbd性能分析就是通過object_name類型增加SUBKEYS_QUERY查詢條件實(shí)現(xiàn)的坑夯。查詢條件過濾了所有和image相關(guān)的幾類rbd對(duì)象:rbd_header、rbd_object_map抡四、rbd_data、rbd_id仗谆,實(shí)現(xiàn)對(duì)image的io數(shù)據(jù)統(tǒng)計(jì)指巡。不過由于mgr里統(tǒng)計(jì)的數(shù)據(jù)并不持久化,一旦mgr崩潰所有的統(tǒng)計(jì)數(shù)據(jù)都會(huì)丟失隶垮,或者統(tǒng)計(jì)條件超時(shí)都會(huì)丟失統(tǒng)計(jì)數(shù)據(jù)藻雪。
6、 ceph progress
? ? ? ? 用于顯示恢復(fù)的進(jìn)度狸吞,恢復(fù)過程終于可視化了勉耀,使運(yùn)維人員心里踏實(shí)很多。
????????ceph progress?json回饋更詳細(xì)的進(jìn)度內(nèi)容蹋偏。
????????ceph progress clear清除恢復(fù)進(jìn)度便斥。
7、ceph device
? ? ? ? 這也是一個(gè)對(duì)于ceph運(yùn)維至關(guān)重要的命令威始,磁盤的健康度直接影響著集群的運(yùn)行安全枢纠,如果能提前預(yù)警是再好不過了,這條命令提供了一些幫助黎棠。這條命令依賴smartmontools包晋渺,之前ceph14的開發(fā)版并沒有把這條依賴加上镰绎,所以要單獨(dú)安裝,正式版不存在這個(gè)問題木西。開發(fā)版和正式版的ceph14跟smartctl還不完全匹配或者還沒有完全開發(fā)完畢畴栖,執(zhí)行ceph device query-daemon-health-metrics osd.13一直報(bào)錯(cuò)。
這條非常誘人的命令只能等待后續(xù)完善了八千。
8吗讶、ceph orchestrator
? ? ? ? ? 這是大神著重提及的一個(gè)功能,主要是改善ceph的易用性的叼丑。目前它支持rook和ssh兩個(gè)后端关翎,由于對(duì)rook不熟悉,所以以ssh后端為例介紹鸠信。
? ? ? ? ? ? 首先纵寝、執(zhí)行ceph mgr module enable ssh開啟mgr的ssh module。
? ? ? ? ? ? 然后星立、執(zhí)行ceph orchestrator set backend ssh開啟orchestrator的ssh后端爽茴。
? ? ? ? ? ?現(xiàn)在就可以開始使用ceph orchestrator相關(guān)命令了。但是實(shí)際使用還是出錯(cuò)了绰垂,因該是mgr的ssh模塊沒有正確配置的原因室奏。以后有空再深入,這里先跳過了劲装。
9胧沫、ceph telemetry命令用ceph mgr module enable telemetry啟用,但是對(duì)telemetry不了解也跳過了占业。