歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

Linux下DRBD配置

一、Drbd 工作原理
DRBD是一種塊設備,可以被用於高可用(HA)之中.它類似於一個網絡RAID-1功能.(可以比較一下Linux的NFS)當你將數據寫入本地 文件系統時,數據還將會被發送到網絡中另一台主機上.以相同的形式記錄在一個文件系統中。 本地(主節點)與遠程主機(備節點)的數據可以保證實時同步.當本地系統出現故障時,遠程主機上還會 保留有一份相同的數據,可以繼續使用.在高可用(HA)中使用DRBD功能,可以代替使用一個共享盤陣.因為數據同時存在於本地主機和遠程主機上,切換時,遠程主機只要使用它上面的那份備份數據,就可以繼續進行服務了。

二、環境配置:
1、操作系統:radhat 5.4
2、主服務器:
主機名:master
IP:192.168.2.124
鏡像的硬盤:/dev/hdb
3、 備份服務器
主機名:slave
IP:192.168.2.125
鏡像的硬盤:/dev/hdb

三、安裝drbd
1、下載源代碼:http://oss.linbit.com/drbd/。此次安裝的版本是drbd-8.3.5
2、把下載好的drbd-8.3.5.tar.gz解壓
[root@master ] # tar –zxvf drbd-8.3.5.tar.gz
[root@master ] # cd drbd-8.3.5
[root@master ] # make
[root@master ] # make install
[root@master ]# modprobe drbd @加載安裝drbd模塊
[root@master ]# lsmod |grep drbd
drbd 271736 0
@通過lsmod檢查是否已經成功,如果有類似內容輸出,則表示drbd安裝成功了
[root@master ]# mknod /dev/drbd0 b 147 0 @創建硬件設備drbd

四、配置drbd
DRBD運行時,會讀取一個配置文件/etc/drbd.conf.這個文件裡描述了DRBD設備與硬盤分區的映射關系,數據一旦寫入磁盤並發送到網絡中就認為完成了寫入操作。
1、drbd.conf的配置參數說明
Protocol
Protocol A @數據一旦寫入磁盤並發送到網絡中就認為完成了寫入操作
Protocol B @收到接收確認就認為完成了寫入操作。
Protocol C @收到寫入確認就認為完成了寫入操作。
2、global
global { usage-count yes; } @是否參加DRBD使用者統計,默認是yes
3、common
common { syncer { rate 1M; } }
@設置主備節點同步時的網絡速率最大值,單位是字節.
4、resource
一個DRBD設備(即:/dev/drbdX),叫做一個"資源"。裡面包含一個DRBD設備的主備節點的的ip信息,底層存儲設備名稱,設備大小,meta信息存放方式,drbd對外提供的設備名等等。
resource r0 {
protocol C; @使用協議C.表示收到遠程主機的寫入確認後,則認為寫入完成.
net {
cram-hmac-alg sha1; @設置主備機之間通信使用的信息算法.
shared-secret "FooFunFactory";
}
@每個主機的說明以"on"開頭,後面是主機名.在後面的{}中為這個主機的配置.
on master {
device /dev/drbd0;
disk /dev/ hdb;
address 192.168.2.124:7898; @設置DRBD的監聽端口,用於與另一台主機通信
meta-disk internal;
}
on slave{
device /dev/drbd0;
disk /dev/ hdb;
address 192.168.2.124:7898;
meta-disk internal;
}
}
5、以下為測試時的完整配置
global {
usage-count yes;
}
common {
protocol C;
}
resource r0 {
on master {
device /dev/drbd0;
disk /dev/hdb;
address 192.168.2.124:7789;
meta-disk internal;
}
on slave {
device /dev/drbd0;
disk /dev/hdb;
address 192.168.2.125:7789;
meta-disk internal;
}
}

6、雙機兩個節點的配置文件是一模一樣的。DRBD源碼目錄下有個樣本,裡面說得比較詳細。

五、啟動drbd
1、創建matadata
在啟動DRBD之前,需要分別在兩台主機的hdb分區上,創建供DRBD記錄信息的數據塊.分別在兩台主機上執行:
[root@master ]#drbdadm create-md r0
[root@slave ]#drbdadm create-md r0
備注:
1) “r0”是在drbd.conf裡定義的資源名稱.
2) 當執行命令”drbdadm create-md r0”時,出現以下錯誤信息。
Device size would be truncated, which
would corrupt data and result in
'access beyond end of device' errors.
You need to either
* use external meta data (recommended)
* shrink that filesystem first
* zero out the device (destroy the filesystem)
Operation refused.
Command 'drbdmeta 0 v08 /dev/xvdb internal create-md' terminated with exit code 40
drbdadm create-md r0: exited with code 40
解決辦法:初始化磁盤文件格式, dd if=/dev/zero bs=1M count=1 of=/dev/sdXYZ; sync
[root@master ]# dd if=/dev/zero bs=1M count=1 of=/dev/hda3; sync
2.啟動DRBD,分別在兩台主機上執行
[root@master ]# /etc/init.d/drbd start
[root@slave ]# /etc/init.d/drbd start
備注:
如果在啟動過程中找不到node時,查看是/dev/hda3是否是處於掛載狀態,如果是,用umount命令取消掛載
3. 查看DRBD的狀態,分別在兩台主機上執行
[root@slave drbd]# cat /proc/drbd

