關於monitor的部署,有下面幾個須要注意的地方:html
1. monitor節點的數量。算法
通常來講,在實際運行中,ceph monitor的個數是奇數個。初始最好至少配置3個。而後增長的時候,2個2個的增長。socket
2. monitor的容錯機制工具
2n+1(n>=0)個,只要正常的節點數>=n+1,ceph的paxos算法能保證系統的正常運行。因此,對於3個節點,同時只能掛掉一個。5個節點,最多掛掉兩個。其實看到這裏,也就解釋了,爲何monitor最好奇數個。由於5個節點和6個節點,效果是相同的,都是隻能最多掛掉兩個。因此偶數個,其實也是浪費一個。htm
3.掛掉節點超過半數的影響blog
若是monitor節點超過半數掛掉,paxos算法就沒法正常進行仲裁(quorum),此時,ceph集羣會阻塞對集羣的操做,直到超過半數的monitor節點恢復。進程
4. monitor恢復的方法rem
1) 若是掛掉的節點能夠恢復,也就是monitor的元數據仍是OK的,那麼只須要重啓ceph-mon進程便可。因此,對於monitor,最好運行在RAID的機器上。這樣,即便機器出現故障,恢復也比較容易。可是,tahow目前的系統盤,單U只有1塊,因此沒法raid…部署
2) 只能想辦法將故障的節點恢復,但元數據已經損壞。能夠經過正常工做的monitor節點恢復它。能夠經過將正常工做節點的monmap導出,因此,只要獲得monmap,就能夠恢復monitor了。可是這種方法,須要保證socket能夠正常導出monmap。由於這時候通訊可能已經被阻塞。get
3) 遇到經過socket不能進行monmap的導出。不過,幸虧有monmaptool工具,經過它,咱們能夠手動生成。
4) 還有個命令,能夠強行踢出掛掉的monitor,使得monitor總數減小。可是不推薦這種作法,最好仍是找到出錯緣由,儘早解決。
ceph mon remove <name> remove monitor named <name>
ceph mon rm <name> remove monitor named <name>
參考文章:
http://www.cnblogs.com/hustcat/p/3925971.html
http://docs.ceph.com/docs/master/rados/operations/add-or-rm-mons/