DRBD?技术是指设计用于高可用性(HA)集群的块设备。 它会镜像指定网络内整个块设备。DRBD可以理解为基于RAID-1的网络。在上图中,两个橙色框表示两个服务器组成一个HA群集。 框包含通常的Linux?内核的文件系统,缓冲区高速缓存,磁盘调度,磁盘驱动程序,TCP / IP协议栈和网卡(NIC)驱动。 黑色箭头标明明了这些组件之间的数据流。橙色箭头显示的数据流,DRBD技术作为一个高度可用性的服务,从HA集群的活动节点镜像备用节点HA集群的数据。
http://www.drbd.org/
node1的ip地址:
修改host文件
[root@node1 mnt]# vim /etc/hosts
修改主机名
查看主机名
时间同步:
hwclock -s
磁盘分区:
重新加载分区表
[root@node1 ~]# partprobe /dev/sdb
NFS
yum install nfs
创建共享目录:
mkdir /mnt/nfs (为了安全可以适当修改权限)
[root@node1 ~]# vim /etc/exports
导出:
service portmap start(可以写到heartbeat管理的资源里面)
HEARTBEAT
[root@node1 ~]# vim /etc/ha.d/ha.cf
[root@node1 ~]# vim /etc/ha.d/authkeys
#auth 1
#1 crc
#2 sha1 HI!
#3 md5 Hello! 这里随便写
[root@node1 ~]# vim /etc/ha.d/haresources
#node-name resource1 resource2 ... resourceN(如果有些服务发现无法启动,如果配置无误,你可能需要将其控制脚本拷到ha.d/resource.d下)
44 node1.a.com 192.168.2.38/27/eth0/192.168.2.63 drbddisk::r0 filesystem::/dev/drbd0::/mnt/nfs::ext3 nfs
还有一点要注意的是,写在这里的服务不要在两边同时启动,因为它是由heartbeat控制的
DRBD
(Distibuted Replicated Block Device)分布式可复制块设备
安装
yum localinstall drbd83-8.3.8-1.el5.centos.i386.rpm -y --nogpgcheck
如果drbd没有内置到内核中(版本低于2.6.33),可能需要下面这个rpm包kernelmodules
yum localinstall kmod-drbd83-8.3.8-1.el5.centos.i686.rpm -y --nogpgcheck
我的linux内核版本:
主配置文件:可以在命令行模式下输入如下命令读取,当然你也可以直接copy到/etc/下
全局配置文件
[root@node1 ~]# vim /etc/drbd.d/global_common.conf
global {
usage-count no;
#使用统计
}
common {
protocol C;
#c协议,确认远程主机的写入之后,表示写入完成
startup {
wfc-timeout 120;
degr-wfc-timeout 120;
}
disk {
on-io-error detach;
fencing resource-only;
}
net {
#通信加密算法
cram-hmac-alg "sha1";
shared-secret "nfs";
}
syncer {
rate 100M;
#数据同步速率
}
}
资源:你可以写到global_common.conf、drdb.conf里面,也可以新建一个文件
[root@node1 ~]# vim /etc/drbd.d/r0.res
resource r0 {
on node1.a.com {
device /dev/drbd0;
#drbd磁盘
disk /dev/sdb3;
#磁盘成员
address 192.168.2.39:7789;
#侦听IP(ode1)、端口
meta-disk internal;
#meta data信息存放的方式,内部存储
}
on node2.a.com {
device /dev/drbd0;
disk /dev/sdb3;
address 192.168.2.40:7789;
meta-disk internal;
}
}
################################################################
以上步骤在两个节点都要做一遍,除了主机名、ip不同外其他配置相同
创建供DRBD记录信息的数据块
drbdadm create-md r0
启动:
root@node1 ~]# service drbd start
Starting DRBD resources: [
r0
Found valid meta data in the expected location, 1011703808 bytes into /dev/sdb3.
d(r0) s(r0) n(r0) ].......... 只启动一台无法启动
***************************************************************
DRBD's startup script waits for the peer node(s) to appear.
- In case this node was already a degraded cluster before the
reboot the timeout is 120 seconds. [degr-wfc-timeout]
- If the peer was available before the reboot the timeout will
expire after 120 seconds. [wfc-timeout]
(These values are for resource 'r0'; 0 sec -> wait forever)
To abort waiting enter 'yes' [30] 两边需要同时启动,120s超时
初始化,确定主、从关系(只在一端做就可以了,默认都是secondery)
drbdadm -- --overwrite-data-of-peer primary r0
动态观察磁盘同步状态
wtch -n 1 ‘cat /proc/drbd’
查看主从状态
格式化:
mkfs -t ext3 -L drbd /dev/drbd0
创建挂载点:
mkdir /mnt/nfs
mount /dev/drbd0 /mnt/nfs
可以创建几个文件,然后更改主从关系(drbdadm primary r0)
在另一端再挂载一下,测试一下是否正常。
#######################################################################
测试:
模拟节点二出现故障:
/usr/lib/haertbaet/hb_takeover
可以看到出现node2:vip eth0:0
node2:
节点1自动挂载成功:
node2的挂载状态
节点1上nfs启动正常:
nfs进程:
节点2上nfs处于关闭状态:
nfs启动过程曾出现错误,进程无法结束,杀掉后重启正常
模拟节点一出现故障:
/usr/lib/haertbaet/hb_takeover
nfs客户端:
挂载:
创建挂载点:mkdir /nfs
#mount vip:dir 挂载点
[root@client ~]#mount 192.168.2.38:/mnt/nfs /nfs
临时挂载,可以写到/etc/fstab里
以下分别为client、node1、node2创建的文件,正常状态下,节点状态切换不影响使用,不需要重新挂载
分别在主机target、client编辑文件client:
可以看到不能同时编辑此文件: