资讯动态

RHCA EX436备考指南:高可用集群与存储管理实战拆解

发布时间:2026/9/8 0:33:13 来源:尧图企业网站定制
决定考 RHCA 那阵子我正在公司研究两套存储服务器的故障切换方案。原来用 keepalived NFS 的做法平时看着能用真到切换的时候问题一大堆NFS 客户端缓存卡住、文件锁失效、节点来回抢占时数据完全失控。折腾了几次事故之后我意识到光靠脚本和开源拼凑的东西走不远得系统地把红帽这套集群和存储方案学透。于是翻到 RHCA 认证列表锁定了 EX436全称是 Red Hat Clustering and Storage Management也就是我一直说的高可用集群与存储管理这才算正式开始我的 RHCA III 之路。EX436 这门考试跟很多人想象中的笔试完全不同。它全程在真实 Linux 环境里做配置操作考试系统会给你一组已经坏了半边的虚拟机等你把它恢复到能正常工作的状态。对运维来说这相当于是连续四个小时的高压故障演练。我后面能一次过靠的不是记忆力而是平时把每个操作都亲手练到形成肌肉记忆。这篇先做一份完整的备考拆解从考试范围、核心原理到实际组网和踩坑记录全部摊开来讲。1. 先别急着敲命令搞清 EX436 到底在考什么很多人一上来就是找题库、背命令结果到考场上看到真实环境直接懵。我的建议是先把这门考试的定位搞明白再决定往哪个方向使劲。1.1 RHCA 认证矩阵里 EX436 的准确位置红帽认证体系从低到高是 RHCSA、RHCE、RHCA。要拿到 RHCA前提是 RHCSA 和 RHCE 都有效然后再从十来门 EX 系列考试里选五门考过。EX436 就是其中经典的“存储与集群”方向和它经常配套出现的还有 EX442 性能调优、EX413 安全加固这些。很多人误以为 EX436 只是考“两台机器挂个虚拟 IP”这是把它想简单了。实际上它是把高可用集群、分布式文件系统、共享存储、软 RAID、iSCSI 这些运维里最容易出事故的环节全部揉在一起考。换句话说RHCA 里如果只挑一门最能代表“架构师”能力的考试EX436 绝对排在前三。我当时的路线是先考 EX200 和 EX294 拿到 RHCSA 和 RHCE然后第一门 RHCA 考试就选了 EX436。理由很简单因为工作中最痛的点就是存储和高可用学完能立刻反哺生产环境。1.2 这门考试和 RHCSA/RHCE 最大的区别RHCSA 和 RHCE 的考试本质上是在验证“你会不会用工具”题目之间相对独立这道题挂了不影响那道题。EX436 不是这样它整套环境是一体的节点之间要通信、集群资源之间有依赖、共享存储的状态会影响多个服务。前面一步做错后面可能连环崩。举个例子考试可能会要求你在一台共享存储服务器的 iSCSI 目标端上导出一个 LUN然后让两个集群节点都登录这个 LUN再在这个 LUN 上创建集群卷组和 GFS2 文件系统最后把 Apache 服务跑在这个文件系统上并配置故障切换。每一个环节都是前一个的输入只要中间有一个命令打错后面就全线卡住。这也就是说备考 EX436 最忌讳的就是“照着答案敲一遍就完事”。你需要理解每个命令背后的状态流转比如为什么这个 LUN 被两个节点同时挂载时必须要加锁为什么隔离设备不配就永远无法真正高可用。1.3 EX436 考点全景与官方没明说的侧重点按照我对近几年考试内容的观察EX436 的考点主要集中在下面几个大块权重经验大致如下考点方向涉及的典型技术经验权重集群基础架构Corosync、Pacemaker、pcs、quorum 机制高资源管理与约束资源代理、VIP、服务资源、order/colocation 约束高隔离FencingSTONITH、fence_virt、fence_ipmilan、pcmk_host_map高共享存储接入iSCSI target/initiator、multipath视版本中高集群文件系统GFS2、集群卷组、lvmlockd、锁表命名中高本地存储与软 RAIDmdadm RAID1/RAID5、mdadm.conf 持久化中资源组与集群应用Apache/NFS 集群资源、文件系统资源中注意官方不会把权重告诉你上面是我根据自己两次考试和周围朋友反馈总结出来的感觉。但有一条规律很稳定凡是和数据安全、节点状态相关的内容也就是隔离和共享存储几乎必考而且分值不低。2. 高可用集群和共享存储本质上是一件事备考 EX436 时我最大的认知转变是意识到“高可用”和“共享存储”从来不是两个独立主题。没有共享存储高可用服务一切换就丢数据没有锁机制多节点同时写共享盘又会让文件系统直接崩溃。它们就是一对组合拳。2.1 高可用的核心不是“两台机器”而是“同一个服务不中断”很多新手有个直觉高可用就是准备两台一样的服务器一台挂了另一台顶上。这个想法不算错但严重不完整。真正的高可用核心目标是让“服务”持续可用而不是让某台机器永远不坏。在 EX436 的语境里集群管理的是资源不是机器。所谓资源可以是一个虚拟 IP、一个 Apache 服务、一个文件系统挂载点甚至是一整个资源组。Pacemaker 会根据节点健康状态、约束规则和策略决定这些资源应该跑在哪台机器上。节点挂了资源自动漂移到健康节点对外服务不中断这才是考试要求的最终状态。所以学这门课先要把脑子从“修机器”切换到“管资源”。考试不会让你修硬件只会给你一个资源错乱、节点失联的集群让你把它恢复成资源稳定运行的样子。2.2 从 keepalived 到 Pacemaker资源、约束、隔离我工作里最初用的方案是 keepalived它就是简单地绑定一个虚拟 IP主节点挂了备节点抢 IP。这套方案最大的问题是只管了 VIP管不住后面的服务服务进程死了但机器还在VIP 照样不切业务照样挂。Pacemaker 的做法完全不一样。它内部有三种核心概念理解了这三个词EX436 的主干就通了一是资源resource就是你想让集群托管的服务比如 IPaddr2 提供的虚拟 IP、Apache 服务、Filesystem 文件系统挂载等。二是约束constraint用来定义资源之间的关系。比如“VIP 必须先启动Apache 必须在 VIP 所在节点启动”这是 order 约束“Apache 必须和 VIP 在同一节点”这是 colocation 约束。三是隔离fencing当节点失联时集群要能强制把失联节点从共享存储访问中剔除出去防止它继续写数据造成脑裂。这种设计最大的价值是可控。你把所有关系用命令明确表达出来集群状态是可以通过pcs status一眼看穿的。我在生产环境迁移服务时现在也会先把 VIP 和服务拆成独立资源再用约束绑定切换起来比脚本可控太多。2.3 为什么要搞 GFS2NFS 还不够用吗我第一次接触 GFS2 时也问过这个问题两边都挂同一个 NFS 不就行了吗考试为什么要折腾一个专门的集群文件系统关键在于一致性。NFS 适合一个节点写、多个节点读或者通过 NFS 服务端来管理锁。但 GFS2 解决的是“多个节点并发读写同一块块设备”的问题它允许两个节点直接挂载同一块存储并对文件系统元数据进行分布式锁管理。打个不完全恰当的比方NFS 是把文件服务集中在一个管家手里所有请求找管家GFS2 则是让每个节点都能直接进库房但有一套严格的登记制度保证不会两个人同时改同一个货架。这个登记制度就是 DLM分布式锁管理器。在 EX436 里GFS2 通常会配合共享 LUN 出现。你需要用集群 LVM 创建卷组和逻辑卷然后格式化成 GFS2再让多个节点挂载同一个逻辑卷。如果锁配置不对或者挂载节点数超过日志节点数文件系统就会挂不上这几乎是我见过最常丢分的地方。2.4 LVM 集群锁和软 RAID、iSCSI 的配合存储链路从底到上大概是这样的物理盘或虚拟盘通过 iSCSI 或本地磁盘供出来然后由 mdadm 做成软 RAID或者直接作为 PV 交给 LVM再往上如果是集群场景就需要把 LVM 卷组标记为 clustered最后在逻辑卷上格式化 GFS2 并挂载到集群节点。这里有一个容易忽略的点普通 LVM 本身没有分布式锁如果两台机器同时激活同一个卷组哪怕只是同时挂载也可能导致元数据损坏。所以在集群环境里LVM 必须运行在集群锁模式下。RHEL 8 里由 lvmlockd 负责这件事卷组创建时要加--clustered y参数节点加入集群后才能在共享盘上安全地使用 LVM。iSCSI 则是把存储从“本地盘”变成“网络盘”的手段。两个节点只要配置好 initiator登录同一个 target就能看到同一块 LUN。EX436 里这部分通常不难难的是你要理解整条链路并且能够在任意一环出问题时快速定位。3. 动手搭一套最小可用的双节点集群光看文档永远学不会 EX436。我建议你先在虚拟化环境里搭一套最小的双节点集群哪怕只有两台虚拟机加一块共享盘。我踩过一轮坑之后把比较顺畅的步骤整理在下面。3.1 实验环境准备虚拟机与网络规划我是用 KVM 虚拟机做的实验两台节点分别叫 node1 和 node2系统是 RHEL 8。每台节点我给两块网卡一块做管理网络一块做集群通信网络。管理网络走 NAT集群通信网络走 host-only这样可以隔离心跳流量避免实验时互相干扰。另外一个容易翻车的点是主机名解析。Pacemaker 和 Corosync 对节点名非常敏感我的建议是直接配置文件不要依赖 DHCP 动态解析。例如# /etc/hostsnode1 和 node2 都要写 192.168.10.101 node1.example.com node1 192.168.10.102 node2.example.com node2然后关闭或配置好防火墙。实验环境我图省事直接禁用了防火墙但生产环境一定要按端口放行红帽这边集群通信主要涉及 TCP 5404、5405corosync、2224pcsd等。还有 SELinux建议保持 enforcing考试环境通常不会让你关 SELinux你只要保证文件类型和端口上下文正确就行。3.2 用 pcs 完成集群初始化的完整命令序列RHEL 8 里集群管理统一用pcs命令。初始化集群的流程并不长但顺序错了会非常头痛。我习惯按下面这个顺序走# 在两台节点上都安装软件包 dnf install -y pcs pacemaker corosync fence-agents-all # 启动 pcsd 守护进程并设置 hacluster 用户密码 systemctl enable --now pcsd passwd hacluster # 在 node1 上认证所有节点 pcs host auth node1 node2 -u hacluster # 创建集群并立即启动 pcs cluster setup mycluster node1 node2 --start --enable # 查看集群状态 pcs cluster status这里我犯过一个低级错误先创建集群忘了加--enable结果虚拟机重启后集群没起来考试里你得每一步都确认服务会开机自启。还有一个很多人忽略的点是时间同步Corosync 对时间偏移很敏感节点间时间差太大会导致通信异常。装好系统后我都习惯先把 chronyd 配好再开始搭集群。3.3 Fencing 隔离配置不止是 STONITH创建完集群之后第一步不是建资源而是配隔离。没有 fencing 配置Pacemaker 根本不会启用资源管理因为它在节点失联时会非常谨慎宁可让资源停着也不允许脑裂风险。我见过的初学者十个里有八个会在这一步卡住。配置隔离的思路是告诉集群“当某个节点失联时用什么方式把它强制断电或重启”。考试环境里最常见的设备是 fence_virt 或 fence_ipmilan。拿 fence_virt 举例配置命令大致是pcs stonith create my_fence fence_virt \ pcmk_host_mapnode1:vm1;node2:vm2 \ actionrebootpcmk_host_map很关键它负责把集群节点名映射成虚拟化管理程序里的真实虚拟机名。如果映射不对隔离命令发下去根本找不到目标机器。配好之后一定要用pcs stonith status --full检查设备在线状态。我在虚拟机环境里测试过故意把 node2 的网卡断开过一会儿pcs status就会显示 node2 被隔离重启。看到那个过程你才会真正理解为什么 EX436 反复强调隔离。3.4 把 Apache 资源跑起来并验证故障切换隔离配好之后就可以创建集群资源了。考试常见的场景是虚拟 IP 加 Apache。这里要注意资源的启动顺序和位置绑定我们不光要创建资源还要用约束把它们绑成一个整体。# 创建虚拟 IP 资源 pcs resource create vip IPaddr2 ip192.168.10.100 op monitor interval5s # 创建 Apache 资源 pcs resource create web-server apache \ config_file/etc/httpd/conf/httpd.conf \ op monitor interval30s # 约束vip 必须先于 Apache 启动且两者必须在同一节点 pcs constraint order vip then web-server pcs constraint colocation add web-server with vip INFINITY完成之后用pcs status可以看到资源跑在哪台节点。我习惯做一个简单的验证在资源所在节点不断刷新 Apache 页面然后强制关闭这台节点观察页面是否在几秒内由另一台节点接管。如果体验流畅说明资源约束和隔离都工作正常。这个实验场景几乎就是 EX436 的一道标准大题。4. GFS2 与集群存储的实战配置集群有了服务能切换了但这是空着手的集群。EX436 最喜欢考的场景是让共享文件系统跟着集群资源走GFS2 是重头戏。4.1 从 iSCSI 目标端到共享 LUN 的连接要让两台节点看到同一块盘通常的做法是配一台 iSCSI 目标服务器把一块空闲盘作为共享 LUN 导出然后两台节点作为 initiator 登录这块 LUN。目标端用 targetcli 配置以 RHEL 8 为例大致流程是这样的dnf install -y targetcli targetcli / backstores/block create disk1 /dev/sdb / iscsi/ create iqn.2024-11.example:shared-disk / iscsi/iqn.2024-11.example:shared-disk/tpg1/luns create /backstores/block/disk1 / iscsi/iqn.2024-11.example:shared-disk/tpg1/acls create iqn.2024-11.example:client1 / exit systemctl enable --now target两台节点这边配置 initiator 名称然后发现并登录 targetdnf install -y iscsi-initiator-utils echo InitiatorNameiqn.2024-11.example:client1 /etc/iscsi/initiatorname.iscsi systemctl restart iscsid iscsiadm -m discovery -t sendtargets -p storage-ip iscsiadm -m node -T iqn.2024-11.example:shared-disk -p storage-ip --login systemctl enable --now iscsi做完后在 node1 和 node2 上分别执行lsblk应该都能看到同一块新盘。如果看不到先怀疑 initiator 名称和目标端 ACL 是否匹配。这个环节没有技术深度但命令顺序很容易记错我建议至少练三遍。4.2 创建集群卷组和 GFS2 文件系统两个节点都看到共享盘之后接下来要在共享盘上创建集群卷组。RHEL 8 上要确保 lvmlockd 可用并启动然后创建带集群标记的卷组。# 创建带集群锁的卷组 vgcreate --clustered y vg_shared /dev/sdb # 创建逻辑卷 lvcreate -L 10G -n lv_gfs vg_shared # 格式化 GFS2-j 参数是日志节点数量至少等于挂载该文件系统的节点数 mkfs.gfs2 -j 2 -t mycluster:gfs2data /dev/vg_shared/lv_gfs-t参数后面的格式一定是集群名:文件系统名其中集群名要和前面创建集群时保持一致。如果这里写错挂载时 GFS2 找不到对应的集群锁空间会直接报错。如果考试要求把这个文件系统作为集群资源来管理还要创建对应的资源而不是手动挂载例如pcs resource create fs_shared Filesystem \ device/dev/vg_shared/lv_gfs \ directory/mnt/shared \ fstypegfs2 \ optionsnoatime \ op monitor interval30s再配合 order 和 colocation 约束让 VIP、文件系统、Apache 三者形成正确的启动顺序和位置关系。这是 EX436 比较有代表性的综合题。4.3 挂载、权限和锁表命名细节GFS2 挂载失败是高频事故我总结过几条经验第一两个节点不要手动同时挂载同一个逻辑卷必须先确认卷组和文件系统都处于健康状态再通过集群资源去挂载。手动挂载一旦没走锁机制容易留下元数据隐患。第二创建 GFS2 时-j的数目要多留一点。如果日后要增加挂载节点日志不足会导致新节点无法挂载。我们一般节点数加一比较稳妥。第三注意 SELinux 文件上下文。Apache 需要访问/mnt/shared下的文件时目录上下文类型要对否则服务起来了但读不了文件表现为 403 或连接拒绝。我还踩过一个坑GFS2 资源在节点间切换时旧的挂载点没完全卸载新节点就尝试挂载这会导致Device or resource busy。遇到这种情况先用pcs resource restart fs_shared强制资源重启再查看日志。4.4 软 RAID 在校验中的用法除了集群部分EX436 还经常考软 RAID。题目通常给你几块空盘要求创建 RAID1 或 RAID5并保证重启后仍然生效。命令本身不复杂mdadm --create /dev/md0 --level1 --raid-devices2 /dev/sdc /dev/sdd # 查看状态 mdadm --detail /dev/md0 # 持久化配置文件不加这一步重启后阵列会失效 mdadm --detail --scan /etc/mdadm.conf很多人在这一步偷懒格式化完就忘了写/etc/mdadm.conf结果考试环境一重启阵列消失得分全扣。我的建议是把这一步当作和创建阵列同等重要的步骤。另外如果磁盘里有旧分区表mdadm --create会失败先wipefs -a清掉旧签名再创建。5. EX436 高频失误与自救清单最后这部分我想集中写一写考场和练习中反复出现的问题。它们不涉及多高深的理论但往往决定了最终过不过。5.1 五个最容易丢分的操作细节第一个是隔离设备永远最后配。很多考生把资源建好后再配 fencing一检查发现 Pacemaker 因为隔离缺失直接拒绝所有资源前面的时间全白费。第二个是忘记保存配置。pcs 的资源、约束、stonith 配置默认会持久化到 CIB 里但内核参数、mdadm 配置、fstab、iSCSI 登录状态这些东西都得单独处理。考试结束后系统会重启评分如果你没把 iSCSI 配置成开机自动登录fstab 挂载项可能会把启动卡住。第三个是约束冲突没查出来。比如你把 Apache 和 VIP 用 colocation 绑在一起又写了冲突的顺序约束资源就会反复启动失败。排查时多用pcs constraint list查看全量约束而不是在配置文件里瞎翻。第四个是 GFS2 集群名写错。-t参数里的集群名和文件系统名必须和现有集群一致错一个字符都挂不上。第五个是操作完成后不等状态稳定就继续。集群内部状态尤其是隔离和资源迁移需要几秒甚至几十秒收敛必须等pcs status显示正常后再做下一题。中途强行重启会留下脏状态。5.2 常见报错和对应排查命令速查表我把练习中遇到的高频现象整理成一张速查表排错时直接对着看现象常见原因排查命令或动作集群服务起不来pcs status报节点离线网络、时间同步、节点名解析pcs cluster sync后检查 /etc/hostschronyc sources资源启动失败状态显示 Failed资源代理名错、参数拼写错、约束冲突pcs resource debug-start 资源名STONITH 设备状态异常pcmk_host_map 映射错、IP/账号密码错pcs stonith status --fullGFS2 挂载失败锁表名错、日志数不足、未使用集群锁dmesg共享盘在两节点名称不一致盘符漂移多路径未配置用lsblk按 WWN 或 /dev/disk/by-id 确认Apache 无法访问共享文件SELinux 上下文不对restorecon -Rv /mnt/shared检查 httpd 日志重启后 iSCSI 盘丢失initiator 名称或开机自启没配iscsiadm -m node -T 目标 --op update -n node.startup -v automatic排错最重要的是别慌。先看服务状态再看日志最后看配置文件一层层收窄。考试系统里也可以看日志journalctl -xe和/var/log/messages永远是第一手信息。5.3 考试前 30 分钟我做了什么正式考试前我一般不会再看新题而是花时间默写关键命令流程。比如 iSCSI 登录、集群资源创建、GFS2 格式化这三步每步手敲一遍到肌肉记忆程度。然后把约束管理的常用命令列在草稿纸上防止考场紧张脑袋空白。考试过程中我会每完成一个场景就做一次完整的pcs status和mount检查确认当前状态符合题目要求再进入下一题。如果发现前面某步做错了导致连锁反应优先恢复整体状态而不是纠结单点问题。考试环境不怕重做最怕带着脏状态一路错到底。写在最后的一点个人体会两轮 EX436 考下来我最深的感受是这门考试的价值远超一张证书。它逼着我把高可用集群从“脚本凑合”提升到了“架构设计”的层面。现在再遇到业务需要做主备切换我会先想清楚资源模型、约束关系和隔离策略而不是急着写脚本。接下来我还会继续更新 RHCA III 系列的后续内容把性能调优和故障诊断这两块也逐步整理出来。如果你也正在准备 EX436希望这篇能帮你少走点弯路考场上稳住节奏一次通过。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价