实现环境:
 两台虚拟机
 192.168.238.128 node1.test.com
 192.168.238.129 node2.test.com
实验准备:两台主机可以互相解析主机名,把对方主机名写入hosts文件,设置主机名和uname -n显示的一样,每个虚拟机上面划分一个1G分区做

drbd同步,这里我使用/dev/sda5,分出来的分区不要格式化,只partprobe就行
vi /etc/hosts
192.168.238.128 node1.test.com node1
192.168.238.129 node2.test.com node2
hostname node1.test.com
vi /etc/sysconfig/network 确保主机名和uname -n显示的一样
HOSTNAME=node1.test.com
ssh-keygen -t rsa  配置两个主机不用密码可以互相ssh
ssh-copy-id -i .ssh/id_rsa.pub node2
scp -p /etc/hosts node2:/etc

下载软件包:drbd83-8.3.8-1.el5.centos.i386.rpm,kmod-drbd83-8.3.8-1.el5.centos.i686.rpm
yum localinstall --nogpgcheck * -y
cp /usr/share/doc/drbd83-8.3.8/drbd.conf  /etc
vi /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 "www.test.com";  这里是认证密钥配置
        }

        syncer {
                rate 100M;
        }
}

vi /etc/drbd.d/web.res 定义一个名为web的资源
resource web {
  on node1.test.com {
    device    /dev/drbd0;
    disk      /dev/sda5; 这个分区划分出来之后不要格式化,partprobe一下就行
    address   192.168.238.128:7789;
    meta-disk internal;
  }
  on node2.test.com {
    device    /dev/drbd0;
    disk      /dev/sda5;
    address   192.168.238.129:7789;
    meta-disk internal;
  }
}
scp /etc/drbd.conf node2:/etc
scp /etc/drbd.d/global_common.conf web.res node2:/etc/drbd.d

在两个节点上面都执行资源的初始化,如果磁盘被格式化过了,这里会报错
drbdadm create-md web
在两个节点上面启动服务
service drbd start

使用cat /proc/drbd可以查看启动后的状态信息
使用drbd-overview命令可以看到此时两个节点都处于Secondary/Secondary状态

把node1设置为主节点
drbdsetup /dev/drbd0 primary –o
或者
drbdadm -- --overwrite-data-of-peer primary web
在node2上面执行watch -n 1 'drbd-overview'可以看到已经开始同步了

文件系统的挂载只能在主节点上面执行,在主节点上面挂载之后格式化
mkdir /drbd
mkfs.ext3 /dev/drbd0
mount /dev/drbd0 /drbd
touch test

切换主被节点,现在主节点上面执行卸载操作,然后把主节点设置为备节点,把备节点设为主节点然后执行挂载
在node1上面
umount /drbd
drbdadm secondary web
在node2上面
drbdadm primary web
mkdir /drbd
mount /dev/drbd0 /drbd
ls /drbd 看一下刚才建立的test文件存在,实现了文件同步