version: 8.3.10 (api:88/proto:86-96)
GIT-hash: 5c0b0469666682443d4785d90a2c603378f9017b build by phil@fat-tyre, 2011-01-28 12:17:35

1: cs:Connected ro:Secondary/Secondary ds:Inconsistent/Inconsistent C r-----
ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:2096028

對輸出的含義解釋如下:
ro表示角色信息,第一次啟動drbd時,兩個drbd節點默認都處於Secondary狀態,
ds是磁盤狀態信息,“Inconsistent/Inconsisten”,即為“不一致/不一致”狀態,表示兩個節點的磁盤數據處於不一致狀態。
Ns表示網絡發送的數據包信息。
Dw是磁盤寫信息
Dr是磁盤讀信息
4、設置主節點
由於默認沒有主次節點之分,因而需要設置兩個主機的主次節點,選擇需要設置為主節點的主機,然後執行如下命令:
[root@master]#drbdsetup /dev/drbd0 primary –o
或者執行下面命令也是可以的
[root@ master]#drbdadm -- --overwrite-data-of-peer primary all
第一次執行完此命令後,在後面如果需要設置哪個是主節點時,就可以使用另外一個命令:

[root@ master]#/sbin/drbdadm primary r0或者/sbin/drbdadm primary all
再次查看drbd狀態,
[root@ master]# cat /proc/drbd
version: 8.3.10 (api:88/proto:86-96)
GIT-hash: 5c0b0469666682443d4785d90a2c603378f9017b build by phil@fat-tyre, 2011-01-28 12:17:35

1: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C r-----
ns:2432 nr:0 dw:0 dr:3104 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:2093596
[>....................] sync'ed: 0.2% (2093596/2096028)K
finish: 0:12:27 speed: 2,432 (2,432) K/sec


可以看到現在狀態已經是primary/secondary,而且磁盤信息是upTodat/Inconsistent(實時/不一致),而且已經開始同步兩台機器對應磁盤的數據
過了一會,我們再次查看drbd狀態,如下:
[root@ master]# cat /proc/drbd
version: 8.3.10 (api:88/proto:86-96)
GIT-hash: 5c0b0469666682443d4785d90a2c603378f9017b build by phil@fat-tyre, 2011-01-28 12:17:35

1: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-----
ns:2096028 nr:0 dw:0 dr:2096700 al:0 bm:128 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:0

此時的狀態信息就是primary/secondary,磁盤信息是UpToDate/UpToDate,說明已經同步完成了。

六、測試同步
把主機上的DRBD設備掛載到一個目錄上進行使用。備機的DRBD設備無法被掛載,因為它是用來接收主機數據的,由DRBD負責操作。
主備節點切換有兩種方式,分別是停止drbd服務切換和正常切換,依次介紹:
1、停止drbd服務切換
關閉主節點服務,此時掛載的drbd分區就自動在主節點卸載了,然後在備用節點執行切換命令:
[root@drbd2 ~]#drbdadm primary all
此時會報錯:
2: State change failed: (-7) Refusing to be Primary while peer is not outdated
Command 'drbdsetup 2 primary' terminated with exit code 11
因此,必須在備用節點執行如下命令:
[root@drbd2 ~]#drbdsetup /dev/drbd0 primary –o
或者
[root@drbd2~]#drbdadm -- --overwrite-data-of-peer primary all
此時就可以正常切換了。
當在備用節點執行切換到主節點命令後,原來的主用節點自動變為備用節點。無需在主用節點再次執行切換到備用節點的命令。
2、正常切換
在主節點卸載磁盤分區,然後執行
[root@drbd1 ~]#drbdadm secondary all
如果不執行這個命令,直接在備用節點執行切換到主節點的命令,會報錯:
2: State change failed: (-1) Multiple primaries not allowed by config
Command 'drbdsetup 2 primary' terminated with exit code 11
接著,在備用節點執行
[root@drbd2 ~]#drbdadm primary all
最後在備用節點掛載磁盤分區即可:
[root@drbd2 ~]#mount /dev/drbd0 /mnt
3、注意點
1)mount drbd設備以前必須把設備切換到primary狀態。
2)兩個節點中,同一時刻只能有一台處於primary狀態,另一台處於secondary狀態。
3)處於secondary狀態的服務器上不能加載drbd設備。
4)主備服務器同步的兩個分區大小最好相同,這樣不至於浪費磁盤空間,因為drbd磁盤鏡像相當於網絡raid 1。
Copyright © Linux教程網 All Rights Reserved