二 MySQL+Heartbeat+DRBD构建高可用环境
图 MySQL+Heartbeat+DRBD构建高可用MySQL
1 Heartbeat主配置文件/etc/ha.d/ha.cf:
# cat /etc/ha.d/ha.cf
logfacility local0 //定义日志,使用syslog;
keepalive 2 //定义心跳频率;
deadtime 15 //如果其他节点15S内没有回应,则确认其死 亡;
warntime 5 //确认一个节点连接不上5S之后将警告信息写入日志;
initdead 120 //在其他节点死掉之后,系统启动前需要等待的时间,一般为deadtime的两倍;
udpport 694 // 用来通信的端口;
bcast eth0 // 在eth0上进行心跳测试
watchdog /dev/watchdog //可选项
auto_failback off // 设置当死亡节点恢复正常之后是否重新启用;容易发生数据不一致的情况,必须项,不然后面hb_standby命令无法使用;
node drbd-M
node drbd-S
respawn hacluster /usr/lib64/heartbeat/ipfail
2 设置两个节点之间的通信密钥:
#cat authkeys
auth 3
3 md5 Hello!
3 定义资源:
# cat haresources
drbd-M drbddisk Filesystem::/dev/drbd0::/data::ext3 mysqld 192.168.43.20
drbd-M //主节点;
drbddisk Filesystem::/dev/drbd0::/data::ext3 mysqld //定义Heartbeat需要管理的资源,并且每一部分在/etc/ha.d/haresources.d下有对应的脚本;如果主节点失效,备节点将通过执行这些脚本来启用资源;如果脚本有参数可以使用“::”来进行分割;
drbddisk 管理drbd资源的脚本;
filesystem 管理文件系统资源的脚本,后面参数定义drbd设备,挂载点,文件系统类型
mysqld 管理mysql的脚本,需要从/etc/init.d/mysqld 拷贝
192.168.43.20 //VIP,用来连接MySQL的IP,当Heartbeat启用之后会自动分配;
图 Resource.d 下的内容
在主从节点上启动Heartbeat
# /etc/init.d/heartbeat start
查看下资源启动情况:
先看下主节点drbd-M的日志:
再看下drbd-S的日志,已经处在监听等待状态:
虚拟IP已经启动:
Drbd和MySQL的端口已经在监听:
主节点/data目录下:
我们切换到drbd-S来试一下,看资源能不能切换过来:
使用/usr/lib64/heartbeat/hb_standby命令可以来模拟主节点死掉的情况。
2011/07/18_20:49:53 Going standby [all].
从服务器drbd-S日志:
再看下资源是否已经抢占过来:
/data目录下的文件:
PS:Heartbeat启动之前必须保证drbd服务已经启动,并且主服务器已经设置为primary并成功挂载/dev/drbd0.不然主服务器Heartbeat在启动的时候会提示找不到/dev/drbd0设备,并造成其他的资源也无法启动的情况。
PS:心跳探测和数据复制不建议在同一个网卡上进行,本实验只是为了方便采取了这样的方式。
dopd进程:当主从节点之间的失去连接,那么主从节点之间的数据就无法同步,就会发生从节点的数据过期的情况(数据不一致的情况)。如果此时主服务器发生宕机的情况,那么dopd进程会阻止从服务器提升为主服务器。具体实现:
1 修改/etc/ha.d/ha.cf 文件:
respawn hacluster /usr/lib64/heartbeat/dopd
apiauth dopd gid=haclient uid=hacluster
2 修改/etc/drbd.conf 文件:
common {
handlers {
outdate-peer “/usr/lib64/heartbeat/drbd-peer-outdater”;
}
}
resource db {
disk {
Fencing resource-only;
}
}
3 重新加载配置文件:
# /etc/init.d/heartbeat reload
#/drbdadm adjust all
MySQL+Heartbeat+DRBD方案可以单独使用,也可以在构建MySQL主从架构时实现主服务器的高可用,在此不再详细实现,有兴趣的朋友可以尝试一下(完)!
参考文章:MySQL and DRBD Guide