前提:
本配置共有两个测试节点,分别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 [email protected]
[root@node2 ~]# ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ''
[root@node2 ~]# ssh-copy-id -i .ssh/id_rsa.pub [email protected]
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 [email protected]
[root@fsy ~]# ssh-copy-id -i .ssh/id_rsa.pub [email protected]
[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
此时,一切正常!
欢迎批评指正!