天天看點

Ubuntu14.04安裝分布式存儲sheepdog+zookeeper

Ubuntu14.04安裝分布式存儲sheepdog+zookeeper

牧羊犬(Sheepdog) 是由NTT的3名日本研究員開發的開源項目,提供分布式存儲管理功能。牧羊犬提供高可用性的KVM提供塊級存儲卷類似亞馬遜電子交易系統(彈性塊存儲虛拟機)的客戶機。目前國内阿裡等一些大公司在使用。

一、sheepdog架構圖

如上圖:

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

新增節點通過簡單配置可自動加入(IP:PORT),資料自動實作負載均衡;

節點故障時,資料可自動恢複;

直接支援QEMU/KVM應用;

二、資料具體存儲方式

以VDI Object存儲VM資料,向使用者暴露的是一個塊裝置;

包含4種資料對象:VDI、Data Object、屬性對象和用于快照的VM實時狀态資料對象;

以4M的小檔案方式實作OBS,但很容易基于此擴充,如使用使用庫替代4M的小檔案;

下面我們來具體搭建下,我們将采用sheepdog+zookeeper方式。

環境介紹:

系統:Ubuntu14.04

軟體:sheepdog,zookeeper

我們這次采用的是github上的源碼下來直接編譯制作成deb包來進行安裝的。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

<code>1.擷取sheepdog源碼:</code>

<code>root@node1:~</code><code># git clone https://github.com/sheepdog/sheepdog.git sheepdog-github</code>

<code>2.切換到最穩定版本0.7.6:</code>

<code>root@node1:~</code><code># cd sheepdog-github/</code>

<code>root@node1:~</code><code># git checkout v0.7.6</code>

<code>4.執行autogen.sh生成configure,在此之前,可能需要安裝依賴:</code>

<code>root@node1:~</code><code># apt-get install autoconf libtool make pkg-config</code>

<code>root@node1:~</code><code># ./autogen.sh</code>

<code>5.開始編譯,sheepdog本身依賴于corosync、zookeeper等叢集管理工具,由于我們制作deb包,還依賴于debian的一些工具:</code>

<code>root@node1:~</code><code># apt-get install liburcu-dev corosync corosync-dev zookeeper zookeeperd libzookeeper-mt-dev</code>

<code>root@node1:~</code><code># ./configure --enable-zookeeper</code>

<code>root@node1:~</code><code># apt-get install debhelper dh-autoreconf devscripts</code>

<code>root@node1:~</code><code># make deb</code>

<code>6.開始安裝sheepdog:</code>

<code>root@node1:~</code><code># cd ..</code>

<code>root@node1:~</code><code># dpkg -i sheepdog_0.7.6-1_amd64.deb</code>

<code>7.至此sheepdog已經安裝完成,如果你要把這個deb包拷貝到别的機器(node2)進行安裝那麼就必須在那台機器上安裝相應的依賴包:</code>

<code>root@node1:~</code><code># apt-get install zookeeperd libcfg4 libcfg6 libcpg4 libzookeeper-mt2 libcoroipcc4</code>

<code>特别注意:在ubuntu14.04上找不到libcfg4的包,因為libcfg4是12.04上的包,需要在</code><code>/etc/apt/sources</code><code>.list裡面添加一條</code>

<code>deb http:</code><code>//cz</code><code>.archive.ubuntu.com</code><code>/ubuntu</code> <code>precise main</code>

<code>8.配置zookeeper:</code>

<code>一般正式環境使用zookeeper作為sheepdog叢集的管理工具,需要相關配置。如果隻是單節點試用,可以不配置zookeeper。</code>

<code>先修改myid檔案,你配置第幾個節點就寫幾,内容是1-255;</code>

<code>root@node1:~</code><code># vi /etc/zookeeper/conf/myid</code>

<code>9.然後修改zoo.cfg檔案,主要填寫各個zookeeper節點的資訊:</code>

<code>root@node1:~</code><code># vi /etc/zookeeper/conf/zoo.cfg</code>

<code>server.1=10.0.0.18:2888:3888</code>

<code>server.2=10.0.0.19:2889:3889</code>

<code>我有兩個節點所有就隻有兩個,這格式就是server.myid=ip+端口号;</code>

<code>其中第一個端口用來叢集成員的資訊交換,第二個端口是在leader挂掉時專門用來進行選舉leader所用。</code>

<code>10.重新開機下zookeeper;</code>

<code>root@node1:~</code><code># service zookeeper restart</code>

<code>11.啟動sheepdog并挂載磁盤;</code>

<code>root@node1:~</code><code># mkdir /mnt/sheepdog</code>

<code>root@node1:~</code><code># mount -t ext4 -o noatime,barrier=0,user_xattr,data=writeback /dev/sdb1 /mnt/sheepdog</code>

<code>root@node1:~</code><code># useradd sheepdog</code>

<code>root@node1:~</code><code># chown -R sheepdog:sheepdog /mnt/sheepdog</code>

<code>root@node1:~</code><code># sheep /mnt/sheepdog -c zookeeper:10.0.0.18:2181,10.0.0.19:2181</code>

Sheepdog常用指令

設定副本數:

dog cluster format --copies=3     //copies副本數

檢視sheepdog節點:兩種方式都可以

<a href="http://s3.51cto.com/wyfs02/M01/54/9F/wKioL1SH-03gDmDRAACvCXOKflk085.jpg" target="_blank"></a>

本文轉自Devin 51CTO部落格,原文連結:http://blog.51cto.com/devingeng/1588341