大致步骤:
准备两台服务器分别作为主备节点
主备节点进行系统升级
主备节点配置SSH密钥登陆
主备节点关闭Iptables和selinux
主备节点准备空白的LV分区
主备节点安装编译环境
主备节点创建rpmbuild目录
主备节点下载、安装drbd-8.4.1
主节点配置drbd-8.4.1,完成后复制配置文件到备用节点
主备节点载入drbd模块,创建drbd分区元数据,并启用资源
主节点设置primary角色
主节点上为drbd分区创建文件系统,并挂载
测试主备节点的数据同步
一、主备节点进行系统升级,并重启:
-
yum update
-
reboot
!!important,否则make km-rpm通不过,主要是因为uname -r得出的内核版本,与/usr/src/kernels/目录下的内核版本不一致。是否需要进行该操作步骤,看实际情况!!
二、主备节点配置SSH密钥登陆:
略
略
三、主备节点关闭iptables和selinux,否则drbd无法获取对方节点的数据:
-
service iptables stop
-
chkconfig iptables off
-
-
setenforce 0
-
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/sysconfig/selinux
四、主备节点准备空白的LV分区,注意不要创建文件系统:
略
略
五、主备节点安装编译环境:
-
yum -y install gcc make automake autoconf flex rpm-build kernel-devel
六、主备节点创rpmbuild目录,为后面编译rpm包做准备:
-
mkdir -p rpmbuild/SOURCES
七、主备节点下载drbd源码包,并编译成rpm:
-
wget http://oss.linbit.com/drbd/8.4/drbd-8.4.1.tar.gz
-
tar -zxvf drbd-*
-
cd drbd-*
-
./configure
-
make rpm
-
make km-rpm
八、主备节点安装编译后的rpm包,根据需求安装所需的rpm包,最好全部安装;这里只是最小化安装:
-
cd /root/rpmbuild/RPMS/x86_64
-
rpm -ivh drbd-utils* drbd-km-2.6*
九、在主节点上配置drbd,完成后把配置文件复制到备用节点:
cd /etc/drbd.d
vi global_common.conf
cd /etc/drbd.d
vi global_common.conf
-
global {
-
usage-count yes;
-
}
-
-
common {
-
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";
-
}
-
-
startup {
-
wfc-timeout 30;
-
degr-wfc-timeout 30;
-
outdated-wfc-timeout 30;
-
}
-
-
options {
-
# cpu-mask on-no-data-accessible
-
}
-
-
disk {
-
on-io-error detach;
-
fencing resource-and-stonith;
-
resync-rate 15M;
-
}
-
-
net {
-
protocol C;
-
cram-hmac-alg sha1;
-
shared-secret "111111";
-
}
-
}
vi redis.res
-
resource redis {
-
device /dev/drbd0;
-
disk /dev/VolGroup00/LogVol01;
-
meta-disk internal;
-
on SER-206 {
-
address 10.10.14.174:9876;
-
}
-
on SER-104 {
-
address 10.10.14.5:9876;
-
}
-
}
复制配置文件到备用节点:
-
scp /etc/drbd.d/* SER-104:/etc/drbd.d
要注意:1) drbd每个配置项结尾有一个分号,注意不要犯语法上的错误
2) 配置drbd-8.4时不要生搬硬套8.3的配置项,因为8.4的配置文件发生了很多的变化,如取消了syncer配置段,把这部分选项分配给了disk和net;disk增加了一些新的选项,如disk-timeout等。
2) 配置drbd-8.4时不要生搬硬套8.3的配置项,因为8.4的配置文件发生了很多的变化,如取消了syncer配置段,把这部分选项分配给了disk和net;disk增加了一些新的选项,如disk-timeout等。
十、主备节点载入drbd模块,创建drdb分区元数据,并启用资源:
-
modprobe drbd
-
lsmod |grep drbd
-
如果结果无报错,有drbd的字样,说明安装成功。
-
-
drbdadm create-md redis //创建元数据
-
drbdadm up redis //启用资源
十一、主备节点查看drbd状态:
cat /proc/drbd
正常情况下的状态应该是这样:cs:Connected ro:Secondary/Secondary ds:Inconsistent/Inconsistent C r-----;如果你的drbd状态一直显示cs:WFConnection ro:Secondary/Unknown ds:Inconsistent/DUnknown,而/var/log/messages又无报错,请查看iptables和selinux是否关闭。
cat /proc/drbd
正常情况下的状态应该是这样:cs:Connected ro:Secondary/Secondary ds:Inconsistent/Inconsistent C r-----;如果你的drbd状态一直显示cs:WFConnection ro:Secondary/Unknown ds:Inconsistent/DUnknown,而/var/log/messages又无报错,请查看iptables和selinux是否关闭。
十二、设置主节点的角色为primary:
-
drbdadm primary --force redis
设置成功后,应该会看到两个节点正在同步数据。
十三、在主节点上为drbd分区创建文件系统,并挂载drbd分区:
-
yum -y install xfsprogs xfsdump
-
mkfs.xfs /dev/drbd0
-
-
mkdir /data
-
mount /dev/drbd0 /data
注意:1) 是为drbd分区创建文件系统,就是在redis.res中定义的/dev/drbd0,不是底层分区
2) 为drbd分区创建文件系统的工作,只在主节点上进行操作,备用节点上不用创建。
2) 为drbd分区创建文件系统的工作,只在主节点上进行操作,备用节点上不用创建。
十四、测试主备节点之间的数据同步(注意步骤!):
1) 在主节点上:
1) 在主节点上:
-
创建测试文件:echo -e "$(date +$F%T): hell0" >/data/test.txt
-
卸载drbd设备:umount /data
-
主节点角色降级:drbdadm secondary redis
2) 然后,在备用节点上:
-
把备用节点设置为primary角色:drbdadm primary redis
-
挂载drbd设备:mount /dev/drbd0 /data
查看备用节点的/data目录,可以看到在主节点上的创建的文件,说明切换成功!再次查看drbd状态,两个节点的角色应该已经转换过来了。
十五、有朋友问,drbd的日志记录在什么地方?DRBD的日志默认记录在/var/log/messages中,如果遇到了问题,可以去查看一下。
本文转自 li_qinshan 51CTO博客,原文链接:http://blog.51cto.com/share/845357