centos filesystem如何实现高可用性
小樊
36
2025-12-01 15:07:28
CentOS 文件系统高可用实现路径
一、方案总览与选型
- 共享块存储 + 集群文件系统:使用 iSCSI/FC 提供共享块设备,配合 CLVM 做集群卷管理,在共享卷上创建 GFS2,并由 Pacemaker/Corosync 管理挂载与故障切换,适合多节点对同一文件系统并发读写。
- 主备复制 + NFS 高可用:用 DRBD 将块设备做镜像,上层跑 NFS,通过 Keepalived VIP 或 Pacemaker 做主备切换,适合写入压力中等、需要快速切换的业务。
- 多主复制 + 分布式文件系统:以 MooseFS 等分布式文件系统承载数据,配合 DRBD + Pacemaker/Corosync 消除单点,适合海量小文件与横向扩展场景。
二、共享块存储 GFS2 集群
- 架构要点:共享存储(如 iSCSI Target)→ 两(多)节点同时接入 → CLVM 管理共享卷 → 在共享卷上创建 GFS2 → Pacemaker/Corosync 托管资源(如 Filesystem、集群IP、STONITH)。
- 关键步骤(示例)
- 存储端发布 iSCSI 共享卷,节点登录并确认多路径/单路径可达。
- 集群节点安装并启动 Corosync/Pacemaker,建立 fencing(如 fence_ipmilan)。
- 启用并配置 CLVM:设置全局锁(locking_type=3),在共享 VG 上创建 LV。
- 在共享 LV 上创建 GFS2:mkfs.gfs2 -j <日志数> -p lock_dlm -t <cluster_name:fs_name> /dev//。
- Pacemaker 资源配置示例:
- primitive p_fs Filesystem device=“/dev/vg01/lv_gfs” directory=“/data” fstype=“gfs2” op start timeout=60 op stop timeout=60
- primitive p_vip IPaddr2 ip=192.168.10.100 cidr_netmask=24
- colocation col_fs_vip inf: p_fs p_vip
- order o_fs_vip inf: p_fs:start p_vip:start
- 验证:所有节点 mount | grep gfs2,在多个节点同时写入同一目录做一致性测试,并断网/宕机验证切换。
- 适用场景:数据库共享存储、容器/虚拟化共享盘、需要多节点并发写入的业务。
三、主备复制 NFS 高可用
- 架构要点:两节点各接本地盘,DRBD 做块级镜像(主/备),上层 NFS 导出同一目录,Keepalived 提供 VIP 漂移或 Pacemaker 托管 NFS 与 VIP,实现故障自动切换。
- 关键步骤(示例)
- 准备两块等容量磁盘,初始化并配置 DRBD(/dev/drbd0),建立元数据,设置主/备角色。
- 在主节点格式化并挂载 DRBD 设备(如 XFS),写入测试文件;执行 drbdadm primary all 同步数据。
- 两节点安装 NFS,共享目录指向 DRBD 挂载点(/data),/etc/exports 配置一致。
- 部署 Keepalived:定义 VRRP 实例与切换脚本(检查 NFS/DRBD 角色与健康),VIP 绑定在 192.168.10.100。
- 防火墙放行:NFS 相关端口 111/TCP/UDP、2049/TCP,以及 DRBD 7788-7799/TCP(示例);必要时放行组播用于 VRRP。
- 验证:客户端通过 VIP 挂载 NFS,模拟主节点宕机/断网,观察 VIP 漂移与 NFS 服务连续性。
- 适用场景:传统应用、图片/日志等中等并发写入、对切换时延敏感的业务。
四、分布式文件系统 MooseFS 高可用
- 架构要点:多台 Chunk Server 存数据,Metalogger/Shadow Master 提升元数据可用性,前端 MFS Master 单点通过 DRBD + Pacemaker/Corosync 做成主备,客户端通过 FUSE 挂载。
- 关键步骤(示例)
- 部署 MooseFS:搭建多台 Chunk Server,配置 Metalogger;编译或安装 MFS Master。
- 在 Master 主机上配置 DRBD,将元数据目录(如 /var/lib/mfs)放在 DRBD 设备上,主备切换元数据不丢。
- 使用 Pacemaker/Corosync 托管 DRBD 主备、MFS Master 服务与 VIP;设置 fencing。
- 客户端挂载:mount -t moosefs <master_vip>:/ /mnt。
- 验证:停止主 Master、拔网线、磁盘故障等场景,确认 Master 切换后客户端可继续读写。
- 适用场景:海量小文件、跨机房/跨地域扩展、对容量线性扩展和高容错要求高的业务。
五、关键实践与避坑
- 仲裁与防护:为 Pacemaker 配置奇数仲裁节点或仲裁盘,启用 STONITH/fencing,避免脑裂与数据损坏。
- 一致性策略:
- GFS2/CLVM 场景,确保集群锁与配额正确配置,避免多节点写冲突。
- DRBD 场景,严格按流程切换主备(如 umount→drbdadm secondary→drbdadm primary),减少脑裂风险。
- 网络与端口:提前规划 VLAN/带宽/时延,放行 NFS(111/2049)、DRBD(7788-7799)、VRRP(协议号112/组播)、iSCSI(3260) 等端口,避免健康检查误判。
- 文件系统与调优:共享块设备优先 XFS(大文件/并发好),条带化/对齐提升性能;NFS 建议 rsize/wsize 与内核网络栈参数配合调优。
- 监控与演练:对 VIP、DRBD 同步状态、NFS 句柄、MFS Master 进程 建立监控告警;定期做主备切换与断电演练,验证 RTO/RPO。