天天看點

[原]DRBD試用

drbd

drbd是一種塊裝置,可以被用于高可用(ha)之中.它類似于一個網絡raid-1功能。當你将資料寫入本地檔案系統時,資料還将會被發送到網絡中另一台主機上.以相同的形式記錄在一個檔案系統中。本地(主節點)與遠端主機(備節點)的資料可以保證明時同步.當本地系統出現故障時,遠端主機上還會保留有一份相同的資料,可以繼續使用。

在高可用(ha)中使用drbd功能,可以代替使用一個共享盤陣.因為資料同時存在于本地主機和遠端主機上,切換時,遠端主機隻要使用它上面的那份備份資料,就可以繼續進行服務了。

drbd試用

安裝:yum install drbd83 kmod-drbd83 kmod-drbd83-xen

資源準備:

[root@localhost ~]# pvcreate /dev/sda3 

  physical volume "/dev/sda3" successfully created

[root@localhost ~]# vgcreate virvg /dev/sda3 

  volume group "virvg" successfully created

[root@localhost ~]# vgs

  vg    #pv #lv #sn attr   vsize  vfree 

  virvg   1   0   0 wz--n- 45.00g 45.00g

[root@localhost ~]# lvcreate -l 2g -n lv1 virvg

  logical volume "lv1" created

網絡配置:

vim /etc/sysconfig/network

hostname=node1.local

vim /etc/hosts

192.168.14.215  node2.local     node2

192.168.19.13   node1.local     node1

# /etc/init.d/network restart

# uname -n

node1.local

配置drbd:

vim /etc/drbd.conf:

include "/etc/drbd.d/global_common.conf";

include "/etc/drbd.d/*.res";

# cat /etc/drbd.d/lv1.res 

resource lv1 {

        device  /dev/drbd1;

        disk    /dev/virvg/lv1;

        meta-disk internal;

        on node2.local {

                address 192.168.14.215:7789;

        }

        on node1.local {

                address 192.168.19.13:7789;

}

建立裝置:#drbdadm create-md lv1

#/etc/init.d/drbd start

#drbdadm up lv1

[root@localhost ~]# cat /proc/drbd

version: 8.3.8 (api:88/proto:86-94)

git-hash: d78846e52224fd00562f7c225bcc25b2d422321d build by [email protected], 2010-06-04 08:04:27

 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:2097052

設定一個為主裝置:

# drbdsetup /dev/drbd1 primary -o

# cat /proc/drbd 

 1: cs:syncsource ro:primary/secondary ds:uptodate/inconsistent c r----

    ns:17056 nr:0 dw:0 dr:17056 al:0 bm:1 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:2079996

[>....................] sync'ed:  1.0% (2079996/2097052)k delay_probe: 5

finish: 0:57:46 speed: 464 (320) k/sec

可以看到開始進行資料同步了。

主備機切換

主機上執行:drbdadm secondary lv1

備機上執行:drbdadm primary lv1

問題1:found ext3 filesystem which uses 2097112 kb

[root@s0 ~]# drbdadm create-md r0

md_offset 2147438592

al_offset 2147405824

bm_offset 2147340288

found ext3 filesystem which uses 2097112 kb

current configuration leaves usable 2097012 kb

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 /dev/drbd1 v08 /dev/hdb1 internal create-md' terminated with exit code 40 drbdadm aborting

在對drbd磁盤初始化之前将分區進行了ext3格式化,此處應該隻分區不格式化。重新分區即可。

問題2:starting drbd resources: can not load the drbd module

沒有安裝kmod-drbd,這是核心子產品,必須安裝。

問題3:如何實作主主模式

修改配置檔案:(兩台機器都需要)

resource <resource>

  net {

    allow-two-primaries;

  }

  ...

修改完後執行:

run drbdadm disconnect resource on both nodes.

execute drbdadm connect resource on both nodes.

finally, you may now execute drbdadm primary resource on both nodes, instead of on just one.

臨時方法:drbdadm net-options --protocol=c --allow-two-primaries <resource>

增加下面的選項可以在開機時就進入primary模式:

  startup {

    become-primary-on both;

注意:

預設的最大同步帶寬(sync-max)為 250kb/sec