moosefs+keepalived雙機高可用熱備解決方案-01 by李靖

 

 

 [前言]公司數據遷移後期會使用到MFS,看過很多有關的文章,但大部分都是moosefs安裝配置和單點手動備份。經過很長一段時間思考,想將其與keepalived相結合以提高可用性,也就有了我這篇文章

本文以官網最新穩定版moosefs 2.0.66-1,和centos6.6,具體思路如下:

  • MFS原理

  • IP、主機名、防火牆等基本配置

  • 高可用部署思路

  • Moosefsmfs)各角色安裝配置

  • Keepalived安裝配置

  • 故障切換測試

  • 參考資料

 

moosefs原理:

MFS文件系統結構

        管理服務器managing server (master)

        元數據日誌服務器Metalogger serverMetalogger

        存儲塊服務器chunk servers (chunkservers) 

        客戶機掛載使用client computers 

各種角色作用:

        1 管理服務器:負責各個數據存儲服務器的管理,文件讀寫調度,文件空間回收以及恢復.多節點拷貝

        2 元數據日誌服務器: 負責備份master服務器的變化日誌文件,文件類型爲changelog_ml.*.mfs,以便於在master server出問題的時候接替其進行工作

        3 數據存儲服務器:負責連接管理服務器,聽從管理服務器調度,提供存儲空間,併爲客戶提供數據傳輸.

        4 客戶端: 通過fuse內核接口掛接遠程管理服務器上所管理的數據存儲服務器,.看起來共享的文件系統和本地linux文件系統使用一樣的效果.

wKiom1VcQC2xEVJ_AADfa2sBtrw133.jpg

wKiom1VcQC7SOCYGAAGU1YQOPN8495.jpg

 

 

 

IP、主機名、防火牆等基本配置:

主機名

MFS角色

IP地址

keepalived

VIP

端口

mfsmaster

master

10.0.8.1

主master

10.0.8.6

9419、9420、9421、9425

mfsmetalogger

metalogger

10.0.8.5

備backup


centos6_02

chunkserver

10.0.8.2


9422

centos6_03

chunkserver

10.0.8.3

9422

centos6_04

client

10.0.8.4


9419端口連接mfsmetalogger ,9420連接mfschunkserver,9421連接客戶機。

防火牆先關了service iptables  stop

 

高可用部署思路:

1 master的故障恢復,1.6.5版本後可以由metalogger server 產生的日誌文件 changelog_ml.*.mfsmetadata.mfs.back由命令mfsmetarestore恢復,1.7版本後命令mfsmetarestore不可用,改爲mfsmaster-a

2 10.0.8.1 keepalived master 定時運行檢測 mfsmaster 進程的腳本check_master_bylijing.sh,故障時停止 keepalived .

3 10.0.8.5 keepalived 狀態從backup轉到 master 並觸發 notify_master事件執行恢復並啓動switch_to_mfsmaster_bylijing.sh腳本。此時元數據日誌服務器變爲管理服務器

5 整個切換在2~10秒內完成根據檢測時間間隔。

6 當原管理服務器mfsmaster恢復時,10.0.8.5 keepalived 狀態從master轉到backup 並觸發 notify_backup事件執行恢復並啓動switch_to_mfsmetalogger_bylijing.sh腳本。此時由管理服務器恢復爲元數據日誌服務器

 

 

Moosefsmfs)各角色安裝配置:

  1. 1.         主控服務器Master server 安裝:

當我們安裝主控服務器時,在配置過程中(./configure),可以取消安裝chunk server

