1、对10.10.13.7 和 10.10.13.9两台机器进行DRBD重新的安装测试。
参考:http://www.cnblogs.com/f-ck-need-u/p/8673178.html
https://www.cnblogs.com/f-ck-need-u/p/8678883.html
https://www.cnblogs.com/f-ck-need-u/p/8684648.html
https://www.cnblogs.com/f-ck-need-u/p/8691373.html
先简单描述一下这次的过程,最后做一下调研结果的总结:
(1)修改了之前的不好记忆的主机名,因为drbd是基于主机名解析的。将其更改为:
hostnamectl set-hostname drbd1.yzs.com #10.10.13.7
hostnamectl set-hostname drbd2.yzs.com #10.10.13.9
(2)修改hosts文件。将主机名配置成数据同步专用通道eth1的地址。#两台机器都配置
10.10.13.7 drbd1.yzs.com node1
10.10.13.9 drbd2.yzs.com node2
(3)时间同步。#两台机器都运行
ntpdate ntp1.aliyun.com
(4)提供分区。分别在两台上服务器上添加一块硬盘,然后都分为两个区。
注意,作为metadata的分区不要格式化,而用作data的分区格式化后不要挂载。
此处实验分区为/dev/sdb1(metadata区)和/dev/sdb5(数据区)。
for i in /sys/class/scsi_host/*;do echo "- - -" >$i/scan;done
# 主分区(metadata区)/dev/sdb1:100G,扩展分区/dev/sdb2,逻辑分区(data区)/dev/sdb5:100G
parted /dev/sdb mklabel msdos
parted /dev/sdb mkpart p 1 100G
parted /dev/sdb "mkpart e 100G -1"
parted /dev/sdb mkpart l 100G 200G
fdisk /dev/sdb
mke2fs -t ext4 /dev/sdb5
注:可能出现错误:/dev/sdb5 is apparently in use by the system; will not make a filesystem here! 解决参考:http://blog.51cto.com/openlinuxfly/1362113
(5)两种安装drbd的方式 :1、yum安装 2、编译安装 。——这次使用的是yum安装
drbd工具分为两部分:内核模块(kmod-drbd)和用户空间的管理工具(drbd-utils),
其中内核模块已经整合到了2.6.33版本及以后版本的上游内核中。如果早于这个版本,则需要安装和管理工具相同版本的模块。
在elrepo源中,可以找到drbd的内核模块和管理工具。 查看:cat /etc/yum.repos.d/elrepo.repo
安装drbd90-utils和对应版本的模块kmod-drbd90。安装后装载drbd模块。
yum -y install drbd90-utils kmod-drbd90
modprobe drbd
如果需要开机加载drbd模块,请参考链接1
(6)drbd配置文件。注意:此配置是drbd8.4的,与drbd9版本的配置差别比较大
drbd的主配置文件/etc/drbd.conf,为了管理的便捷性,在此文件中使用了include指令指定了包含的配置文件段,默认的是在/etc/drbd.d/目录下。在此目录有全局配置文件global_common.conf和其他配置文件*.res文件。
其中在主配置文件中include全局配置文件的指令只能出现一个,且必须出现在最前面。
两个节点的配置文件应尽量完全一致。
global_common.conf 配置内容如下:
global {
usage-count no;
}
common {
handlers{ # 定义出现以下问题(如splitbrain或out-of-sync错误)时处理策略
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";
split-brain "/usr/lib/drbd/notify-split-brain.sh root";
out-of-sync "/usr/lib/drbd/notify-out-of-sync.sh root";
}
disk {
on-io-error detach; # 当发生io错误时,直接拔除备节点设备
resync-rate 600M;
}
protocol C; # 定义使用C协议,即同步复制。可不定义,此为默认
}
再新建一个配置文件data1.res,里面定义资源。
resource data1 {
device /dev/drbd0;
disk /dev/sdb5;
meta-disk /dev/sdb1[0];
on drbd1.yzs.com {
address 10.10.13.7:7788;
}
on drbd2.yzs.com {
address 10.10.13.9:7788;
}
}
注:在on hostname段中,hostname必须和uname -n一致,因为drbd默认是基于主机名进行解析的。
但是,drbd支持基于ip地址的解析,这时drbd根据ip地址进行漂移,ip地址在哪个主机上,就解析到哪个主机上。
(7)对两节点都进行初始化。
[root@drbd1 drbd.d]# drbdadm create-md data1
initializing activity log
NOT initializing bitmap Writing meta data...
New drbd meta data block successfully created.
注:可能会出现以下问题:
解决方法:
初始化成功后,可以使用下面几个命令来获取drbd的metadata区信息。
(8)在节点上启动drbd
drbdadm up data1
注:如果启动报以下错误:0: Failure: (119) No valid meta-data signature found.,
则可能是因为对metadata进行了格式化。解决方法是将其删除再重新创建但不要格式化。
(9)查看/proc/drbd文件来查看drbd中配置的资源的状态。
如果角色ro是从/从,则表明配置成功,若有一端是unknown,则表明和对方不能通信,
可能是主机路由的问题,这样会导致脑裂的问题。
(10)实现drbd主从同步
在需要设置为主机点的机器上执行:drbdadm primary --force data1
其中"--force"表示强制升级为primary,这会导致本节点的数据强制同步到对端上。
可以看到本端已经设置为主节点,且ds的一端是uptodate状态,最后还看到了镜像到对方的进度信息。
当镜像完成后,再查看资源的信息。可以发现两端的ds都变成uptodate状态了。说明镜像完成了。
(11)数据同步和主从角色切换
现在已经有一端是主节点了。drbd的主从节点中,只有主节点是可以挂载并进行读写的。
所以在主节点上挂载drbd设备.
挂载drbd到mnt,然后向其中拷贝一个文件。
如果对端也有这个文件则说明同步成功了,但是对端是从节点,无法读取数据,所以只能切换主从角色再查看。
不过在,实验环境下直接把从节点的drbd给down掉,再直接挂载/dev/sdb5也是可以的。
---所以首先将主节点切换为从节点,必须先卸载挂载点才行。