Ceph心跳機制

1. 心跳介紹

心跳是用于節(jié)點間檢測對方是否故障的疚宇,以便及時發(fā)現(xiàn)故障節(jié)點進入相應(yīng)的故障處理流程。

問題:

  • 故障檢測時間和心跳報文帶來的負載之間做權(quán)衡。
  • 心跳頻率太高則過多的心跳報文會影響系統(tǒng)性能。
  • 心跳頻率過低則會延長發(fā)現(xiàn)故障節(jié)點的時間欧聘,從而影響系統(tǒng)的可用性非春。

故障檢測策略應(yīng)該能夠做到:

  • 及時:節(jié)點發(fā)生異常如宕機或網(wǎng)絡(luò)中斷時御吞,集群可以在可接受的時間范圍內(nèi)感知宽堆。
  • 適當(dāng)?shù)膲毫Γ喊▽?jié)點的壓力郑原,和對網(wǎng)絡(luò)的壓力唉韭。
  • 容忍網(wǎng)絡(luò)抖動:網(wǎng)絡(luò)偶爾延遲。
  • 擴散機制:節(jié)點存活狀態(tài)改變導(dǎo)致的元信息變化需要通過某種機制擴散到整個集群犯犁。

2. Ceph 心跳檢測

ceph_heartbeat_1.png

OSD節(jié)點會監(jiān)聽public属愤、cluster、front和back四個端口

  • public端口:監(jiān)聽來自Monitor和Client的連接栖秕。
  • cluster端口:監(jiān)聽來自O(shè)SD Peer的連接春塌。
  • front端口:供客戶端連接集群使用的網(wǎng)卡, 這里臨時給集群內(nèi)部之間進行心跳。
  • back端口:供客集群內(nèi)部使用的網(wǎng)卡。集群內(nèi)部之間進行心跳只壳。
  • hbclient:發(fā)送ping心跳的messenger俏拱。

3. Ceph OSD之間相互心跳檢測

ceph_heartbeat_osd.png

步驟:

  • 同一個PG內(nèi)OSD互相心跳,他們互相發(fā)送PING/PONG信息吼句。
  • 每隔6s檢測一次(實際會在這個基礎(chǔ)上加一個隨機時間來避免峰值)锅必。
  • 20s沒有檢測到心跳回復(fù),加入failure隊列惕艳。

4. Ceph OSD與Mon心跳檢測

ceph_heartbeat_mon.png

OSD報告給Monitor:

  • OSD有事件發(fā)生時(比如故障搞隐、PG變更)。
  • 自身啟動5秒內(nèi)远搪。
  • OSD周期性的上報給Monito
    • OSD檢查failure_queue中的伙伴OSD失敗信息劣纲。
    • 向Monitor發(fā)送失效報告,并將失敗信息加入failure_pending隊列谁鳍,然后將其從failure_queue移除癞季。
    • 收到來自failure_queue或者failure_pending中的OSD的心跳時,將其從兩個隊列中移除倘潜,并告知Monitor取消之前的失效報告绷柒。
    • 當(dāng)發(fā)生與Monitor網(wǎng)絡(luò)重連時,會將failure_pending中的錯誤報告加回到failure_queue中涮因,并再次發(fā)送給Monitor废睦。
  • Monitor統(tǒng)計下線OSD
    • Monitor收集來自O(shè)SD的伙伴失效報告。
    • 當(dāng)錯誤報告指向的OSD失效超過一定閾值养泡,且有足夠多的OSD報告其失效時嗜湃,將該OSD下線。

5. Ceph心跳檢測總結(jié)

Ceph通過伙伴OSD匯報失效節(jié)點和Monitor統(tǒng)計來自O(shè)SD的心跳兩種方式判定OSD節(jié)點失效瓤荔。

  • 及時:伙伴OSD可以在秒級發(fā)現(xiàn)節(jié)點失效并匯報Monitor净蚤,并在幾分鐘內(nèi)由Monitor將失效OSD下線。
  • 適當(dāng)?shù)膲毫Γ?/strong>由于有伙伴OSD匯報機制输硝,Monitor與OSD之間的心跳統(tǒng)計更像是一種保險措施今瀑,因此OSD向Monitor發(fā)送心跳的間隔可以長達600秒,Monitor的檢測閾值也可以長達900秒点把。Ceph實際上是將故障檢測過程中中心節(jié)點的壓力分散到所有的OSD上橘荠,以此提高中心節(jié)點Monitor的可靠性,進而提高整個集群的可擴展性郎逃。
  • 容忍網(wǎng)絡(luò)抖動:Monitor收到OSD對其伙伴OSD的匯報后哥童,并沒有馬上將目標(biāo)OSD下線,而是周期性的等待幾個條件:
    • 目標(biāo)OSD的失效時間大于通過固定量osd_heartbeat_grace和歷史網(wǎng)絡(luò)條件動態(tài)確定的閾值褒翰。
    • 來自不同主機的匯報達到mon_osd_min_down_reporters贮懈。
    • 滿足前兩個條件前失效匯報沒有被源OSD取消匀泊。
  • 擴散:作為中心節(jié)點的Monitor并沒有在更新OSDMap后嘗試廣播通知所有的OSD和Client,而是惰性的等待OSD和Client來獲取朵你。以此來減少Monitor壓力并簡化交互邏輯各聘。

