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