高可用集群文件系统能够在节点故障时自动切换服务,保障数据存储和访问的连续性,在企业级Linux环境中应用十分广泛。本文以常见的pacemaker+corosync组合为例,讲解完整的配置流程。

环境准备
首先需要准备两台及以上运行相同Linux发行版的服务器,本文以CentOS 7为例,所有节点需要满足以下条件:
- 节点之间网络互通,建议配置专用心跳网络
- 所有节点已配置好主机名解析,可通过主机名互相访问
- 共享存储设备已挂载到所有节点,本文使用iSCSI共享磁盘作为示例
- 关闭所有节点的防火墙和SELinux,或者配置对应的放行规则
安装集群组件
在所有节点上执行以下命令安装pacemaker、corosync以及集群文件系统相关工具:
# 安装集群基础组件 yum install -y pacemaker corosync pcs # 安装集群文件系统工具 yum install -y gfs2-utils lvm2-cluster # 启动pcs服务并设置开机自启 systemctl start pcsd systemctl enable pcsd
配置集群认证
在所有节点上为hacluster用户设置相同的密码,然后在一个节点上执行集群认证操作:
# 所有节点执行,设置hacluster密码 passwd hacluster # 在第一个节点执行,认证所有集群节点,node1、node2替换为实际主机名 pcs cluster auth node1 node2 -u hacluster -p 设置的密码 --force
创建并启动集群
认证完成后,创建集群并启动所有节点的集群服务:
# 创建集群,集群名称为ha_cluster,包含node1和node2两个节点 pcs cluster setup --name ha_cluster node1 node2 # 启动所有节点的集群服务 pcs cluster start --all # 设置集群服务开机自启 pcs cluster enable --all # 检查集群状态,确认所有节点在线 pcs status cluster
配置共享存储与集群文件系统
首先在共享磁盘上创建LVM物理卷、卷组和逻辑卷,然后格式化为gfs2集群文件系统:
# 在共享磁盘上创建物理卷,/dev/sdb为共享磁盘设备名 pvcreate /dev/sdb # 创建卷组vg_cluster vgcreate vg_cluster /dev/sdb # 创建逻辑卷lv_data,使用全部空间 lvcreate -l 100%FREE -n lv_data vg_cluster # 格式化为gfs2文件系统,指定日志数量为2,对应两个节点 mkfs.gfs2 -j 2 -p lock_dlm -t ha_cluster:lv_data /dev/vg_cluster/lv_data
配置高可用资源
接下来将集群文件系统的挂载操作配置为集群资源,实现故障时自动切换:
# 创建LVM集群资源,确保共享存储的LVM激活 pcs resource create lv_cluster ocf:heartbeat:LVM volgrpname=vg_cluster exclusive=yes --group cluster_group # 创建文件系统挂载资源,挂载到/data目录 pcs resource create fs_cluster ocf:heartbeat:Filesystem device=/dev/vg_cluster/lv_data directory=/data fstype=gfs2 --group cluster_group # 查看资源状态,确认资源正常运行 pcs status resources
验证高可用效果
可以手动模拟节点故障,验证集群的自动切换能力:
# 在node1节点上执行,停止集群服务模拟故障 pcs cluster stop node1 # 在node2节点上查看资源状态,确认资源已自动切换到node2 pcs status resources # 测试/data目录的读写是否正常 echo "test" > /data/test.txt cat /data/test.txt
常见问题排查
如果集群启动异常,可以通过以下命令查看日志排查问题:
- 查看corosync日志:
tail -f /var/log/cluster/corosync.log - 查看pacemaker日志:
tail -f /var/log/pacemaker.log - 检查节点之间的心跳连通性:
corosync-cfgtool -s
如果文件系统挂载失败,需要确认共享存储的LVM是否正确激活,以及gfs2文件系统的日志数量是否和集群节点数量匹配。