6. 心跳設(shè)置

6.1 配置監(jiān)視器/ OSD互動

您已完成初始Ceph的配置之后,您可以部署和運行的Ceph抡医。當(dāng)你執(zhí)行一個命令躲因,如ceph health 或 ceph -s , Ceph的監(jiān)視器將報告CEPH存儲集群的當(dāng)前狀態(tài)忌傻。Ceph的監(jiān)視器通過每個Ceph的OSD守護實例大脉,以及相鄰的Ceph OSD守護實例,了解Ceph的存儲集群的相關(guān)狀態(tài)水孩。Ceph的監(jiān)視器如果沒有收到報告镰矿,或者如果它接收Ceph的存儲集群的變化的報告,Ceph的監(jiān)視器更新的的CEPH集群映射圖的狀態(tài)荷愕。

Ceph為Ceph的監(jiān)視器/ Ceph的OSD守護程序交互提供合理的默認設(shè)置衡怀。但是,您可以覆蓋默認值安疗。以下部分描述如何用Ceph的監(jiān)視器和Ceph的OSD守護實例互動來達到Ceph的存儲集群監(jiān)控的目的。

6.2. OSDS檢查心跳

每個Ceph的OSD守護程序檢查其他Ceph的OSD守護進程的心跳每6秒够委。Ceph的配置文件下的[OSD]部分加入OSD osd heartbeat interval 荐类,或通過設(shè)定值在運行時,您可以更改心跳間隔茁帽。如果在20秒的寬限期內(nèi)鄰居的Ceph的OSD守護進程不顯示心跳玉罐,Ceph的OSD守護進程可能考慮周邊的Ceph OSD守護掛掉,并向一個Ceph的Monitor報告潘拨,這將更新的CEPH集群地圖吊输。一個OSD osd heartbeat grace 可以在Ceph的配置文件下的[OSD]部分設(shè)置,或在運行時铁追,你通過設(shè)置這個值改變這個寬限期季蚂。

6.3. OSDS報告掛掉的OSD

默認情況下,Ceph的OSD守護程序必須向Ceph的監(jiān)視器報告三次:另一個Ceph的OSD守護程序已經(jīng)掛掉琅束,在Ceph的Monitor承認該報告Ceph的OSD守護掛掉之前扭屁。在(早期V0.62版本之前)Ceph的配置文件下的[MON]部分添加 osd min down reports setting,或者通過設(shè)定值在運行時涩禀,您可以更改OSD報告的掛掉的最低數(shù)量 料滥。默認情況下,只有一個Ceph的OSD守護進程是必需報告另一個Ceph的OSD守護進程艾船。您可以更改向Ceph監(jiān)視器報告Ceph的OSD守護進程的Ceph的OSD Daemones 的數(shù)量葵腹,通過添加一個mon osd min down reporters設(shè)置在Ceph的配置文件中高每,或者通過設(shè)定值在運行時。

6.4. 凝視失敗的OSD報告

Ceph的OSD守護進程如果不能和Ceph的配置文件(或群集地圖)中定義的OSD守護同行践宴,它將每30秒ping一個Ceph的監(jiān)視器觉义,為了最新副本的集群映射圖。Ceph的配置文件 下的[OSD]部分加入 osd mon heartbeat interval 設(shè)置浴井,或通過在運行時設(shè)定值晒骇,您可以更改Ceph的監(jiān)控心跳間隔。

6.5. OSDS報告其狀態(tài)

Ceph的OSD守護進程如果不向Ceph的監(jiān)視器報告磺浙,至少每120秒一次洪囤,Ceph的監(jiān)視器會考慮Ceph的OSD守護已經(jīng)掛掉。您可以更改Ceph的監(jiān)控報告間隔撕氧,通過加入 osd mon report interval max 設(shè)置在Ceph的配置文件的[OSD]部分瘤缩,或者通過設(shè)置在運行時的值。Ceph的OSD守護進程會嘗試報告其狀態(tài)每30秒伦泥。在Ceph的配置文件下的[OSD]部分加入 osd mon report interval min s設(shè)置剥啤,或者通過設(shè)定值在運行時,您可以更改Ceph的OSD守護報告間隔不脯。

7. 配置設(shè)置

修改心跳設(shè)置時府怯,你應(yīng)該將它們包括在 您的配置文件的[global]部分。

7.1 監(jiān)視器MONITOR設(shè)置

