当前位置: 首页 > news >正文

高可用双向存储服务GlusterFS

一、环境准备

1. 节点信息(示例)

节点角色

主机名

IP 地址

存储目录(用于 GlusterFS)

节点 1

gluster-node1

192.168.1.101

/data/gluster/brick1

节点 2

gluster-node2

192.168.1.102

/data/gluster/brick1

2. 系统初始化(两台节点均执行)
# 关闭 SELinux(临时+永久)
sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config# 更新系统
sudo dnf update -y && sudo dnf install -y vim chrony# 配置时间同步(确保节点时间一致)
sudo systemctl enable --now chronyd
sudo chronyc sources  # 验证时间同步状态# 设置主机名(节点1执行)
sudo hostnamectl set-hostname gluster-node1
# 节点2执行
sudo hostnamectl set-hostname gluster-node2# 配置 hosts 解析(两台节点均执行)
sudocat <<EOF >> /etc/hosts
192.168.1.101 gluster-node1
192.168.1.102 gluster-node2
EOF

二、安装 GlusterFS 服务

1. 安装软件包(两台节点均执行)
# 启用 GlusterFS 存储库(CentOS Stream 9 默认包含)yum install -y centos-release-gluster#删除原始源换成国内源
rm -rf  /etc/yum.repos.d/CentOS-Gluster-9.repo
yum install -y yum-utils
yum-config-manager --add-repo https://mirrors.aliyun.com/centos/7/storage/x86_64/gluster-9/#加入一行
cat mirrors.aliyun.com_centos_7_storage_x86_64_gluster-9_.repo [mirrors.aliyun.com_centos_7_storage_x86_64_gluster-9_]
name=added from: https://mirrors.aliyun.com/centos/7/storage/x86_64/gluster-9/
baseurl=https://mirrors.aliyun.com/centos/7/storage/x86_64/gluster-9/
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-Storage  ###加入这一行# 安装 GlusterFS 服务端yum install -y glusterfs-server# 启动并设置开机自启systemctl enable --now glusterd# 验证服务状态(确保 Active: active (running))
systemctl status glusterd

三、防火墙详细配置(两台节点均执行)

GlusterFS 需要开放以下端口:

  • • 24007/tcp:集群管理端口

  • • 24008/tcp:节点间通信端口

  • • 49152-49156/tcp:数据传输端口(动态范围)

# 开放 GlusterFS 必需端口
sudo firewall-cmd --permanent --add-port=24007/tcp
sudo firewall-cmd --permanent --add-port=24008/tcp
sudo firewall-cmd --permanent --add-port=49152-49156/tcp# 允许节点间 SSH 通信(便于管理)
sudo firewall-cmd --permanent --add-service=ssh# 重新加载防火墙规则
sudo firewall-cmd --reload# 验证开放的端口
sudo firewall-cmd --list-ports
# 预期输出包含:24007/tcp 24008/tcp 49152-49156/tcp

四、建立 GlusterFS 集群信任关系

1. 节点间互相认证(仅在节点 1 执行)
# 探测节点2,建立信任关系
sudo gluster peer probe gluster-node2# 验证集群状态(显示节点2为 "Peer in Cluster")
sudo gluster peer status
2. 检查集群状态(两台节点均执行)
sudo gluster peer status
# 节点1输出示例:
# Number of Peers: 1
# Hostname: gluster-node2
# Uuid: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
# State: Peer in Cluster (Connected)

五、准备存储目录(两台节点均执行)

# 创建存储目录(GlusterFS 数据存储位置)
sudo mkdir -p /data/gluster/brick1# 设置目录权限(确保 GlusterFS 进程可访问)
sudo chown -R root:root /data/gluster
sudo chmod -R 755 /data/gluster# 验证目录权限
ls -ld /data/gluster/brick1
# 预期输出:drwxr-xr-x 2 root root ... /data/gluster/brick1

六、创建 GlusterFS 复制卷(高可用)

