近期公司要上线一个mysql的项目,我们使用drbd+heartbeat进行热备,以保证db的高可用性,这里记录下安装过程。关于drbd的扩容,缩小空间以及meta数据表的备份等详细操作这里就不给出了,感兴趣的同学可以参考drbd官网: www.
drbd.org ,也可以和我交流,mail to:
[email protected]
一.下载及安装
1.yum安装
yum -y install drbd kmod-drbd
yum -y install heartbeat
modprobe drbd
lsmod |grep drbd
默认安装的是drbd8.0.x版本的,有网友反映该版本有同步性能有问题,您也可以通过yum安装最新版,目前最新版本是drbd8.3.x,使用yum -y install drbd83 kmod-drbd83
yum -y install heartbeat.即可
2.源码安装
二.配置drbd
配置文件位于/etc/drbd.conf,主备份机器都要设置
更改内容如下:
drbd的配置文件有很多功能,例如:默认启动是否为primary等,我们这里只给出最简单的配置参考:
定义一个名称为data 的resouce,使用协议C(备机确认机制),限速10M,定义两个节点(节点名称等于uname -n),块设备名称为/dev/drbd0对应于分区/dev/sda1,meta数据位于分区,可以更改其他位置,此处有些许玄机,感兴趣的同学请google之。。
准备启动drbd之前,需要分别在2个主机上的 /dev/sda1 分区上创建相应的元数据保存的数据块:
drbdadm create-md data## data对应resouce的名称
service drbd start
默认的情况下,两台机器都处于备机状态,可以通过 /proc/drbd状态查看
在需要设置成主机的上面首次同步需要运行:
drbdsetup /dev/drbd0 primary -o #设置为主
mkfs.ext3 /dev/drbd0 #格式化
mkdir /mnt/data
mount /dev/drbd0 /mnt/data #挂载准备使用
touch /mnt/test/{1..100} #写入测试数据
三.测试切换
设置主机状态为备份:
umount /mnt/data
drbdadm secondary data
设置备机为主:
drbdadm primary data
mount /dev/drbd 0 /mnt/data
ls /mnt/data #查看数据是否已经同步过来
四.heartbeat安装
先了解一下heartbeat的工作原理及配置参数选项内容的含义,可以参考: http://book.51cto.com/art/200912/168031.htm
这里给出我们的配置参数:
几点说明:
1.ha.cf文件用于定义节点名称,切换超时时间,监视的网卡名称以及是否启用crm。
2.authkeys定义主备机之间的认证方式,目前有三种,请记得,如果定义了 auth 1则次行一定也是以1开始定义,其他两种方式也一样的。
3.haresources文件则定义需要监视的资源及服务。第一个域是主机的uname -n的名称,第二个域是告诉heartbeat这是一个drbd块设备,第三个域告知drbd的挂载信息,第四个域说明监视的服务,可以是apache,mysql等,第五个域用于定义vip,会跟从主机的ip漂浮
更改配置文件后,就可以启动heartbeat了:
service heartbeat start
五.mysql安装
mysql的安装就不说了,注意如果是源码安装,请指定安装目录为/mnt/data
六.整体测试(引用):
1) 手工调用heartbeat的节点切换脚本:
执行/usr/lib/heartbeat/hb_standby 脚本(注意你的),让heartbeat通知对方节点自己请求变成standby节点,请求对方成为primary节点,切换工作在10s左右即完成.
2) 拔掉网线,测试在primary节点的网络断开后的切换情况
通过测试,在拔掉网线后,当主节点发现无法和standby节点无法通信后,会在log中记录warn信息,如果延续时间达到在ha.cf中设定的时长后,会开始释放资 源,standby节点发现无法和主节点通信一段时间(ha.cf设定)后,开始尝试启动资源并将自己active成primary节点。切换过程除开ha.cf中设定的时长之外 的时间段同样非常短。
3) shutdown primary主机,测试是否能够正常切换,基本上和上面测试2差不多。
4) primary node 掉电测试,这里还没有到机房实际操作过,后面会继续测试这个操作。
测试结果:
1,正常切换,数据完整。
2,正常切换,但是主从数据相差一条。
3,正常切换,数据完整。
4,正常切换,数据完整。