1. 课程导入与高可用工程全景
在开始接触 Pacemaker、Corosync、共享存储或仲裁机制之前,需要先建立一个判断标准:什么样的系统才算“高可用”?很多初学者把高可用等同于“集群软件装好了、节点能互相看到”,但真正的工程目标并不是让集群软件运行起来,而是让业务在组件故障时仍能按预期继续提供服务。因此本章先厘清概念与指标,再俯瞰 RHEL 高可用技术栈,最后规划一套可反复使用的实验环境。
高可用与业务连续性的区别
高可用(High Availability,HA)关注的是“减少服务中断时间”,通过冗余节点、故障检测与自动切换,把单点故障的影响降到最低。它的典型手段是集群:多个节点共同承载同一业务,主节点失效时备用节点接管资源。业务连续性(Business Continuity,BC)的范围更大,它不仅包含高可用,还包含数据保护、灾难恢复、站点切换、人员与流程预案。可以这样理解:高可用解决“机器坏了业务别停”,业务连续性解决“机房没了业务怎么活”。
两者在工程上并不冲突,而是层次不同。RHEL 高可用集群属于业务连续性的技术底座之一,它保证的是本地或同城范围内的快速接管;跨站点的容灾、数据异步复制、定期演练则属于更高层的连续性设计。本课程聚焦于 RHEL 平台上的高可用集群工程能力,但始终要把“业务是否真的连续”作为最终判断依据,而不是只看集群状态是否为绿色。
RTO 与 RPO:把业务要求翻译成技术指标
业务方通常说“这个系统不能停太久”“数据不能丢”,这类描述无法直接指导技术选型。工程上必须把它翻译成两个可度量指标:
- RTO(Recovery Time Objective,恢复时间目标):从故障发生到业务恢复可接受的最长时间。它决定切换速度、检测灵敏度与自动化程度。例如 RTO 为 5 分钟,意味着故障检测加资源接管必须在 5 分钟内完成。
- RPO(Recovery Point Objective,恢复点目标):允许丢失的数据时间窗口。它决定数据复制方式。例如 RPO 为 0,通常要求同步复制;RPO 为 15 分钟,则可采用周期性快照或异步复制。
这两个指标直接决定架构。假设某订单系统要求 RTO≤3 分钟、RPO=0,那么集群需要快速健康检测、自动 fencing、共享存储同步写入;如果要求 RTO≤30 分钟、RPO≤10 分钟,则可以用更宽松的异步复制与人工确认切换。下表给出一个示例对照,帮助理解指标如何影响设计:
| 业务等级 | RTO 示例 | RPO 示例 | 典型技术取向 |
|---|---|---|---|
| 核心交易 | ≤3 分钟 | 0 | 双节点集群 + 共享存储 + 自动 fencing |
| 重要支撑 | ≤15 分钟 | ≤5 分钟 | 集群 + 异步复制 + 半自动切换 |
| 一般业务 | ≤4 小时 | ≤1 小时 | 冷备/快照恢复 + 人工流程 |
需要强调:RTO 和 RPO 是业务指标,不是集群软件参数。集群软件只能帮助逼近这些目标,最终是否达标要通过故障演练验证。例如拔掉主节点电源,记录业务恢复时间,才能确认 RTO 是否真的满足。
RHEL 高可用技术栈概览
RHEL 的高可用能力由一组组件协同构成,理解它们的分工比记住命令更重要。核心组件包括:
- Corosync:集群消息层,负责节点成员关系、心跳与消息传递。它决定节点之间是否“看得见彼此”。
- Pacemaker:集群资源管理器,负责资源定义、依赖关系、启动顺序、故障检测与迁移决策。它决定“谁在哪儿运行”。
- 资源代理(Resource Agent):具体服务的控制脚本,如 pcs 管理的 ocf:heartbeat:IPaddr2、ocf:heartbeat:Filesystem、systemd 资源等。它决定“怎么启停和监控一个资源”。
- Fencing/STONITH:隔离故障节点,防止脑裂导致数据损坏。它决定“故障节点是否被强制排除”。
- pcs:命令行管理工具,用于创建集群、配置资源、查看状态。
- 共享存储与仲裁:如 iSCSI、LUN、qdisk 或 SBD,用于数据一致性与集群决策。
这些组件的关系可以用下面的信号与决策链来表示:Corosync 提供成员与心跳,Pacemaker 基于策略做决策,资源代理执行动作,Fencing 保证安全边界。缺少任何一环,集群都可能出现“看起来正常但实际不安全”的状态。
实验环境规划与部署思路
为了让后续章节的配置、排障和演练可复现,本课程建议使用一套最小但完整的两节点实验环境。示例规划如下:
- 两台 RHEL 9 虚拟机:node1(192.168.10.11)、node2(192.168.10.12),主机名与 /etc/hosts 必须互相解析。
- 一块共享 iSCSI LUN,或使用虚拟化平台提供的共享磁盘,用于集群文件系统与数据一致性实验。
- 一个浮动业务 IP:192.168.10.100,作为客户端访问入口。
- Fencing 设备:实验环境可用 fence_virtd 或 SBD,生产环境必须使用真实可隔离的电源/存储隔离设备。
- 时间同步:chronyd 保证节点时间一致,否则日志与证书校验容易出错。
部署顺序建议为:先完成系统基础配置(主机名、hosts、时间同步、防火墙与 SELinux 策略确认),再安装 pcs、pacemaker、corosync、fence-agents 软件包,然后启用 pcsd 并设置 hacluster 密码,最后创建集群并配置 fencing。一个典型的初始化命令序列如下:
# 两台节点均执行
dnf install -y pcs pacemaker corosync fence-agents-all
systemctl enable --now pcsd
passwd hacluster
# 在 node1 上创建集群
pcs host auth node1 node2 -u hacluster -p <密码>
pcs cluster setup ha_cluster node1 node2
pcs cluster start --all
pcs cluster enable --all
pcs status
执行 pcs status 后,应看到两个节点均为 Online,且没有资源失败。此时集群只是“成员就绪”,还没有承载业务。接下来需要配置 fencing,再添加浮动 IP、文件系统与服务资源。判断环境是否可用的关键不是“命令没报错”,而是:节点能互相通信、fencing 能真正隔离、资源能在节点间迁移、业务 IP 在切换后仍可访问。