我已经写过不止一篇关于Heartbeat 2.x 配置方法的文档,包括1.x style和2.x style的配置方式、GUI 配置、双机互备集群等等,详细可见分类中“HA”部分。那为什么今天我还要再次重复类似的内容呢?原因有几个,例如:Heartbeat 2.1.3 中的Bug、DRBD resource agent 的Bug,Heartbeat 2.x 与 DRBD 的配合等。这些内容在我下面的文档中都会提到。
另外,特别需要说明的是,目前Heartbeat 最新版本是3.x,已停止对2.x 的支持(包括官网都已改版)。这也是导致我在使用Heartbeat 2.x 时遇到问题,可供参考资料较少的原因之一。当然,Heartbeat 2.x 与 3.x 的区别实际并不是特别大,很多东西还是可以相互借鉴、参考的。
一、准备工作
如果您之前没有配置过Heartbeat 2.x,甚至不知道什么是HA(高可用集群)。那我建议您暂时不要继续往下看,可先看看我过往写的一些资料,这些都在分类中“HA”部分中,例如:
heartbeat 2.x基础概念
heartbeat 2.x基础架构
使用hb_gui 配置heartbeat
使用heartbeat配置双机互备集群
此外,由于本文将会构建的是用DRBD实现的镜像磁盘数据共享方式集群,而区别于之前日志使用heartbeat配置双机互备集群中模拟的共享盘柜方式。所以,在构建HA集群前,当然需要先把DRBD配置完成。可参考:使用DRBD创建镜像分区一文。
原理性、基础性的东西准备完成后,即可进行下面的工作。(下面的内容主要描述需特别留意或修改的地方,不会完全以tutorial 方式进行)。
※ 关于RA
Heartbeat 2.x 支持多种资源代理(Resource Agent,简称RA),其中最常见的是lsb和ocf/heartbeat。这些RA实际上就是一些脚本,可根据脚本运行的结果提交给CRM分析和处理。不过,RA很重要,除了一些逻辑错误设定外,在配置heartbeat不成功时,大部分原因都是由于RA脚本的兼容性等问题。
例如,我在之前的使用heartbeat配置双机互备集群一文中,例如RA启动、监听、关闭Httpd、Mysql 都很正常。但在本次的测试期间,drbd、oracle、oralsnr 三个ocf/heartbeat 格式的RA都有问题。
所以,自Heartbeat 3.0开始,把Resource Agent作为一个独立的项目来处理。
官方网站:http://hg.linux-ha.org/agents
使用参考:Resource Agents
RA 的参数配置非常重要,使用前请多查看帮助文档。
1、系统环境
DRBD 版本:8.3.8
Heartbeat 版本:2.1.3
Oracle 版本:10.2.0.4
两服务器:
drbd1.linuxfly.org:192.168.228.133
drbd2.linuxfly.org:192.168.228.134
DRBD 镜像分区:
资源名称:oradata
设备:/dev/drbd0
挂载点:/oradata (存放Oracle实例)
2、Heartbeat 版本
※ 为什么不使用Heartbeat 3.x
虽然现在Heartbeat 最新版本是3.0.3,但是,一方面我对Heartbeat 2.1.3比较熟悉,而且Heartbeat 3.0可供参考的资料太少;另外,Heartbeat 3.0实际上可理解为把2.x版本按功能拆分,并改用Cluster Glue作为集群管理工具的升级版。所以,Heartbeat 2.x 与 3.0 有很多内容都是可以借鉴和参考的。最关键的一点是,我暂时还找不到现成的Heartbeat 3.0.3 rpm 包(还有很多依赖包),这些将会给后续的配置带来很多不可预知的问题,所以,我还是决定用2.x版本。
Heartbeat 2.x 的安装,我还是会使用CentOS提供的源,以yum 的方式进行,这非常的轻松。但是,目前还是2.1.3版本(Heartbeat 2.x 最后一个STABLE版是2.1.4,之后就跳到3.0了)。
目前,我使用的Heartbeat版本是:
heartbeat-2.1.3-3.el5.centos
heartbeat-devel-2.1.3-3.el5.centos
heartbeat-stonith-2.1.3-3.el5.centos
heartbeat-ldirectord-2.1.3-3.el5.centos
heartbeat-pils-2.1.3-3.el5.centos
heartbeat-gui-2.1.3-3.el5.centos
因2.1.4与2.1.3差别很小,所以,我最终还是选择直接yum 的方式安装。不过,下面提到的多个Bug在2.1.4上也存在,因此,内容不会重复。(您可以选择参考下文的内容自行修复这些Bug,或直接用我最后在附录中提供的修正后rpm包来安装)
二、关键配置和Bug修复
在已完成上述我提到的系统环境,包括两集群主机的主机名、/etc/hosts文件配置、DRBD安装及配置、Oracle双机环境部署等工作后,即可进行Heartbeat 2.x 的配置。
1、常规设定
这里指的是两集群主机/etc/ha.d目录中的authkeys和ha.cf 配置文件,它们在各节点的内容都是相同的:
auth 2
1 crc
2 sha1 HI!
3 md5 Hello!
# grep -v ‘^#’ ha.cf
debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility local0
keepalive 2
deadtime 30
initdead 30
udpport 694
bcast eth0 # Linux
auto_failback on
node drbd1.linuxfly.org
node drbd2.linuxfly.org
compression bz2
compression_threshold 2
crm respawn
此外,为了避免启动时报警告信息,虽然haresources文件在2.x style配置文件中是没用的,但还是在各节点上创建一个空文件:
2、修改heartbeat启动脚本
heartbeat的启动脚本指的是/etc/init.d/heartbeat,这Bug涉及两方面的内容:
a、crm 临时目录的问题
该问题在之前的文章中已多次提到,请见这里。修改的内容就是下面红色标记部分:
EchoNoNl “Starting High-Availability services: “
……
if
[ ! -d $RUNDIR/heartbeat/ccm -o ! -d $RUNDIR/heartbeat/crm ]
then
……
b、heartbeat启动后,导致不能正常重启或关闭机器的问题
由于系统升级的原因,heartbeat启动脚本中chkconfig部分的定义不符合要求,导致不能创建K05heartbeat的链接。换句话说,当heartbeat 已经启动,并手动重启或关闭机器时,不会预先关闭heartbeat进程,而在终止网络、挂载等进程后,heartbeat不断的报错,必须强制关机。
发生该问题时,关机途中,您会在主屏幕上看到类似下面的报错信息: