中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ceph monitor的示例分析

發布時間:2021-12-17 09:35:10 來源:億速云 閱讀:314 作者:小新 欄目:云計算

這篇文章將為大家詳細講解有關ceph monitor的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

Ceph monitor分析

一、monitor簡介

monitor作為ceph集群核心服務,負責自維護ceph集群健康狀態,rados集群元數據mdsmap、monmap、osdmap、log、auth、health等,基于改進paxos算法,保證集群節點間的數據狀態在同一時刻一致性。總的來說Monitor負責收集集群信息,更新集群信息,發布集群信息。

ceph monitor的示例分析

圖 1 monito架構圖

可以看出monitor的內部其實是一個分布式kv數據庫。從下往上分別是MonitorDBStore、Paxos和PaxosService。PaxosService負責保證每次都只會有一個提案進入paxos流程。Paxos模塊具體實現了multi-Paxos算法。MonitorDBStore是對底層DB的抽象封裝,將DB的基本操作事務封裝成統一接口,當前DB默認使用rocksdb。

二、monitor啟動過程

monitor服務啟動過程主要包括:加載基本配置、檢查和加載db、初始化網絡模塊、mon注冊網絡監聽、monitor bootstrap啟動。

ceph monitor的示例分析

圖 3 prepare階段a

ceph monitor的示例分析

圖 5 accept階段a

ceph monitor的示例分析

圖 7 learn階段

2)Multi paxos:

原始的Paxos算法(Basic Paxos)只能對一個值形成決議,決議的形成至少需要兩次網絡來回,在高并發情況下可能需要更多的網絡來回,極端情況下甚至可能形成活鎖。如果想連續確定多個值,Basic Paxos搞不定了。因此Basic Paxos幾乎只是用來做理論研究,并不直接應用在實際工程中。 實際應用中幾乎都需要連續確定多個值,而且希望能有更高的效率。Multi-Paxos正是為解決此問題而提出。Multi-Paxos基于Basic Paxos做了兩點改進:

1、針對每一個要確定的值,運行一次Paxos算法實例(Instance),形成決議。

2、在所有Proposers中選舉一個Leader,由Leader唯一地提交Proposal給Acceptors進行表決。這樣沒有Proposer競爭,解決了活鎖問題。在系統中僅有一個Leader進行Value提交的情況下,Prepare階段就可以跳過,從而將兩階段變為一階段,提高效率。

Ceph monitor采用的是Multi paxos算法。

  1. monitor選舉過程

    monitor::bootstrap()是選舉入口,整個過程也由一系列狀態變化而成。每個Monitor啟動后,根據配置文件中的主機ip列表,發現其他monitor并且獲取其他節點最新日志版本號,根據版本號大小判斷是否需要從其他節點拉取db數據做同步,然后選出leader和peon,再做recovery,最后根據收到的信號shutdown。

    ceph monitor的示例分析

    圖 9 probe過程

    • 完成同步后,如果回復數超過節點數一半就開始選舉,節點進入STATE_ELECTING狀態。先廣播OP_PROPOSE消息,對端接收到消息,如果發現自身rank大于發送端rank值,則回復OP_ACK消息。這樣的話rank最小的節點會收到最多的ack消息,如果收到的ack消息數與當前活動節點數相同則本端節點成為leader,然后再通知各個節點本端勝出,其他節點將成為peon。

    ceph monitor的示例分析

    圖11 recovery流程

    • Monitor中實現paxos的提交過程是由begin()來完成。Leader首先更新自己的pending_v和pending_pn,然后發送OP_BEGIN消息到所有的peon節點,如果peon的accepted_pn小于leader發送的,則接受這個提案,將數據保存到本地,并且回復OP_ACCEPT消息。Leader收到的accept的個數等于集群的quorum,則將提案提交到leader本地,并且通知各個peon去完成commit操作。同時更新租約extend_lease(),更新租約后leader和peon之間會有個定時任務,leader會默認每3秒更新一次租約,超時10s則會重新選舉,peon同樣沒有收到lease消息,超過10s也會重新選舉。

    圖 12 提案提交過程

    可以看到,monitor啟動經歷了probe、sync數據、選舉、recovery過程,其中recovery涉及到了提案的提交動作,后續所有的monitor的提案提交都是通過begin()完成的。這里來看,paxos的第一階段就是在bootstrap()里完成,后續提案提交直接可以通過leader發給peon來完成,符合multi-paxos的描述

    關于“ceph monitor的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

安陆市| 安丘市| 中方县| 磴口县| 资溪县| 阿鲁科尔沁旗| 佛山市| 虞城县| 蚌埠市| 永吉县| 察哈| 济源市| 高碑店市| 同仁县| 原阳县| 玉树县| 吉水县| 夹江县| 伊吾县| 原平市| 夏邑县| 郓城县| 崇文区| 鄂伦春自治旗| 阳春市| 长顺县| 黑水县| 仁寿县| 宁津县| 潼南县| 麻城市| 兰西县| 肥乡县| 西昌市| 通榆县| 克什克腾旗| 望都县| 永川市| 黄大仙区| 贵阳市| 临猗县|