參數(shù) 說明 類型 默認值
mon OSD min up ratio Ceph的OSD未掛掉的最低比率在Ceph的OSD守護程序被仍定掛掉之前 double 0.3
mon OSD min in ratio Ceph的OSD實例的最低比率在Ceph的OSD守護程序被仍定出局之前 double 0.3
mon osd laggy halflife laggy估計會腐爛的秒數(shù) int 60 * 60
mon osd laggy weight laggy估計衰減的新樣本的權(quán)重 double 0.3
mon osd adjust heartbeat grace 如果設(shè)置為true防楷,Ceph將在laggy估計的基礎(chǔ)上擴展 bool true
mon osd adjust down out interval 如果設(shè)置為true牺丙,Ceph基于laggy估計擴展 bool true
mon osd auto mark in Ceph將標(biāo)記任何引導(dǎo)的Ceph的OSD守護進程作為在 CEPH存儲集群 bool false
mon osd auto mark auto out in Ceph的標(biāo)記引導(dǎo)Ceph的OSD守護 Ceph的存儲集群,集群中的自動標(biāo)記 bool true
mon osd auto mark new in 頭孢將迎來啟動新的Ceph的OSD守護在 Ceph的存儲集群 bool true
mon osd down out subtree limit 最大的CRUSH單位Ceph的類型复局,會自動標(biāo)記出來 String rack
mon osd report timeout 寬限期秒下來在聲明反應(yīng)遲鈍Ceph的OSD守護前 32-bit Integer 900
mon osd min down reporters Ceph的OSD守護報告向下 Ceph的OSD守護所需的最低數(shù)量 32-bit Integer 1
mon osd min down reports Ceph的OSD守護的最低次數(shù)必須報告說冲簿,另一個Ceph的OSD守護下來 32-bit Integer 3

7.2 OSD設(shè)置

參數(shù) 說明 類型 默認值
OSD heartbeat address 一個Ceph的OSD守護進程的網(wǎng)絡(luò)地址的心跳 Address The host address
OSD heartbeat interval 多久Ceph的OSD守護坪及其同行(以秒計) 32-bit Integer 6
OSD heartbeat grace Ceph的OSD當(dāng)一個守護進程并沒有表現(xiàn)出心跳Ceph的存儲集群認為,經(jīng)過時間的 32-bit Integer 20
OSD mon heartbeat interval Ceph的的OSD守護坪一個Ceph的監(jiān)視器如果它沒有的CEPH OSD守護同行亿昏,多久 32-bit Integer 30
OSD mon report interval max Ceph的OSD守護進程報告Ceph的監(jiān)視器Ceph的監(jiān)視器前認為Ceph的OSD守護下來的時間以秒為單位的最大 32-bit Integer 120
OSD mon report inteval min 秒為Ceph的OSD的守護Ceph的監(jiān)視器峦剔,以防止Ceph的監(jiān)視器考慮Ceph的OSD守護的最低數(shù)量 32-bit Integer 5 (有效范圍:應(yīng)小于OSD 周一 報告 間隔 最大)
OSD mon ACK timeout 等待的秒數(shù)為Ceph的監(jiān)視器確認請求統(tǒng)計 32-bit Integer 30
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市角钩,隨后出現(xiàn)的幾起案子吝沫,更是在濱河造成了極大的恐慌,老刑警劉巖彤断,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件野舶,死亡現(xiàn)場離奇詭異,居然都是意外死亡宰衙,警方通過查閱死者的電腦和手機平道,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來供炼,“玉大人一屋,你說我怎么就攤上這事窘疮。” “怎么了冀墨?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵闸衫,是天一觀的道長。 經(jīng)常有香客問我诽嘉,道長蔚出,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任虫腋,我火速辦了婚禮骄酗,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘悦冀。我一直安慰自己趋翻,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布盒蟆。 她就那樣靜靜地躺著踏烙,像睡著了一般。 火紅的嫁衣襯著肌膚如雪历等。 梳的紋絲不亂的頭發(fā)上讨惩,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天,我揣著相機與錄音募闲,去河邊找鬼步脓。 笑死,一個胖子當(dāng)著我的面吹牛浩螺,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播仍侥,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼要出,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了农渊?” 一聲冷哼從身側(cè)響起患蹂,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎砸紊,沒想到半個月后传于,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡醉顽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年沼溜,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片游添。...
    茶點故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡系草,死狀恐怖通熄,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情找都,我是刑警寧澤唇辨,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站能耻,受9級特大地震影響赏枚,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜晓猛,卻給世界環(huán)境...
    茶點故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一饿幅、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧鞍帝,春花似錦诫睬、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蚓曼,卻和暖如春亲澡,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背纫版。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工床绪, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人其弊。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓癞己,卻偏偏與公主長得像,于是被迫代替她去往敵國和親梭伐。 傳聞我的和親對象是個殘疾皇子痹雅,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,724評論 2 354

推薦閱讀更多精彩內(nèi)容