1. 创建卷(仅在节点 1 执行)
# 创建 replica 2 复制卷(数据在两台节点同步)
sudo gluster volume create gv0 replica 2 \gluster-node1:/data/gluster/brick1 \gluster-node2:/data/gluster/brick1 \force# 启动卷
sudo gluster volume start gv0# 验证卷状态(确保 "Status: Started")
sudo gluster volume info gv0
2. 卷配置说明
  • • replica 2:数据在两台节点实时同步,确保单节点故障时数据不丢失

  • • gv0:卷名称(可自定义)

  • • force:忽略目录非空警告(首次创建时目录为空,可选)

七、测试 GlusterFS 集群

1. 在客户端挂载卷(可在任意节点或第三方服务器执行)
# 安装 GlusterFS 客户端
sudo dnf install -y glusterfs-client# 创建挂载点
sudo mkdir -p /mnt/glusterfs# 临时挂载卷(通过节点1挂载)
sudo mount.glusterfs gluster-node1:/gv0 /mnt/glusterfs# 验证挂载(显示卷容量)
df -h /mnt/glusterfs
# 预期输出:gluster-node1:/gv0  <总容量>  0  <总容量>  0% /mnt/glusterfs
2. 测试数据同步
# 在挂载点创建测试文件
sudo touch /mnt/glusterfs/test.txt
sudo echo "GlusterFS 集群测试" > /mnt/glusterfs/test.txt# 查看文件内容
cat /mnt/glusterfs/test.txt# 在节点2的存储目录验证文件是否同步
cat /data/gluster/brick1/test.txt
# 预期输出:GlusterFS 集群测试(与节点1内容一致)
3. 设置永久挂载(客户端执行)
# 编辑 /etc/fstab,添加自动挂载
sudo echo "gluster-node1:/gv0 /mnt/glusterfs glusterfs defaults,_netdev 0 0" >> /etc/fstab# 验证自动挂载(重启后生效)
sudo mount -a

八、集群维护常用命令

# 查看卷状态
sudo gluster volume status# 停止卷(维护时使用)
sudo gluster volume stop gv0# 扩容卷(添加新节点后执行)
sudo gluster volume add-brick gv0 gluster-node3:/data/gluster/brick1# 修复数据不一致(节点故障恢复后)
sudo gluster volume heal gv0 full

注意事项

  1. 1. 脑裂风险:双节点复制卷(replica 2)存在脑裂风险(网络中断时两端独立写入),生产环境建议扩展为 3 节点 replica 3 或 arbiter 卷。

  2. 2. 防火墙:若后续修改节点 IP 或端口,需同步更新防火墙规则。

  3. 3. 存储性能:建议使用独立磁盘挂载 /data/gluster,避免与系统盘共用 IO。

http://www.dtcms.com/a/333766.html

相关文章:

  • 【SpringBoot】SpringBoot 整合JDBC、Mybatis、Druid
  • PCA降维理论详解
  • Spring Boot 拦截器详解
  • 固定资产管理系统 OCR 识别功能技术解析
  • 无脑整合springboot2.7+nacos2.2.3+dubbo3.2.9实现远程调用及配置中心
  • 强制从不抱怨环境。
  • [Julia] 网络和流
  • vue2 + SimpleMindMap 制作思维导图
  • 野指针:程序崩溃的隐形杀手
  • 订单状态定时处理(Spring Task 定时任务)
  • 机械学习---词向量转化评价,附代码实例
  • 力扣(接雨水)——单调栈
  • 第454题.四数相加II
  • JavaWeb开发_Day12
  • 基于Selenium的web自动化框架
  • 电视同轴电缆全面指南:从基础到应用,批量测量一键计量
  • 第四章:大模型(LLM)】06.langchain原理-(2)langchain Chain的使用方法
  • 力扣top100(day04-03)--二分查找
  • MqSQL中的《快照读》和《当前读》
  • [论文笔记] WiscKey: Separating Keys from Values in SSD-Conscious Storage
  • Linux core dump
  • Flutter开发 webview_flutter的基本使用
  • MC0423铺砖块
  • Linux系统编程—Linux基础指令
  • OpenCV Python——图像查找(特征匹配 + 单应性矩阵)
  • Linux软件编程(五)(exec 函数族、system、线程)
  • SQL:生成日期序列(填补缺失的日期)
  • 磁悬浮轴承“幽灵振动”克星:深度解析同频振动机理与精准打击策略
  • 优先级反转问题
  • [Python 基础课程]根据描述定义一个 Person 类