上次文章在两台主机实现heartbeat高可用后,这篇文章详述了高可用系统架构下drbd的共享存储实现方案。
drbd 工作原理
DRBD是一种块设备,可以被用于高可用(HA)之中.它类似于一个网络RAID-1功能.当你将数据写入本地 文件系统时,数据还将会被发送到网络中另一台主机上.以相同的形式记录在一个文件系统中。 本地(主节点)与远程主机(备节点)的数据可以保证实时同步.当本地系统出现故障时,远程主机上还会 保留有一份相同的数据,可以继续使用.在高可用(HA)中使用DRBD功能,可以代替使用一个共享盘阵.因为数据同时存在于本地主机和远程主机上,切换时,远程主机只要使用它上面的那份备份数据,就可以继续进行服务了。
Rhel6 drbd 配置
系统环境:rhel6 x86_64 selinux and iptables disabled
软件下载:http://oss.linbit.com/drbd
Primary:172.25.28.7 vm7.example.com
Secondary:172.25.28.8 vm8.example.com
#######################################################
yum install gcc flex rpm-build kernel-devel -y 解决软件依赖性
[root@vm7 drbd-8.4.3]# tar zxf drbd-8.4.3.tar.gz
[root@vm7 drbd-8.4.3]# ./configure --enable-spec --with-km
[root@vm7 drbd-8.4.3]# cp ~/drbd-8.4.3.tar.gz /root/rpmbuild/SOURCE 在家目录生成 rpmbuild 编译所需路径
[root@vm7 drbd-8.4.3]# rpmbuild -bb drbd.spec #编译生成 drbd rpm 包
rpmbuild -bb drbd-km.spec #编译 drbd 内核模块
[root@vm7 x86_64]# cd /root/rpmbuild/RPMS/x86_64
[root@vm7 x86_64]# rpm -ivh *.rpm
拷贝生成的 rpm 包到另一主机,并安装软件包:
[root@vm7 x86_64]# scp *.rpm 172.25.28.8:
[root@vm8 ~]# rpm -ivh drbd-* 在 secondary安装ruanjianbao
以下配置在两台主机上完成:
编辑/etc/drbd.d/drbd.res,修改如下:
resource mysqldata {
meta-disk internal;
device /dev/drbd1;
syncer {
verify-alg sha1;
}
on vm1.example.com {
disk /dev/vdb;
address 172.25.28.7:7789;
}
on vm4.example.com{
disk /dev/vdb;
address 172.25.28.8:7789;
}
}
在两台主机上分别执行以下命令:
drbdadm create-md mysqldata
/etc/init.d/drbd start
在两台主机上查看同步状态:
watch cat /proc/drbd
数据同步结束后创建文件系统:
mkfs.ext4 /dev/drbd1
drbdsetup /dev/drbd1 primary
挂载文件系统:
mount /dev/drbd1 /var/www/html
效果:两台主机实现共同存储数据在/dev/drbd1设备里面
注意:两台主机上的/dev/drbd1 不能同时挂载,只有状态为 primary 时,才能被挂载使用,而此时另一方的状态为 secondary。这个实验要添加一块磁盘/dev/vdb
Heartbeat与drbd存储整合:在这里认为高可用主机为vm7、vm8
两台高可用主机/etc/ha.d/haresources添加如下内容
Vm7.example.com IPaddr::172.25.28.100/24/eth0 drbddisk::mysqldata Filesystem::/dev/drbd1::/var/lib/mysql::ext4 mysqld
Vm8.example.com IPaddr::172.25.28.100/24/eth0 drbddisk::mysqldata Filesystem::/dev/drbd1::/var/lib/mysql::ext4 mysqld