DRBD+heartbeat+nfs
说明:DRBD实现存储同步,只有主存储角色才能实现读写、挂载和可执行。
Heartbeat实现存储的高可用性和DRBD的资源管理,自动转换DRBD主备角色。
Nfs实现文件共享,把磁盘共享出来让客户端访问。
Node1.sh.com: eth0 192.168.10.100
eth1 192.168.2.101 (心跳线地址)
Node2.sh.com eth0 192.168.10.101
eth1 192.168.2.100 (心跳线地址)
虚拟地址(vip) 192.168.10.200
客户端 192.168.10.110
一、DRBD的配置
1.两节点的主机名要能相互解析,在这里通过修改hosts文件实现,且保证两hosts文件一致
[root@node1 ~]# vim /etc/hosts
[root@node1 ~]# scp /etc/hosts node2.sh.com:/etc/ //把hosts文件复制给node2节点
2.新建磁盘分区 (节点2 node2.sh.com做同样操作,分区要一模一样)
[root@node1 ~]# fdisk /dev/hdb
[root@node1 ~]# partprobe /dev/hdb //加载显示磁盘分区
[root@node1 ~]# fdisk -l //查看磁盘分区
3.上传所需rpm包并安装 (节点2同样操作)
[root@node1 ~]# rpm -ivh drbd83-8.3.8-1.el5.centos.i386.rpm
[root@node1 ~]# rpm -ivh kmod-drbd83-8.3.8-1.el5.centos.i686.rpm
4.配置DRBD---分布式复制块存储设备
[root@node1 drbd.d]# vim /etc/drbd.conf
[root@node1 drbd.d]# cp -p global_common.conf global_common.conf.bak
[root@node1 drbd.d]# vim global_common.conf //修改为以下内容
global {
usage-count yes;
# minor-count dialog-refresh disable-ip-verification
}
common {
protocol C;
startup {
wfc-timeout 120;
degr-wfc-timeout 120;
}
disk {
on-io-error detach;
fencing resource-only;
}
net {
cram-hmac-alg "sha1";
shared-secret "mydrbdlab";
}
syncer {
rate 100M; //同步速率
}
}
[root@node1 drbd.d]# touch web.res //创建资源文件
[root@node1 drbd.d]# vim web.res //编辑资源文件,如下
resource web {
on node1.sh.com {
device /dev/drbd0;
disk /dev/hdb1;
address 192.168.10.100:7789;
meta-disk internal;
}
on node2.sh.com {
device /dev/drbd0;
disk /dev/hdb1;
address 192.168.10.101:7789;
meta-disk internal;
}
}
[root@node1 drbd.d]# scp global_common.conf node2.sh.com:/etc/drbd.d/ //把文件拷给节点2,保持数据一致性
[root@node1 drbd.d]# scp web.res node2.sh.com:/etc/drbd.d/
[root@node1 drbd.d]# scp /etc/drbd.conf node2.sh.com:/etc/
5.初始化并启动DRBD(两个节点要同时进行)
[root@node1 drbd.d]# drbdadm create-md web //初始化
[root@node1 drbd.d]# service drbd start
6.查看节点1和节点2drbd状态
[root@node1 drbd.d]# drbdadm -- --overwrite-data-of-peer primary web //执行该条命令,把节点设为主节点
[root@node2 drbd.d]# watch -n 1 'cat /proc/drbd' //在备份节点上查看同步进程
再次查看节点状态
7.测试drbd
[root@node1 ~]# mkfs -t ext3 -L drbdweb /dev/drbd0 //格式化分区,—L为卷标,drbdweb为卷标名,节点2做同样操作
[root@node1 ~]# mkdir /mnt/web //创建挂载点
[root@node1 ~]# mount /dev/drbd0 /mnt/web
[root@node1 ~]# cd /mnt/web
[root@node1 web]# echo "I am drbd" >./file //建一测试文件,在node2上查看
[root@node1 ~]# umount /mnt/web //先卸载
[root@node1 ~]# drbdadm secondary web //把节点1设为备份
[root@node2 drbd.d]# drbdadm primary web //把节点2设为主
查看节点1和2身份
[root@node2 drbd.d]# mkdir /mnt/web //在节点2上创建挂载点
[root@node2 ~]# mount /dev/drbd0 /mnt/web
[root@node2 ~]# cd /mnt/web
二、nfs服务器配置 (节点2上同样操作)
[root@node1 ~]# vim /etc/exports //编辑内容如下
/mnt/web *(rw,sync)
[root@node1 ~]# service portmap restart
Stopping portmap: [ OK ]
Starting portmap: [ OK ]
[root@node1 ~]# chkconfig portmap on
[root@node1 ~]# service nfs start
[root@node1 ~]# chkconfig nfs on
三、heartbeat服务搭建
上传所需文件
[root@node1 ~]# mount /dev/cdrom /mnt/cdrom
[root@node1 ~]# yum -y localinstall heartbeat-2.1.4-9.el5.i386.rpm heartbeat-pils-2.1.4-10.el5.i386.rpm heartbeat-stonith-2.1.4-10.el5.i386.rpm libnet-1.1.4-3.el5.i386.rpm perl-MailTools-1.77-1.el5.noarch.rpm --nogpgcheck
[root@node1 ~]# cp -p /usr/share/doc/heartbeat-2.1.4/ha.cf /etc/ha.d/
[root@node1 ~]# cp -p /usr/share/doc/heartbeat-2.1.4/authkeys /etc/ha.d/
[root@node1 ~]# cp -p /usr/share/doc/heartbeat-2.1.4/haresources /etc/ha.d/
[root@node1 ~]# cd /etc/ha.d
[root@node1 ha.d]# vim ha.cf //编辑内容如下
logfile /var/log/ha-log //日志文件
keepalive 2 //保持时间
deadtime 10 //死亡时间
warntime 5 //警告时间
initdead 120 //启动时间
udpport 694 //使用udp的端口
bcast eth0 //心跳接口
auto_failback on //失败自动退回
ucast eth0 192.168.2.100 //要使用单播,指向节点2心跳地址
node node1.sh.com
node node2.sh.com
[root@node1 ha.d]# vim authkeys //修改验证文件
auth 1
1 crc
[root@node1 ha.d]# chmod 600 authkeys
[root@node1 ha.d]# vim haresources //编辑资源文件
node1.sh.com IPaddr::192.168.10.200/24/eth0 drbddisk::web Filesystem::/dev/drbd0::/mnt/web::ext3
[root@node1 ha.d]# scp ha.cf authkeys haresources node2.sh.com:/etc/ha.d/ //把这三个文件复制给节点2
[root@node1 ha.d]# service heartbeat start //启动heartbeat
查看资源
四、客户端操作
[root@localhost ~]# service portmap start //必须先启动portmap服务
[root@localhost ~]# service nfs start
[root@localhost ~]# showmount -e 192.168.10.200
Export list for 192.168.10.200:
/mnt/web *
[root@localhost ~]# mount 192.168.10.200:/mnt/web /mnt/1
查看挂载
[root@localhost ~]# cd /mnt/1
五、模拟节点1失效,查看客户端访问情况
[root@node1 ~]# cd /mnt/web
[root@node1 web]# touch f{1,2,3} //创建测试文件
[root@node1 ~]# cd /usr/lib/heartbeat/
[root@node1 heartbeat]# ./hb_standby //使节点1成为备份
在节点2上查看
在客户端查看