月份彙整: 2014 年 2 月

gluster 的 server 的管理方式

使用gluster這種分散式系統,為的就是希望有個「穩定安全」的環境,所以通常會使用replication的機制 。

gluster的replication 有兩種,一種就是LAN裡面用的「同步 replication」,另一種就是散佈內容出去的「非同步Georeplication」,前者就是用多個brick(儲存單元)來同步備援。這種機制應該是整個儲存系統的核心。通常一開始建立之後,就會自動運作,直到有kernel更新或者其他硬體錯誤導致的某個brick離線。

離線後,系統會自動修復(3.3版以後就會自動修復),不過修復中的brick資料是錯的,且跟RAID一樣,同時一定還要有正確的brick提供修復。也就是如果是兩台雙備援,就不能兩台同時處於修復狀態。必須等修復的那台修復完成了,另一台才能離線。因此,了解目前修復的狀況怎樣,是非常重要的管理機制。要了解系統修復狀況,只要下:

 gluster volume heal Volume_name info

就可以知道,一定要裡面都沒有entries了才算修復完成。當然,短期內因為系統使用中也會有幾個檔案出問題等待修復,但等一下應該就會消失。

 如果要分散資料到slave 主機去,就要用 非同步Georeplication 。這種功能也很容易設定:

Slave端要先把

 http://download.gluster.org/pub/gluster/glusterfs/3.4/3.4.0/EPEL.repo/glusterfs-epel.repo

放到 /etc/yum.repos.d

 yum install glusterfs-cli glusterfs-fuse glusterfs-server glusterfs-geo-replication glusterfs-libs

啟動 glusterd 與 glusterfsd

然後參考一下:

 http://www.gluster.org/community/documentation/index.php/HowTo:geo-replication

即可。

ssh 免密碼搞定以後,

 gluster volume geo-replication Volume_SYNC slave_server:/home start

即可啟動

 gluster volume geo-replication Volume_SYNC slave_server:/home status

即可了解系統狀態

喔!對了,如果有兩台以上互相備援的master機器,應該會希望每一台master都可以replication 給slave吧?

這時請把 /var/lib/glusterd/geo-replication/*.pem 複製到其他台master機器去,這樣就可以同步執行 georeplication 了

 

gluster 的 server 端的處理方法

其實網路上已經很多說明,似乎也不用紀錄太多,只要把網路上沒說的記一下即可:

參考一下底下:

 http://www.gluster.org/community/documentation/index.php/Getting_started_overview

 輕鬆就搞定。

 這個一定要聽一下,因為 xfs 比較適合gluster ,block size要512就能避免遭遇麻煩的問題:

 mkfs.xfs -i size=512 /dev/sdb1
 防火牆我是這樣設定:
 -A INPUT -m state --state NEW -m tcp -p tcp --dport 2049 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 54539 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 38003 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 616 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 24007:24047 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 49152:49162 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 24009:24019 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 111 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 111 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 38465:38470 -j ACCEPT
事實上我根本就是把一整個網路卡給gluster用 
 -A INPUT -i eth3 -j ACCEPT
這樣就可以開始用了。
真正的問題是遭遇當機時的處理方法,這個另一篇討論