精读笔记(RHCA 英文教材)· RH436 Chapter 1 Creating High Availability Clusters
精读笔记(RHCA 英文教材)· RH436 Chapter 1 Creating High Availability Clusters
教材原文:RHCA 官方英文教材(PDF 第 25~56 页)(OCR 整书版已从本站移除,本页为章节精读) 关联知识:RHCE 阶段已掌握 pcs/corosync 基础可对照;RH436 全课程围绕 Pacemaker HA + 共享存储(Ch8~11 的 iSCSI/multipath/HA-LVM/GFS2);本章=建集群地基(选型→架构→pcs 建 3 节点+ fencing)。 结构:3 个 Section(1.1/1.2 带 Quiz,1.3 带 Guided Exercise)+ 章末 Lab(lab: cluster-review)。
Chapter Goal / Objectives(原文+译)
- GOAL: Create a basic high availability cluster(创建基础高可用集群).
- OBJECTIVES: ① 解释什么是 HA 集群、何时该用;② 识别 RHEL HA 集群的组件;③ 安装并启动一个小型 HA 集群。
1.1 Selecting a High Availability Cluster Configuration
集群类型
- Active-active(双活):服务同时在多节点运行,核心目标=负载均衡;需要负载均衡设备;可小到 2 节点;单节点故障时负载转到其余节点,恢复后重新分发。故障切换快。
- Active-passive(主备/冷切换):同一时刻服务只在一节点跑,故障时迁移到健康节点(failover)。本课程重点=active-passive。
- 企业使命关键业务常用 Pacemaker / Red Hat High Availability Add-On 做 HA;但自带冗余的服务(LDAP 主从、数据库多主分区)未必需要 HA 插件,可把这类服务当作资源/资源组的一部分。
- 决策问题:把服务放进 HA 集群是否真的提高可用性?要看服务能力与客户端配置(DNS/LDAP 多点+复制可不用 HA)。
- HA 的边界(考试会考):
- 应用 bug 导致崩溃:故障切换后同样输入仍会崩(HA 不修 bug)。
- HA 不做端到端冗余:基础设施网络断了,集群再健康客户端也连不上。
- 架构上要消除整条链路上的单点(见 1.2 SPOF 清单)。
概念:资源 / 资源组 / 故障转移 / fencing / quorum
- Resource 资源:集群管理的最小工作单元——单个 IP、文件系统、数据库进程等。
- Resource group 资源组:把相互关联的资源打包,要求同节点运行,并定义固定(线性)启动/停止顺序(例:web 服务=IP+共享数据+httpd 放一组)。
- Failover:节点无响应时把服务迁到健康节点。
- Fencing(隔离):确保故障节点无法破坏集群数据(下文展开)。
- Quorum(法定人数):投票系统维持集群完整性。每成员默认 1 票;有过半票即获 quorum;失联成员由正常多数派 fencing;失去 quorum 时默认不启动任何资源/资源组,正在运行的也会被停止以保证数据一致。
1.1 Quiz(连线题,答案要点)
计算集群(Compute)=大规模计算分发;高可用(HA)=active/passive 与 active/active 故障切换保服务可用;负载均衡(Load balancing)=单服务多节点分发网络负载(故障节点可被剔除);存储集群(Storage)=多主机多客户端共享数据。
1.2 Describing the Architecture of High Availability Clustering
硬件架构(典型 5 节点示例)
- Cluster nodes:跑集群软件与服务的机器。
- Public network:客户端访问服务;服务一般用浮动 IP(floating IP),集群把它指派给当前运行服务的节点。
- Private network:集群节点间通信(corosync 心跳/消息)。
- Networked power switch / 远程管理卡(iLO/DRAC):远程断电/上电,实现 power fencing。
- Fibre Channel switch:共享存储(也可用 iSCSI/FCoE 走以太网);图中节点右侧全为私有(存储/集群网),不得暴露公网。
软件组件(Pacemaker 全家桶)
- corosync:Pacemaker 的节点间通信框架,也是成员关系与 quorum 数据的来源(RHEL8 用 Corosync 3.x,默认单播传输 kronosnet;RHEL7 是 2.x,两者不兼容)。
- pacemaker:负责集群一切活动(成员监控、资源/服务管理、成员 fencing)。RPM 内三大设施:
- CIB(Cluster Information Base):XML 格式保存集群与资源配置/状态;被选出的 DC(designated coordinator) 节点保存并同步给所有活动节点;pacemaker-schedulerd 基于 CIB 计算理想状态与达成路径。
- CRMd:把资源 start/stop/状态查询动作发给各节点上的 LRMd,LRMd 再交给**资源代理(resource agents)**执行。
- STONITH:Shoot The Other Node in the Head——隔离故障节点的机制(power fencing 或 storage(fabric) fencing)。
- pcs:集群配置管理命令行/Web 前端(pcsd);本课程全部用 pcs。
- fencing 两类:power fencing(电源类:IPMI/iLO/DRAC 断电重启)与 storage(fabric) fencing(存储网类:切断故障节点对共享存储的访问)。
支持策略(数字要记)
- RHEL 8.1+ 无 Resilient Storage Add-On:最多 32 节点;RHEL 8.0 及更早、或使用 Resilient Storage Add-On:最多 16 节点。
- 单节点集群:RHEL 8.2+ 支持,但没有 fencing,不支持需要它的文件系统(DLM/GFS2);RHEL 8.1 及更早必须 ≥2 节点。
- 双节点集群多数情况支持,但生产部署前建议把设计提交 Red Hat Support 评审(牵涉 quorum/仲裁,见 Ch2)。
- 站点形态:single-site(同地,完全支持)、multisite(两集群=active+灾备,需专门设计)、stretch/geo cluster(跨地域,不单独设规则,但设计有内在难点,如 quorum 分区)。Booth ticket manager 用于多站点支持(端口 9929 TCP/UDP)。
网络端口(私有网络)
pcsd2224/TCP;corosync 5404~5412/UDP;可选项:GFS2 21064/TCP、quorum device 5403/TCP、Booth 9929 TCP/UDP。- 公网侧:开服务自身端口;浮动 IP 用 gratuitous ARP(交换机需支持)。
虚拟化与云环境
- 支持主流虚拟化/云平台把 VM 当集群成员;有专门 fencing agent 让 VM 节点互 fence(RHEL8 libvirt、RHV 等)。
- 注意:物理宿主机是跑在它上面所有集群节点 VM 的 SPOF(宿主崩→VM 全崩)。
- SELinux:targeted policy enforcing 模式受支持(不必关,Quiz 第 3 题 False)。
SPOF 常见清单(设计对照)
- 硬件:电源、本地存储、网卡、交换机、fencing 软件/硬件。
- 软件:集群通信(corosync)、共享存储连接、软件 fencing 配置。
- 存疑时最佳行动:联系 Red Hat Support 评估设计(Quiz 第 4 题 a)。
1.3 Configuring a Basic High Availability Cluster
安装与准备(每节点)
- 装包:
yum install pcs fence-agents-all(自动带 corosync、pacemaker;只装需要的 agent 可fence-agents-XXX;教室 IPMI 用fence-agents-ipmilan)。三节点同大版本 RHEL(RHEL7/8 不混用)。 - 防火墙:
firewall-cmd --permanent --add-service=high-availability && firewall-cmd --reload(每节点)。 - 起服务:
systemctl enable --now pcsd(每节点;pcsd=配置同步+Web 前端,用系统用户 hacluster 通信)。 - 设 hacluster 密码(建议三节点相同):
echo redhat | passwd --stdin hacluster。 - 认证(只需在一台执行):
pcs host auth node1.example.com node2.example.com node3.example.com(可加-u/-p自动化)。 - RHEL 大版本匹配:RHEL8 用 Corosync 3.x、RHEL7 用 2.x,不兼容。
建集群与开机自启
pcs cluster setup cluster1 --start node1.example.com node2.example.com node3.example.com
pcs cluster enable --all # 重启后自动加回集群(默认不自动重加入!)
pcs cluster status # 或 pcs status 看全貌pcs status关键行:Stack: corosync;Current DC: <node> - partition with quorum;Node List: Online [ … ];Daemon Status: corosync/pacemaker active、pcsd active;无 stonith 时出现WARNINGS: No stonith devices and stonith-enabled is not false。
配置 fencing(必做)
- fence 设备资源:
pcs stonith create <name> fence_ipmilan pcmk_host_list=<私有FQDN> ip=<BMC IP> username=<u> password=<p>(教室另加lanplus=1 power_timeout=180)。 - 查看/修改:
pcs stonith status(应全部 Started)、pcs stonith config <dev>、pcs stonith update <dev> …。 - 手动测隔离:
pcs stonith fence nodeb.private.example.com(最多等几分钟,被隔离节点重启后自动归队)。
实验要点 · Guided Exercise(lab: cluster-create)
三台 VM 各跑:防火墙放行 → yum install pcs fence-agents-ipmilan → systemctl enable --now pcsd → passwd hacluster=redhat → nodea 上 pcs host auth 三台 FQDN → pcs cluster setup cluster1 --start <3 FQDN> → pcs cluster enable --all → pcs status 验证 3 Online → 建 fence_nodea/b/c(fence_ipmilan,BMC 192.168.0.10x,lanplus=1,power_timeout=180)→ pcs stonith status → pcs stonith fence nodeb.private.example.com 验证重启。
Lab 概要(lab: cluster-review)
同 GE 全流程但要求独立完成:cluster1 三节点(nodea/nodeb/nodec.private.example.com)、防火墙放行、开机自动入群、fence_ipmilan(参数表:BMC IP/登录 admin/password)→ lab grade cluster-review。
命令速查表
| 用途 | 命令 |
|---|---|
| 安装 | yum install pcs fence-agents-all(或 fence-agents-ipmilan) |
| 防火墙放行 | firewall-cmd --permanent --add-service=high-availability; firewall-cmd --reload |
| 启动 pcsd | systemctl enable --now pcsd |
| 设 hacluster 密码 | echo redhat | passwd --stdin hacluster |
| 认证节点 | pcs host auth node1 node2 node3(-u user -p pass 自动化) |
| 建并启动集群 | pcs cluster setup cluster1 --start node1 node2 node3 |
| 开机自启 | pcs cluster enable --all |
| 状态总览 | pcs status / pcs cluster status |
| 建 stonith | pcs stonith create fence_nodea fence_ipmilan pcmk_host_list=nodea ip=<BMC> username=admin password=… [lanplus=1 power_timeout=180] |
| 查看/改 stonith | pcs stonith status;pcs stonith config <dev>;pcs stonith update <dev> <参数> |
| 手动隔离 | pcs stonith fence <node-fqdn> |
| 实验起止 | lab start cluster-create/cluster-review;lab grade cluster-review;lab finish … |
词汇表
| 英文 | 中文 | 速记 |
|---|---|---|
| high availability (HA) cluster | 高可用集群 | 保服务可用,而非单机 uptime |
| active-active / active-passive | 双活 / 主备 | 负载均衡 vs 冷切换;本课程主备 |
| resource / resource group | 资源 / 资源组 | 最小工作单元 / 同节点+固定启停序 |
| failover | 故障转移 | 服务迁到健康节点 |
| quorum | 法定人数 | 过半票才能工作,否则停资源保数据 |
| fencing / STONITH | 隔离 / 隔离机制 | power 或 storage(fabric);防脑裂数据损坏 |
| CIB / DC | 集群信息库 / 指定协调节点 | XML 配置状态;DC 同步全体 |
| CRMd / LRMd | 集群资源管理守护/本地资源管理守护 | 动作分发链;最后到资源代理 |
| resource agent | 资源代理 | 实际执行 start/stop/status 的脚本 |
| floating IP | 浮动 IP | 公网服务 IP,随服务迁移 |
| corosync / kronosnet | 通信框架/单播传输 | RHEL8 默认单播 |
| pcsd / hacluster | pcs 守护 / 系统用户 | 配置同步+Web;节点互信账户 |
| fence_ipmilan | IPMI-over-LAN 隔离代理 | BMC 远程电源管理 |
| SPOF | 单点故障 | 硬件/软件各有一串清单 |
| single-site / multisite / stretch | 单站点/多站点/跨地域 | 支持度与设计差异 |
| Booth ticket manager | Booth 票据管理器 | 多站点集群支持工具(9929 端口) |
自测 10 题
- HA 集群核心目标是保什么?(服务可用性,不是单机 uptime)
- active-active 与 active-passive 区别?(双活=负载均衡,主备=冷切换;课程只做主备)
- 失 quorum 时 Pacemaker 默认行为?(不启动新资源、停掉运行中资源)
- fencing 的两类?(power fencing 与 storage(fabric) fencing)
- RHEL 8.1+ 无 Resilient Storage 支持最多多少节点?带 Resilient Storage 呢?(32 / 16)
- corosync 与 pacemaker 在集群里各干什么?(通信+成员/quorum 来源;资源管理+隔离)
- CIB、DC、CRMd、LRMd、资源代理的调用链?(CIB 存配置→DC 同步→scheduler 计算→CRMd→LRMd→resource agents)
- 私有网络要开哪些端口?(2224/TCP;5404-5412/UDP;可选 5403、21064、9929)
- SELinux 要不要关?(不用,targeted enforcing 受支持)
- 建三节点集群的最小命令序列?(装 pcs+agent、防火墙、enable pcsd、设 hacluster 密码、pcs host auth、pcs cluster setup --start、pcs cluster enable --all、pcs stonith create ×3)