--disable-mfschunkserver)以及MooseFS 客戶端(--disable-mfsmount. 安裝

主控服務器master 的具體步驟爲:

1、添加mfs用戶

#useradd -M -s /sbin/nologin mfs

2、創建安裝目錄

#mkdir /usr/local/mfs

3、下載當前最新穩定版

#wget http://pro.hit.gemius.pl/hitredir?id=p4M1jTM4nRhU008M3Fe_sOUC3wjpXEbik3RJMrUmhjn.l7&et=1&extra=moosefsVersion%3D2.0.66&url=http://ppa.moosefs.com/src/moosefs-2.0.66-1.tar.gz

4、解包歸檔文件

#tar -zxvf  moosefs-2.0.66-1.tar.gz

5、進入安裝目錄

#cd moosefs-2.0.66

6、配置

#./configure--prefix=/usr/local/mfs --with-default-user=mfs  --with-default-group=mfs --disable-mfschunkserver  --disable-mfsmount

7、編譯並安裝

#make

#make install

成功安裝master 以後,可以在/usr/local/mfs下看到moosefs安裝好的文件。

wKioL1VcQdXwLvc2AAD5mJ9M9OE281.jpg

 

  1. 2.         主控服務器Master server配置:

1、切換目錄

#cd /usr/local/mfs/etc

2、複製樣例文件,以得到master 所需的配置文件

#cp mfsmaster.cfg.dist  mfsmaster.cfg

#cp mfsmetalogger.cfg.dist  mfsmetalogger.cfg

#cp mfsexports.cfg.dist  mfsexports.cfg

如果我們打算更改這些配置文件中的某些項目的值,則需要打開特定配置文件相關文本行前的

註釋,然後修改跟隨其後的值。因爲被註釋掉的行,即是MooseFS內置的缺省值。

Mfsmaster.cfg配置文件包含主控服務器master 相關的設置,在這裏我們暫時不打算對其

進行修改。如果你想知道關於該配置文件更多的信息,請查看它的手冊頁(使用命令man

mfsmaster.cfg)。

配置文件mfsexports.cfg 指定那些客戶端主機可以遠程掛接MooseFS 文件系統,以及授予

掛接客戶端什麼樣的訪問權限。例如,我們指定只有10.0.8.x 網段的主機需要密碼纔可以以讀寫模式

訪問MooseFS 的整個共享結構資源(/)。指定只有10.0.8.x 網段的主機不用密碼可以以讀寫模式訪問MooseFS 的整個共享結構資源(/data)。

wKiom1VcQIHB3Un_AADhvscTqG8788.jpg

wKioL1VcQfuArm8vAAEg4RdSg48302.jpg

二進制文件metadata 和文本文件changelog 將被保存在安裝目錄/usr/local/mfs/var/mfs。首次安裝master 時,會自動生成一個名爲metadata.mfs.empty 的元數據文件metadata,該文件是空的。MooseFSmaster 運必須有文件metadata.mfs,這個文件是從metadata.mfs.empty 改名而來:

1、切換目錄

#cd  /usr/local/mfs/var/mfs

2、重命名文件

#cp metadata.mfs.empty  metadata.mfs

注:MooseFS master 運行以後,metadata.mfs 文件大小將發生變化,肯定不會是空文件了。

修改/etc/hosts 文件,以綁定主機名mfsmaster ip 地址10.0.8.1

10.0.8.1 mfsmaster

注:過下我們啓動keepalived時,我要在/etc/hosts中改爲vip地址:10.0.8.6

  1. 3.         主控服務器Master server啓動:

這個時候,我們可以試着運行master 服務(服務將以安裝配置configure 指定的用戶運行,這

我們的案例裏,它是mfs:

#chown –R mfs:mfs /usr/local/mfs     注:這個很重要,否則mfs用戶沒權限。    

#/usr/local/mfs/mfsmasterstart

在一個生產環境裏,我們應當設置自動啓動腳本,以便操作系統重新啓動時,MooseFSmaster

也能自動運行。

  1. 4.         主控服務器Master server監控:

爲了監控MooseFS 當前運行狀態,我們可以運行CGI 監控服務,這樣就可以用瀏覽器查看整個

MooseFS 的運行情況:

#/usr/local/mfs/mfscgiservstart

現在,我們在瀏覽器地址欄輸入http://10.0.8.1:9425 即可查看master 的運行情況(這個時

候,是不能看見chunk server 的數據)。

wKioL1VcQiiRfCzWAAMExNOxf4o025.jpg

wKiom1VcQK7xYrBAAALgHakMEaE730.jpg

  1. 5.         元數據日誌服務器Metalogger server安裝

用來安裝metalogger 的主機,在性能上應該比master 強大(至少有更多的內存)。一旦主控

服務器master 失效,只要導入changelogs 到元數據文件,備份服務器metalogger 將能接替發生

故障的master,行使管理服務器的職能。

安裝跟主控服務器master 安裝非常類似。只是所用的配置文件和啓動進程不一樣。

1、添加mfs用戶

# useradd -M -s /sbin/nologin mfs

2、創建安裝目錄

#mkdir /usr/local/mfs

3、下載當前最新穩定版

#wget  http://pro.hit.gemius.pl/hitredir?id=p4M1jTM4nRhU008M3Fe_sOUC3wjpXEbik3RJMrUmhjn.l7&et=1&extra=moosefsVersion%3D2.0.66&url=http://ppa.moosefs.com/src/moosefs-2.0.66-1.tar.gz

4、解包歸檔文件

#tar -zxvf  moosefs-2.0.66-1.tar.gz

5、進入安裝目錄

#cd moosefs-2.0.66

6、配置

#./configure--prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs--disable-mfschunkserver --disable-mfsmount

7、編譯及安裝

#make

#make install

  1. 6.         元數據日誌服務器Metalogger server配置

1、切換目錄

#cd /usr/local/mfs/etc

2、複製樣例文件,以得到Metalogger server 所需的配置文件

#cp mfsmetalogger.cfg.dist  mfsmetalogger.cfg

類似地,修改/etc/hosts 文件,增加下面的行:

10.0.8.1  mfsmaster

現在,我們來試着運行備份服務mfsmetaloger:

#chown –R mfs:mfs /usr/local/mfs     注:這個很重要,否則mfs用戶沒權限。

#/usr/local/mfs/sbin/mfs metaloggerstart

在一個生產環境裏,我們應當設置自動啓動腳本,以便操作系統重新啓動時,MooseFS

mfsmetalogger服務也能自動運行。

  1. 7.         存儲塊服務器Chunk servers 安裝:

centos6_02centos_03上安裝chunk server 方法一樣如下:

# useradd -M -s /sbin/nologin mfs

#mkdir /usr/local/mfs

#wgethttp://pro.hit.gemius.pl/hitredir?id=p4M1jTM4nRhU008M3Fe_sOUC3wjpXEbik3RJMrUmhjn.l7&et=1&extra=moosefsVersion%3D2.0.66&url=http://ppa.moosefs.com/src/moosefs-2.0.66-1.tar.gz

#tar-zxvf  moosefs-2.0.66-1.tar.gz

#cd  moosefs-2.0.66

#./configure--prefix=/usr/local/mfs  --with-default-user=mfs --with-default-group=mfs --disable-mfsmaster

#make

#make install

 

本文是 巧妙絕情 一個字一個圖打出來,參考了好多資料,感謝他們的分享,基於open source分享精神,轉載請註明出出。
支持我,請點擊 巧妙絕情 謝謝

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章