您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關Ceph心跳機制的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
心跳是用于節(jié)點間檢測對方是否故障的,以便及時發(fā)現(xiàn)故障節(jié)點進入相應的故障處理流程。
問題:
故障檢測時間和心跳報文帶來的負載之間做權衡。
心跳頻率太高則過多的心跳報文會影響系統(tǒng)性能。
心跳頻率過低則會延長發(fā)現(xiàn)故障節(jié)點的時間,從而影響系統(tǒng)的可用性。
故障檢測策略應該能夠做到:
及時:節(jié)點發(fā)生異常如宕機或網(wǎng)絡中斷時,集群可以在可接受的時間范圍內感知。
適當?shù)膲毫Γ喊▽?jié)點的壓力,和對網(wǎng)絡的壓力。
容忍網(wǎng)絡抖動:網(wǎng)絡偶爾延遲。
擴散機制:節(jié)點存活狀態(tài)改變導致的元信息變化需要通過某種機制擴散到整個集群。
ceph_heartbeat_mon.png
OSD報告給Monitor:
OSD有事件發(fā)生時(比如故障、PG變更)。
自身啟動5秒內。
OSD周期性的上報給Monito
OSD檢查failure_queue中的伙伴OSD失敗信息。
向Monitor發(fā)送失效報告,并將失敗信息加入failure_pending隊列,然后將其從failure_queue移除。
收到來自failure_queue或者failure_pending中的OSD的心跳時,將其從兩個隊列中移除,并告知Monitor取消之前的失效報告。
當發(fā)生與Monitor網(wǎng)絡重連時,會將failure_pending中的錯誤報告加回到failure_queue中,并再次發(fā)送給Monitor。
Monitor統(tǒng)計下線OSD
Monitor收集來自OSD的伙伴失效報告。
當錯誤報告指向的OSD失效超過一定閾值,且有足夠多的OSD報告其失效時,將該OSD下線。
Ceph通過伙伴OSD匯報失效節(jié)點和Monitor統(tǒng)計來自OSD的心跳兩種方式判定OSD節(jié)點失效。
及時:伙伴OSD可以在秒級發(fā)現(xiàn)節(jié)點失效并匯報Monitor,并在幾分鐘內由Monitor將失效OSD下線。
適當?shù)膲毫Γ?/strong>由于有伙伴OSD匯報機制,Monitor與OSD之間的心跳統(tǒng)計更像是一種保險措施,因此OSD向Monitor發(fā)送心跳的間隔可以長達600秒,Monitor的檢測閾值也可以長達900秒。Ceph實際上是將故障檢測過程中中心節(jié)點的壓力分散到所有的OSD上,以此提高中心節(jié)點Monitor的可靠性,進而提高整個集群的可擴展性。
容忍網(wǎng)絡抖動:Monitor收到OSD對其伙伴OSD的匯報后,并沒有馬上將目標OSD下線,而是周期性的等待幾個條件:
目標OSD的失效時間大于通過固定量osd_heartbeat_grace和歷史網(wǎng)絡條件動態(tài)確定的閾值。
來自不同主機的匯報達到mon_osd_min_down_reporters。
滿足前兩個條件前失效匯報沒有被源OSD取消。
擴散:作為中心節(jié)點的Monitor并沒有在更新OSDMap后嘗試廣播通知所有的OSD和Client,而是惰性的等待OSD和Client來獲取。以此來減少Monitor壓力并簡化交互邏輯。
您已完成初始Ceph的配置之后,您可以部署和運行的Ceph。當你執(zhí)行一個命令,如ceph health 或 ceph -s , Ceph的監(jiān)視器將報告 CEPH存儲集群的當前狀態(tài)。Ceph的監(jiān)視器通過每個 Ceph的OSD守護實例,以及相鄰的Ceph OSD守護實例,了解Ceph的存儲集群的相關狀態(tài)。Ceph的監(jiān)視器如果沒有收到報告,或者如果它接收Ceph的存儲集群的變化的報告,Ceph的監(jiān)視器更新的的 CEPH集群映射圖的狀態(tài)。
Ceph為Ceph的監(jiān)視器/ Ceph的OSD守護程序交互提供合理的默認設置。但是,您可以覆蓋默認值。以下部分描述如何用Ceph的監(jiān)視器和Ceph的OSD守護實例互動來達到Ceph的存儲集群監(jiān)控的目的。
每個Ceph的OSD守護程序檢查其他Ceph的OSD守護進程的心跳每6秒。Ceph的配置文件下的[OSD]部分加入OSD osd heartbeat interval ,或通過設定值在運行時,您可以更改心跳間隔。如果在20秒的寬限期內鄰居的Ceph的OSD守護進程不顯示心跳,Ceph的OSD守護進程可能考慮周邊的Ceph OSD守護掛掉,并向一個Ceph的Monitor報告,這將更新的CEPH集群地圖。一個OSD osd heartbeat grace 可以在Ceph的配置文件下的[OSD]部分設置,或在運行時,你通過設置這個值改變這個寬限期。
默認情況下,Ceph的OSD守護程序必須向Ceph的監(jiān)視器報告三次:另一個Ceph的OSD守護程序已經(jīng)掛掉,在Ceph的Monitor承認該報告Ceph的OSD守護掛掉之前。在(早期V0.62版本之前)Ceph的配置文件下的[MON]部分添加 osd min down reports setting,或者通過設定值在運行時,您可以更改OSD報告的掛掉的最低數(shù)量 。默認情況下,只有一個Ceph的OSD守護進程是必需報告另一個Ceph的OSD守護進程。您可以更改向Ceph監(jiān)視器報告Ceph的OSD守護進程的Ceph的OSD Daemones 的數(shù)量,通過添加一個mon osd min down reporters設置在Ceph的配置文件中,或者通過設定值在運行時。
Ceph的OSD守護進程如果不能和Ceph的配置文件(或群集地圖)中定義的OSD守護同行,它將每30秒ping一個Ceph的監(jiān)視器,為了最新副本的集群映射圖。Ceph的配置文件 下的[OSD]部分加入 osd mon heartbeat interval 設置,或通過在運行時設定值,您可以更改Ceph的監(jiān)控心跳間隔。
Ceph的OSD守護進程如果不向Ceph的監(jiān)視器報告,至少每120秒一次,Ceph的監(jiān)視器會考慮Ceph的OSD守護已經(jīng)掛掉。您可以更改Ceph的監(jiān)控報告間隔,通過加入 osd mon report interval max 設置在Ceph的配置文件的[OSD]部分,或者通過設置在運行時的值。Ceph的OSD守護進程會嘗試報告其狀態(tài)每30秒。在Ceph的配置文件下的[OSD]部分加入 osd mon report interval min s設置,或者通過設定值在運行時,您可以更改Ceph的OSD守護報告間隔。
修改心跳設置時,你應該將它們包括在 您的配置文件的[global]部分。
參數(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估計衰減的新樣本的權重 | double | 0.3 |
mon osd adjust heartbeat grace | 如果設置為true,Ceph將在laggy估計的基礎上擴展 | bool | true |
mon osd adjust down out interval | 如果設置為true,Ceph基于laggy估計擴展 | bool | true |
mon osd auto mark in | Ceph將標記任何引導的Ceph的OSD守護進程作為在 CEPH存儲集群 | bool | false |
mon osd auto mark auto out in | Ceph的標記引導Ceph的OSD守護 Ceph的存儲集群,集群中的自動標記 | bool | true |
mon osd auto mark new in | 頭孢將迎來啟動新的Ceph的OSD守護在 Ceph的存儲集群 | bool | true |
mon osd down out subtree limit | 最大的 CRUSH單位Ceph的類型,會自動標記出來 | String | rack |
mon osd report timeout | 寬限期秒下來在聲明反應遲鈍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 |
參數(shù) | 說明 | 類型 | 默認值 |
---|---|---|---|
OSD heartbeat address | 一個Ceph的OSD守護進程的網(wǎng)絡地址的心跳 | Address | The host address |
OSD heartbeat interval | 多久Ceph的OSD守護坪及其同行(以秒計) | 32-bit Integer | 6 |
OSD heartbeat grace | Ceph的OSD當一個守護進程并沒有表現(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 (有效范圍:應小于OSD 周一 報告 間隔 最大) |
OSD mon ACK timeout | 等待的秒數(shù)為Ceph的監(jiān)視器確認請求統(tǒng)計 | 32-bit Integer |
關于“Ceph心跳機制的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。