CentOS 6.4 下 crmsh 的高可用集群部署与管理
在企业级应用中,高可用性(High Availability, HA)是确保业务连续性的关键,CentOS 6.4 作为一款稳定的服务器操作系统,常与高可用集群工具如 crmsh(Cluster Resource Manager Shell)结合使用,以构建可靠的服务集群,本文将详细介绍 crmsh 在 CentOS 6.4 下的部署、配置及管理方法,帮助读者快速掌握集群资源管理技能。

crmsh 简介
crmsh 是一个基于命令行的高可用集群管理工具,专为 Pacemaker 和 Corosync 集群框架设计,它提供了简洁的语法和强大的功能,支持集群资源的配置、监控和故障恢复,相比其他工具,crmsh 的优势在于其交互式模式和脚本化操作能力,能够显著简化集群管理复杂度。
环境准备
在部署 crmsh 之前,需确保满足以下环境要求:
- 操作系统:CentOS 6.4(64位)。
- 硬件配置:至少两台服务器,推荐 2GB 以上内存和双网卡(分别用于集群内部通信和外部访问)。
- 网络配置:集群节点间需通过私有网络通信,建议使用静态 IP 地址。
- 依赖包:安装必要的开发工具和依赖库,如
gcc、make、libtool等。
安装 crmsh
crmsh 的安装可以通过源码编译或 YUM 包管理器完成,推荐使用 YUM 方式,以简化依赖关系处理。
-
启用 EPEL 仓库
crmsh 不在 CentOS 官方仓库中,需启用 EPEL(Extra Packages for Enterprise Linux)仓库:rpm -Uvh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
-
安装 crmsh
执行以下命令安装 crmsh 及其依赖:yum install crmsh -y
-
验证安装
安装完成后,通过crm -v命令检查 crmsh 版本,确保安装成功。
集群初始化配置
crmsh 需要与 Pacemaker 和 Corosync 协同工作,因此需先完成集群基础配置。
-
安装集群组件
yum install pacemaker corosync -y
-
配置 Corosync
编辑/etc/corosync/corosync.conf文件,定义集群节点和通信方式:totem { version: 2 cluster_name: my_cluster transport: udpu } nodelist { node { ring0_addr: node1 nodeid: 1 } node { ring0_addr: node2 nodeid: 2 } }配置完成后,启动 Corosync 服务:
service corosync start
-
初始化 Pacemaker
使用 crmsh 初始化集群:
crm cluster init -i eth1 -c corosync
此命令会自动配置集群并启动 Pacemaker 服务。
crmsh 基础操作
crmsh 提供了丰富的命令集,以下为常用操作示例:
-
进入交互模式
crm
进入后可通过
help查看所有可用命令。 -
查看集群状态
crm status
该命令会显示集群节点、资源及运行状态。
-
配置资源
以添加虚拟 IP(VIP)为例:crm configure primitive vip ocf:heartbeat:IPaddr2 params ip=192.168.1.100 cidr_netmask=24 op monitor interval=30s commit
此配置定义了一个名为
vip的资源,并设置了监控间隔。 -
约束管理
通过约束(constraint)控制资源的位置和启动顺序:crm configure colocation vip_with_master inf: vip master commit
此约束确保
vip资源与master资源运行在同一节点。
故障排查与维护
在集群运行过程中,可能会遇到节点故障或资源异常,以下是常见问题及解决方法:

-
节点离线
使用crm node standby将节点设为备用模式,或crm node online恢复其活动状态。 -
资源启动失败
检查资源日志(通常位于/var/log/pacemaker/)和配置语法,确保参数正确。 -
集群分裂(Split-Brain)
调整quorum策略,避免因网络分区导致集群混乱。
crmsh 脚本化应用
对于重复性任务,可通过 crmsh 脚本实现自动化,以下为示例脚本:
#!/bin/bash crm configure primitive webserver ocf:heartbeat:apache params configfile="/etc/httpd/conf/httpd.conf" primitive fs ocf:heartbeat:Filesystem device="/dev/sdb1" directory="/data" fstype="ext4" clone webserver_clone webserver meta interleave=true commit
保存为 setup_resources.sh 并执行,即可批量配置集群资源。
相关问答 FAQs
Q1: crmsh 与 pcs 有何区别?
A1: crmsh 是传统的集群管理工具,功能全面且灵活,适合复杂集群环境;pcs 是 Red Hat 推荐的简化工具,语法更直观,适合初学者,两者均支持 Pacemaker,但 crmsh 在脚本化和高级配置方面更具优势。
Q2: 如何在 crmsh 中实现资源自动迁移?
A2: 通过设置资源约束和迁移阈值实现,使用 location 约束指定资源首选节点,并配置 migration-threshold 参数控制故障迁移次数:
crm configure location prefer_node1 vip 100: node1 primitive vip ocf:heartbeat:IPaddr2 params migration-threshold=3 commit
当节点故障达到阈值后,资源会自动迁移至其他节点。