4. ActiveCluster部署实战

ActiveCluster 是 Pure Storage FlashArray 原生的双活(Active-Active) stretched cluster 方案,它让两台位于不同站点(或同一机房不同机柜)的 FlashArray 组成一个逻辑集群,同一份卷在两个阵列上同时可读写,主机通过 MPIO 路径同时访问两端,任一站点故障时业务无需人工切换。本节以两台 FlashArray //X 系列阵列为例,完整走一遍从阵列配对到双活访问验证的部署过程,并给出常见报错的定位思路。

部署前提与拓扑

ActiveCluster 的底层依赖是 Pure1 云中介(Mediator)。两台阵列必须都能访问 Pure1,由 Mediator 负责仲裁,避免双站点间链路中断时出现“双主”脑裂。部署前需要确认:两台阵列的 Purity 版本一致且支持 ActiveCluster;两台阵列已分别完成初始化并接入 Pure1;两站点间有低延迟链路(官方建议 RTT ≤ 5ms,实际部署中通常要求 ≤ 10ms 且抖动小);主机侧已安装多路径软件(Linux 用 multipath,Windows 用 MPIO,VMware 用 NMP/PSP)。

典型拓扑如下:主机 H1 通过两条 FC 或 iSCSI 路径分别连到 Array-A 和 Array-B;Array-A 与 Array-B 之间通过 IP 网络建立 ActiveCluster 复制链路;两台阵列各自与 Pure1 Mediator 通信。主机看到的是一个名为 pod 的逻辑对象,卷在 pod 内创建后自动在两端呈现。

ActiveCluster 双活拓扑与数据路径 Pure1 Mediator 仲裁 / 防脑裂 Array-A (站点1) FlashArray //X70 Purity 6.x Array-B (站点2) FlashArray //X70 Purity 6.x HTTPS HTTPS ActiveCluster 复制链路 (IP, RTT≤5ms) 主机 H1 MPIO / multipath 双路径访问同一卷 FC/iSCSI 路径1 FC/iSCSI 路径2 Pod: ac-pod-01(逻辑双活容器)

第一步:阵列配对(创建 Pod 并加入阵列)

ActiveCluster 的配对不是简单的“两台阵列互联”,而是通过创建一个 Pod 对象,再把两台阵列加入该 Pod。操作在 Purity GUI 的 Protection > ActiveCluster 或 CLI 中完成。CLI 方式更利于记录和复现:

# 在 Array-A 上创建 Pod
purepod create ac-pod-01

# 将 Array-B 加入该 Pod(需先在两台阵列间建立信任)
purearray connect --management-address 10.20.30.41 --type ac
purepod add --array Array-B ac-pod-01

# 查看 Pod 状态
purepod list --all
purepod monitor ac-pod-01

执行 purepod monitor 后,正常状态应显示两台阵列均为 online,Mediator 状态为 connected,复制链路状态为 replicating。如果 Mediator 显示 disconnected,说明阵列无法访问 Pure1,需要检查管理口 DNS、代理或防火墙出站 443 端口。如果复制链路显示 not connected,则要检查两站点间 IP 可达性以及是否放行了 ActiveCluster 所需的端口(默认 443 与 8080 区间,具体以版本为准)。

第二步:主机连接与卷创建

Pod 建立后,卷必须在 Pod 内创建,而不是在单台阵列上创建。这样卷才会同时呈现在两端。主机连接方面,需要把主机的 IQN 或 WWN 分别注册到两台阵列,并加入同一个 host group,再把 Pod 卷映射给该 host group。

# 在 Pod 内创建 1TB 卷
purevol create --size 1T ac-pod-01::vol-app01

# 在两台阵列上分别创建主机对象并注册 IQN
purehost create --iqn iqn.1994-05.com.redhat:h1 host-h1
purehost connect --iqn iqn.1994-05.com.redhat:h1 host-h1

# 创建 host group 并映射 Pod 卷
purehgroup create hg-app
purehgroup addhost hg-app host-h1
purehgroup connect hg-app ac-pod-01::vol-app01

映射完成后,在主机上执行 multipath -ll(Linux)或 mpclaim -s -d(Windows),应看到同一个 LUN 出现两条或更多路径,分别指向 Array-A 和 Array-B 的控制器端口,路径状态均为 active ready running。这是双活访问最直接的证据:主机同时通过两个站点读写同一卷。

第三步:双活访问验证

验证不能只看路径数量,还要确认数据在两个站点间确实同步。推荐做一次“写入—切换—读取”的闭环测试:在主机上向卷写入一个带时间戳的文件,记录校验值;然后在 Array-A 上执行 purepod failover ac-pod-01 --array Array-B 模拟站点1故障,观察主机 I/O 是否在数秒内继续;再从主机读取该文件,校验值应与写入时一致。最后执行 purepod failover ac-pod-01 --array Array-A 恢复。整个过程业务不中断,说明双活生效。

验证时建议使用 fio 或 dd 持续写入,同时观察 purepod monitor 中的复制延迟(replication lag)。正常情况下延迟应在毫秒级,若持续增长,说明站点间链路带宽或延迟不满足要求。

常见部署报错与处理

报错现象可能原因处理方式
Mediator 状态 disconnected阵列无法访问 Pure1检查管理口 DNS、代理、出站 443 端口
Pod add array 失败两阵列 Purity 版本不一致或未建立信任统一版本,重新执行 purearray connect
复制链路 not connected站点间 IP 不通或端口被拦用 ping/telnet 验证,放行所需端口
主机只看到单路径主机未注册到两台阵列或 zoning 缺失检查 WWN/IQN 注册与交换机 zoning
failover 后 I/O 中断主机 MPIO 策略未设为 round-robin 或路径未识别调整 MPIO 策略,重新扫描磁盘

部署 ActiveCluster 的关键在于“先配对、再建卷、后验证”的顺序不能颠倒,且每一步都要用 purepod monitor 确认状态。只要 Mediator 与复制链路正常,主机侧路径完整,双活访问即可稳定运行。