天天看點

HA之DrbdDRBD

 DRBD全稱為Distributed Replicated Block Device,它是一個用軟體實作的、無共享的、伺服器之間鏡像塊裝置内容的存儲複制解決方案。

從DRBD的官方網站說明可以看出DRBD的幾個特點:

1、DRBD是一種塊裝置

2、可用于高可用叢集(HA)

3、通過網絡實作塊裝置資料實時鏡像

4、類似于一個網絡RAID-1

所謂DRBD,是分布式複制塊裝置,是一種通過TCP/IP網絡實作塊裝置資料實時鏡像的方案。,可以被用于高可用(HA)之中.它類似于一個網絡RAID-1功能.當你将資料寫入本地檔案系統時,資料還将會被發送到網絡中另一台主機上.以相同的形式記錄在一個檔案系統中.

本地(主節點)與遠端主機(備節點)的資料可以保證明時同步.當本地系統出現故障時,遠端主機上還會保留有一份相同的資料,可以繼續使用.

在高可用(HA)中使用DRBD功能,可以代替使用一個共享盤陣.因為資料同時存在于本地主機和遠端主機上,

切換時,遠端主機隻要使用它上面的那份備份資料,就可以繼續進行服務了。

前提:

1)本配置共有兩個測試節點,分别為node1.xxx.com和node2.xxx.com,相對應的IP位址分别為172.16.100.11和172.16.100.12;

2)node1和node2兩個節點上各提供了一個大小相同的分區作為drbd裝置;我們這裡為在兩個節點上均為/dev/sda5,大小為512M;

3)系統為rhel5.8,x86平台;

1、準備工作

兩個節點的主機名稱和對應的IP位址解析服務可以正常工作,且每個節點的主機名稱需要跟"uname -n“指令的結果保持一緻;是以,需要保證兩個節點上的/etc/hosts檔案均為下面的内容;

為了使得重新啟動系統後仍能保持如上的主機名稱,還分别需要在各節點執行類似如下的指令:

Node1:

Node2:

2、安裝軟體包

drbd共有兩部分組成:核心子產品和使用者空間的管理工具。其中drbd核心子產品代碼已經整合進Linux核心2.6.33以後的版本中,是以,如果您的核心版本高于此版本的話,你隻需要安裝管理工具即可;否則,您需要同時安裝核心子產品和管理工具兩個軟體包,并且此兩者的版本号一定要保持對應。

目前在用的drbd版本主要有8.0、8.2和8.3三個版本,其對應的rpm包的名字分别為drbd, drbd82和drbd83,對應的核心子產品的名字分别為kmod-drbd, kmod-drbd82和kmod-drbd83。各版本的功能和配置等略有差異;我們實驗所用的平台為x86且系統為rhel5.8,是以需要同時安裝核心子產品和管理工具。我們這裡選用最新的8.3的版本(drbd83-8.3.8-1.el5.centos.i386.rpm和kmod-drbd83-8.3.8-1.el5.centos.i686.rpm),下載下傳位址為:http://mirrors.sohu.com/centos/5.8/extras/i386/RPMS/。

實際使用中,您需要根據自己的系統平台等下載下傳符合您需要的軟體包版本,這裡不提供各版本的下載下傳位址。

下載下傳完成後直接安裝即可:

3、配置drbd

drbd的主配置檔案為/etc/drbd.conf;為了管理的便捷性,目前通常會将些配置檔案分成多個部分,且都儲存至/etc/drbd.d目錄中,主配置檔案中僅使用"include"指令将這些配置檔案片斷整合起來。通常,/etc/drbd.d目錄中的配置檔案為global_common.conf和所有以.res結尾的檔案。其中global_common.conf中主要定義global段和common段,而每一個.res的檔案用于定義一個資源。

在配置檔案中,global段僅能出現一次,且如果所有的配置資訊都儲存至同一個配置檔案中而不分開為多個檔案的話,global段必須位于配置檔案的最開始處。目前global段中可以定義的參數僅有minor-count, dialog-refresh, disable-ip-verification和usage-count。

common段則用于定義被每一個資源預設繼承的參數,可以在資源定義中使用的參數都可以在common段中定義。實際應用中,common段并非必須,但建議将多個資源共享的參數定義為common段中的參數以降低配置檔案的複雜度。

resource段則用于定義drbd資源,每個資源通常定義在一個單獨的位于/etc/drbd.d目錄中的以.res結尾的檔案中。資源在定義時必須為其命名,名字可以由非空白的ASCII字元組成。每一個資源段的定義中至少要包含兩個host子段,以定義此資源關聯至的節點,其它參數均可以從common段或drbd的預設中進行繼承而無須定義。

下面的操作在node1.magedu.com上完成。

1)複制樣例配置檔案為即将使用的配置檔案:

2)配置/etc/drbd.d/global-common.conf

3、定義一個資源/etc/drbd.d/web.res,内容如下:

以上檔案在兩個節點上必須相同,是以,可以基于ssh将剛才配置的檔案全部同步至另外一個節點。

4、在兩個節點上初始化已定義的資源并啟動服務:

1)初始化資源,在Node1和Node2上分别執行:

2)啟動服務,在Node1和Node2上分别執行:

3)檢視啟動狀态:

也可以使用drbd-overview指令來檢視:

從上面的資訊中可以看出此時兩個節點均處于Secondary狀态。于是,我們接下來需要将其中一個節點設定為Primary。在要設定為Primary的節點上執行如下指令:

  注: 也可以在要設定為Primary的節點上使用如下指令來設定主節點:

而後再次檢視狀态,可以發現資料同步過程已經開始:

等資料同步完成以後再次檢視狀态,可以發現節點已經牌實時狀态,且節點已經有了主次:

5、建立檔案系統

檔案系統的挂載隻能在Primary節點進行,是以,也隻有在設定了主節點後才能對drbd裝置進行格式化:

6、切換Primary和Secondary節點

對主Primary/Secondary模型的drbd服務來講,在某個時刻隻能有一個節點為Primary,是以,要切換兩個節點的角色,隻能在先将原有的Primary節點設定為Secondary後,才能原來的Secondary節點設定為Primary:

檢視狀态:

Node2:

使用下面的指令檢視在此前在主節點上複制至此裝置的檔案是否存在:

附:

drbd 8.4中第一次設定某節點成為主節點的指令

配置資源雙主模型的示例:

本文轉自 SoulMio 51CTO部落格,原文連結:http://blog.51cto.com/bovin/1859473,如需轉載請自行聯系原作者

繼續閱讀