Ceph Monitor基礎架構與模塊詳解


轉自:https://www.ustack.com/blog/ceph-monitor/

Ceph rados cluster離不開Monitor,如果沒有Monitor,則Ceph將無法執行一條簡單的命令。Monitor由於其特殊性,了解它,對於我們深入理解Ceph,保證Ceph的穩定性,有很大幫助。

Monitor 基本架構介紹

Monitor的基本架構圖:

ceph monitor
Monitor的主要任務就是維護集群視圖的一致性,在維護一致性的時候使用了Paxos協議,並將其實例化到數據庫中,方便后續的訪問。所以Monitor基本上是由三類結構支撐起來的,第一類是管理各種map和相關內容的PaxosService實例,第二類是Paxos實例,第三類是對k/v store的封裝,即MonitorDBStore實例。

這樣看起來,分工是很明確的,PaxosService handle client過來的請求,Paxos用來處理Paxos協議相關的東西,一般在選主和處理update請求的時候才會涉及,而在處理讀請求的時候一般不會涉及。 MonitorDBStore是處理數據存儲相關的封裝,用來將update的數據進行持久化。

模塊詳解

1、AuthMonitor

用來提供對auth的一致性,比如keyring,這些keyring的生成都是要走Paxos流程的。

2、LogMonitor
將log的東西寫入到monitor,且是一致的,就是所有的mon都有這個日志。比如我們經常看到的wrongly marked me down就是由clog利用monitor的log機制發送到monitor的,這樣你在osd上能看到,monitor里也可以查看到。可以將一些重要信息保存下來。

3、MdsMonitor
用來維護Mds的狀態,然后通過Mdsmap來進行更新。目前Mds默認有一個Active,其它的是Standby。

4、OsdMonitor
用來維護Osd的狀態,當osd有up,down等狀態變化的時候,會改變osdmap,然后將osdmap通過隨機選擇一個osd 的方式將osdmap擴散出去。其中有些細微差別,比如up的時候,除了隨機選擇的osd外,還會將osdmap直接發送給向mon報啟動的osd。

5、PGMonitor
用來維護PG的state,這些信息是由Primary osd來通過tick發送給Mon的。

6、K/V Store
對K/V Store(這里使用的是LevelDB)的封裝是主要是在MonitorDBStore這個類中,其中封裝的Op主要有三類:

  • PUT操作
  • ERASE操作
  • COMPACT操作
    目前Monitor可以通過重啟(mon_compact_on_start)或者命令(ceph compact)來進行Compact,所以Monitor的空間是不會用的那么多。

7、Paxos
Paxos實例主要是實現Paxos協議,然后應用於選主和處理update請求。
選主(三個mon同時啟動):
1) mon 啟動進入prboing
2) 當一個mon probing到超半數的mon的時候,就會發起選舉
3) 發起選舉的mon會向所有的mon發起propose
4) mon處理propose消息的時候會根據自己的rank來決定是重新發起選舉還是defer
5) 如果所有的mon 都ack,或者過半數mon回復ack(超時后檢查),則選舉成功,自己進行leader init,向其它mon發victory消息
6) 其它mon則lose_election,進入peon_init。
7) 在此之后,leader會發collect消息去收集peon的信息,為了后續處理請求能達成一致。


免責聲明!

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



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