sheepdog 2

Sheepdog,是由NTT的3名日本研究員開發的開源項目,主要用來爲虛擬機提供塊設備。 node

其架構以下: 架構

 

 

 

下面,咱們將從架構、模塊等幾個方面來介紹下: 負載均衡

 

1、架構圖 函數

如上圖: 性能

採用無中心節點的全對稱架構,無單點故障,存儲容量和性能可線性擴展; spa

新增節點經過簡單配置可自動加入(IP:PORT),數據自動實現負載均衡; .net

節點故障時,數據可自動恢復; 代理

直接支持QEMU/KVM應用; server

 

2、模塊 對象

 

如上圖:

由corosync,完成集羣成員管理和消息傳遞;

由Qemu做爲Sheepdog的客戶端,提供NBD/iSCSI協議支持;

由gateway實現數據的DHT路由,由storage server數據數據本地存儲;

 

3、數據具體存儲方式

 

如上圖:

以VDI Object存儲VM數據,向用戶暴露的是一個塊設備;

包含4種數據對象:VDI、Data Object、屬性對象和用於快照的VM實時狀態數據對象;

以4M的小文件方式實現OBS,但很容易基於此擴展,如使用使用庫替代4M的小文件;

 

4、集羣管理

1. 採用corosync,tot是em協議的一個開源實現。totem協議主要用來實現集羣成員管理和可靠順序傳輸。

2. corosync經過提供一個CPG API來提供服務。

首先,綁定一個fd到cpg_handle,並註冊回調函數cpg_dispatch;

而後將fd註冊到epoll;

corosync上消息會觸發fd改變,通用epoll觸發回調函數cpg_dispatch;

 

這裏主要有兩個函數,cpg_deliver_fn和cpg_confchg_fn,分別對應sd_deliver和sd_confchg.

 其中,sd_deliver負責集羣從corosync給本地發消息,主要是針對VDI進行操做;而sd_confchg主要是對node進行操做,用來監控集羣成員變化。

 

5、存儲對象管理

集羣對象版本epoch;

obj目錄下,每一個新的epoch要對應建立一個新的目錄;

可從epoch恢復數據;

 

6、一致性模型

經過epoll機制保證;

經過數據操做實現強一致性(多副本的寫同時成功時,才向client返回); 

 

7、DHT路由

代理路由方式;

由ip:port生成節點編號,作一致性哈希;

 

8、副本放置

一致性哈希;

虛擬節點;

 

如需瞭解更詳細信息,可參考其官網:http://www.osrg.net/sheepdog/

相關文章
相關標籤/搜索