前提:

本配置共有两个测试节点,分别node1和node2,相的IP地址分别为202.207.178.6和202.207.178.7,管理节点202.207.178.8,对node1和node2进行配置

(为避免影响,先关闭防火墙和SElinux)

1、准备工作:

1)节点名称必须跟uname -n命令的执行结果一致

node1:

# hostname node1

# vim /etc/sysconfig/network

HOSTNAME=node1

node2:

# hostname node2

# vim /etc/sysconfig/network

HOSTNAME=node2

2)节点之间必须通过ssh互信通信

[root@node1 ~]# ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ''

[root@node1 ~]# ssh-copy-id -i .ssh/id_rsa.pub root@202.207.178.7

[root@node2 ~]# ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ''

[root@node2 ~]# ssh-copy-id -i .ssh/id_rsa.pub root@202.207.178.6

3)集群各节点之间时间必须同步

使用ntp服务器同步时间

ntpdate ip(配置了ntp服务的主机地址)

4)配置本地解析:

[root@node1 ~]# vim /etc/hosts

202.207.178.6 node1

202.207.178.7 node2

[root@node1 ~]# scp /etc/hosts node2:/etc/

5)配置管理节点(如不需要,可以不配置)

[root@fsy ~]# ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ''

[root@fsy ~]# ssh-copy-id -i .ssh/id_rsa.pub root@202.207.178.6

[root@fsy ~]# ssh-copy-id -i .ssh/id_rsa.pub root@202.207.178.7

[root@fsy ~]# vim /etc/hosts

202.207.178.6 node1

202.207.178.7 node2

2、安装yum源及所需软件包

[root@node1 ~]# rpm -Uvh http://www.elrepo.org/elrepo-release-6-6.el6.elrepo.noarch.rpm

[root@node2 ~]# rpm -Uvh http://www.elrepo.org/elrepo-release-6-6.el6.elrepo.noarch.rpm

[root@node1 ~]# yum -y install drbd83-utils kmod-drbd83

[root@node2 ~]# yum -y install drbd83-utils kmod-drbd83

3、准备存储设备

在node1和node2上分别创建1个大小为1G 的分区作为存储设备,我这里是/dev/sdb1

4、编辑主配置文件

[root@node1 ~]# vim /etc/drbd.d/global_common.conf

启用: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";

}

添加:disk {

                # on-io-error fencing use-bmbv no-disk-barrier no-disk-flushes

                # no-disk-drain no-md-flushes max-bio-bvecs

                on-io-error detach; (发生故障时拆除硬盘)

        }

 net {

                # sndbuf-size rcvbuf-size timeout connect-int ping-int ping-timeout max-buffers

                # max-epoch-size ko-count allow-two-primaries cram-hmac-alg shared-secret

                # after-sb-0pri after-sb-1pri after-sb-2pri data-integrity-alg no-tcp-cork

                cram-hmac-alg "sha1"; (数据报文验证时使用的算法)

                shared-secret "fsyhaonobi"; (密码)

        }

syncer {

                # rate after al-extents use-rle cpu-mask verify-alg csums-alg

                rate 200M; (同步时使用的速率)

        }

5、定义资源

[root@node1 ~]# cd /etc/drbd.d/

[root@node1 drbd.d]# vim mydrbd.res

resource mydrbd {

        device /dev/drbd0;

        disk /dev/sdb1;

        meta-disk internal; #数据写在磁盘内部

        on node1 {

        address 202.207.178.6:7789;

        }

        on node2 {

        address 202.207.178.7:7789;

        }

}

6、使两个节点上配置文件一致

[root@node1 ~]# scp -r /etc/drbd.* node2:/etc

7、在两个节点上初始化已定义的资源并启动服务:

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

# drbdadm create-md mydrbd

2)启动服务,在Node1和Node2上分别执行:

#/etc/init.d/drbd start

3)查看启动状态:(也可以使用drbd-overview命令来查看:# drbd-overview )

# cat /proc/drbd

4)我们接下来需要将其中一个节点设置为Primary。在要设置为Primary的节点上执行如下命令:

# drbdsetup /dev/drbd0 primary –o

也可以在要设置为Primary的节点上使用如下命令来设置主节点:

# drbdadm -- --overwrite-data-of-peer primary mydrbd

之后会发现两个节点变为一主一从

8、创建文件系统

文件系统的挂载只能在Primary节点进行,因此,也只有在设置了主节点后才能对drbd设备进行格式化:

# mkfs.ext4 /dev/drbd0

# mkdir /mydata 

# mount /dev/drbd0 /mydata/

9、切换Primary和Secondary节点(测试DRBD是否工作正常)

对主Primary/Secondary模型的drbd服务来讲,在某个时刻只能有一个节点为Primary,因此,要切换两个节点的角色,只能在先将原有的Primary节点设置为Secondary后,才能原来的Secondary节点设置为Primary:

主节点上(node1):

[root@node1 ~]# cd /mydata/

[root@node1 mydata]# ls

lost+found

[root@node1 mydata]# cp /etc/inittab ./

[root@node1 mydata]# ls

inittab  lost+found

[root@node1 ~]# umount /mydata/

[root@node1 ~]# drbdadm secondary mydrbd

[root@node1 ~]# drbd-overview 

0:mydrbd  Connected Secondary/Secondary UpToDate/UpToDate C r-----

从节点(node2):

[root@node2 ~]# drbdadm primary mydrbd

[root@node2 ~]# drbd-overview

0:mydrbd  Connected Primary/Secondary UpToDate/UpToDate C r-----

[root@node2 ~]# mkdir /mydata

[root@node2 ~]# mount /dev/drbd0 /mydata/

[root@node2 ~]# cd /mydata/

[root@node2 mydata]# ls

inittab  lost+found

此时,一切正常!


                                    欢迎批评指正!