前提:
1)本配置共有兩個測試節點,分別node1.luowei.org和node2.luowei.org,相的IP地址分別爲
192.168.1.78和192.168.1.151;
2)node1和node2兩個節點上各提供了一個大小相同的分區做爲drbd設備;咱們這裏爲在兩個
節點上均爲/dev/sda5,大小爲2G;
一、準備工做
兩個節點的主機名稱和對應的IP地址解析服務能夠正常工做,且每一個節點的主機名稱須要
跟"uname -n「命令的結果保持一致;所以,須要保證兩個節點上的/etc/hosts文件均爲下面
的內容:
192.168.1.78 node1.luowei.com node1
192.168.1.151 node2.luowei.com node2
爲了使得從新啓動系統後仍能保持如上的主機名稱,還分別須要在各節點執行相似以下的命
令:
Node1:
#vim /etc/sysconfig/network
HOSTNAME=node1.luowei.com
# hostname node1.luowei.com
Node2:
#vim /etc/sysconfig/network
HOSTNAME=node2.luowei.com
# hostname node2.luowei.com
二、安裝軟件包
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.4,所以須要同時安裝內核模塊和管理工具。咱們這裏選用最新的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.6/extras/i386/RPMS/。實際使用中,您須要根據本身的系統平臺等下載符合您須要的軟件包版本,這裏不提供各版本的下載地址。
下載完成後直接安裝便可:
[root@node1 drbd]# ls
drbd83-8.3.8-1.el5.centos.i386.rpm
kmod-drbd83-8.3.8-1.el5.centos.i686.rpm
#yum localinstall * --nogpgcheck -y
這個須要在兩個節點上都要進行安裝。
三、配置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的默認中進行繼承而無須定義。
1)複製樣例配置文件爲即將使用的配置文件:
# cp /usr/share/doc/drbd83-8.3.8/drbd.conf /etc
2)配置/etc/drbd.d/global-common.conf
#vim /etc/drbd.d/global-common.conf
global {
usage-count no;
# minor-count dialog-refresh disable-ip-verification
}
common {
protocol C;
handlers {
pri-on-incon-degr "/usr/lib/drbd/notify-pri-on-incon-degr.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f";
pri-lost-after-sb "/usr/lib/drbd/notify-pri-lost-after-sb.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f";
local-io-error "/usr/lib/drbd/notify-io-error.sh; /usr/lib/drbd/notify-emergency-shutdown.sh; echo o > /proc/sysrq-trigger ; halt -f";
# fence-peer "/usr/lib/drbd/crm-fence-peer.sh";
# split-brain "/usr/lib/drbd/notify-split-brain.sh root";
# out-of-sync "/usr/lib/drbd/notify-out-of-sync.sh root";
# before-resync-target "/usr/lib/drbd/snapshot-resync-target-lvm.sh -p 15 -- -c 16k";
# after-resync-target /usr/lib/drbd/unsnapshot-resync-target-lvm.sh;
}
startup {
wfc-timeout 120;
degr-wfc-timeout 120;
}
disk {
on-io-error detach;
fencing resource-only;
}
net {
cram-hmac-alg "sha1";
shared-secret "mydrbdlab";
}
syncer {
rate 100M;
}
}
三、定義一個資源/etc/drbd.d/web.res,內容以下:
#vim /etc/drbd.d/web.res
resource web {
on node1.luowei.com {
device /dev/drbd0;
disk /dev/sda5;
address 192.168.1.78:7789;
meta-disk internal;
}
on node2.luowei.com {
device /dev/drbd0;
disk /dev/sda5;
address 192.168.1.151:7789;
meta-disk internal;
}
}
四、在兩個節點上初始化已定義的資源並啓動服務:
1)初始化資源,在Node1和Node2上分別執行:
# drbdadm create-md web
2)啓動服務,在Node1和Node2上分別執行:
/etc/init.d/drbd start
3)查看啓動狀態:
# cat /proc/drbd
version: 8.3.8 (api:88/proto:86-94)
GIT-hash: d78846e52224fd00562f7c225bcc25b2d422321d build by
mockbuild@builder10.centos.org, 2010-06-04 08:04:16
0: 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:505964
也可使用drbd-overview命令來查看:
# drbd-overview
0:web Connected Secondary/Secondary Inconsistent/Inconsistent C r----
從上面的信息中能夠看出此時兩個節點均處於Secondary狀態。因而,咱們接下來須要將其中
一個節點設置爲Primary。在要設置爲Primary的節點上執行以下命令:
# drbdsetup /dev/drbd0 primary –o
注: 也能夠在要設置爲Primary的節點上使用以下命令來設置主節點:
# drbdadm -- --overwrite-data-of-peer primary web
然後再次查看狀態,能夠發現數據同步過程已經開始:
# drbd-overview
等數據同步完成之後再次查看狀態,能夠發現節點已經牌實時狀態,且節點已經有了主次:
# drbd-overview
五、建立文件系統
文件系統的掛載只能在Primary節點進行,所以,也只有在設置了主節點後才能對drbd設備進
行格式化:
# mke2fs -j -L DRBD /dev/drbd0
# mkdir /mnt/drbd
# mount /dev/drbd0 /mnt/drbd
六、切換Primary和Secondary節點
對主Primary/Secondary模型的drbd服務來說,在某個時刻只能有一個節點爲Primary,所以
,要切換兩個節點的角色,只能在先將原有的Primary節點設置爲Secondary後,才能原來的
Secondary節點設置爲Primary:
Node1:
# cp -r /etc/drbd.* /mnt/drbd
# umount /mnt/drbd
# drbdadm secondary web
查看狀態:
# drbd-overview
0:web Connected Secondary/Secondary UpToDate/UpToDate C r----
Node2:
# drbdadm primary web
# drbd-overview
0:web Connected Primary/Secondary UpToDate/UpToDate C r----
# mkdir /mnt/drbd
# mount /dev/drbd0 /mnt/drbd
使用下面的命令查看在此前在主節點上覆制至此設備的文件是否存在: # ls /mnt/drbd