CentOS 6.4 是一款广泛使用的 Linux 发行版,其稳定性和兼容性使其在企业环境中备受青睐,在构建高可用性集群时,Heartbeat 是一个经典的开源工具,能够实现节点间的故障检测和服务迁移,本文将详细介绍如何在 CentOS 6.4 系统上部署和配置 Heartbeat,确保服务的持续可用性。

系统环境准备
在开始配置之前,需要确保两台 CentOS 6.4 服务器满足以下条件:主机名分别为 node1 和 node2,IP 地址分别为 192.168.1.10 和 192.168.1.11,并配置好主机名解析,关闭两台节点的防火墙和 SELinux,避免网络策略影响集群通信,建议通过 yum update 更新系统至最新状态,确保软件包的兼容性和安全性。
安装 Heartbeat 及依赖组件
Heartbeat 的安装依赖于一些基础工具,首先需要安装 EPEL(Extra Packages for Enterprise Linux)仓库,执行以下命令安装必要的 RPM 包:
rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm yum install heartbeat-devel -y
安装完成后,Heartbeat 的主配置文件位于 /etc/ha.d/ 目录下,核心配置文件 ha.cf 需要手动编辑以适应集群环境。
配置 Heartbeat 核心文件
ha.cf 是 Heartbeat 的主配置文件,定义了集群的基本参数,打开文件并修改以下内容:
- 节点声明:通过
node参数指定集群成员,node node1 node node2
- 网络通信:使用
udpport和ucast配置心跳通信端口和单播模式,避免广播风暴:udpport 694 ucast eth0 192.168.1.11
- 故障检测间隔:调整
deadtime和warntime参数,优化故障检测速度:deadtime 10 warntime 5
保存文件后,确保两台节点的配置文件一致,可通过
scp同步文件。
配置资源管理文件
资源管理通过 haresources 文件实现,定义集群的虚拟 IP 和服务资源,配置一个虚拟 IP 192.168.1.100 并运行 Nginx 服务:

node1 IPaddr::192.168.1.100/24/eth0 nginx
该配置表示 node1 为主节点,当其故障时,资源会自动迁移至 node2,注意资源名称需与系统服务保持一致,可通过 chkconfig --list 查看可用服务。
配置认证文件
为防止未授权节点加入集群,需启用认证机制,生成共享密钥文件 authkeys:
echo "auth 1" > /etc/ha.d/authkeys echo "1 sha1 YourSecretKey" >> /etc/ha.d/authkeys chmod 600 /etc/ha.d/authkeys
将密钥文件同步至所有节点,并确保权限正确。
启动并验证集群服务
完成配置后,启动 Heartbeat 服务:
service heartbeat start
通过以下命令检查集群状态:
crm_mon -1
若显示节点在线且资源正常运行,说明配置成功,可通过 ip addr 查看虚拟 IP 是否绑定在主节点上。

常见问题排查
在配置过程中,可能会遇到心跳通信失败或资源迁移异常的问题,首先检查防火墙规则和 SELinux 状态,确保 694 端口开放,查看 /var/log/ha-log 日志文件,定位错误原因,若资源未正常启动,需确认 haresources 文件中的服务名称与系统服务一致。
相关问答 FAQs
Q1:Heartbeat 集群中如何手动故障转移?
A1:可通过 crm node standby 命令将当前节点设为备用状态,触发资源迁移至备用节点,在 node1 上执行 crm node standby node1 后,资源将自动迁移至 node2。
Q2:如何优化 Heartbeat 的故障检测速度?
A2:调整 ha.cf 中的 deadtime 和 warntime 参数,deadtime 定义节点失效时间,warntime 为警告时间,建议根据网络环境适当调小 deadtime 值,但需避免误判,使用 ucast 单播模式替代 bcast 广播模式可提升通信效率。
通过以上步骤,您可以在 CentOS 6.4 系统上成功搭建基于 Heartbeat 的高可用集群,实际部署中,建议结合业务需求调整资源策略,并定期进行故障演练,确保集群的稳定运行。