GlusterFS搭建

操作系统GlusterFS 版本服务器 IP 地址主机名存储路径存储大小
Fedora 4211.1-8.fc4210.165.19.30glusterfs-server1/
/data/brick1
50G (系统)
199G (GlusterFS 数据盘)
Fedora 4211.1-8.fc4210.165.19.31glusterfs-server2/
/data/brick1
50G (系统)
199G (GlusterFS 数据盘)
Fedora 4211.1-8.fc4210.165.19.32glusterfs-server3/
/data/brick1
50G (系统)
199G (GlusterFS 数据盘)

请注意: GlusterFS官方文档不建议将数据盘和系统文件划分为一个分区

步骤一: 服务器环境准备

  1. 修改服务器名

    # 设置名字,根据不同的服务器均需改名
    hostnamectl set-hostname glusterfs-server1
    # 刷新名字
    exec bash
    # 查看系统信息
    hostnamectl
    
  2. 配置hosts文件

    vim /etc/hosts
    10.165.19.30 glusterfs-server1
    10.165.19.31 glusterfs-server2
    10.165.19.32 glusterfs-server3
    
  3. 配置网络

    [root@localhost system-connections]# cd /etc/NetworkManager/system-connections/
    [root@localhost system-connections]# ls
    ens33.nmconnection
    [root@localhost system-connections]# vim ens33.nmconnection
    [connection]
    id=ens33
    uuid=b0985e9c-6d27-3de9-97b4-7c6c0e0cb6af
    type=ethernet
    autoconnect-priority=-999
    interface-name=ens33
    
    [ethernet]
    
    [ipv4]
    method=manual # 配置成手动
    addresses=10.165.19.30/24 # 配置固定IP
    gateway=10.165.19.254 # 配置网关
    dns=10.165.19.245 # 配置DNS
    
    [ipv6]
    addr-gen-mode=eui64
    method=auto
    
    [proxy]
    [root@localhost system-connections]# systemctl restart NetworkManager
    
  4. 关闭防火墙

    # 查看防火墙状态
    systemctl status firewalld
    # 关闭防火墙
    systemctl stop firewalld
    # 禁止开机启动防火墙
    systemctl disable firewalld
    
  5. 访问服务器web管理界面

    可以通过该网络查看cockpit管理界面, 此步骤与安装GlusterFS无关, 仅做记录

    访问以下地址:
    https://10.165.19.30:9090/
    如果遇到无法使用root登录, 注释root再尝试打开页面。

    # 注释root, 应该就可以打开了。
    vim /etc/cockpit/disallowed-users
    # root
    # 确认cockpit是否运行, 如果还是无法打开可以考虑将cockpit打开。
    systemctl start cockpit
    
  6. 确认交换空间
    确认交换空间是zram还是磁盘类型的, zram类型的无需执行关闭交换空间。

    # 查看分区如果是zram是属于内存压缩交换, 通常不需要关闭
    swapon --show
    # 如果是磁盘类型的交换空间则需要关闭
    swapoff -a
    vim /etc/fstab
    # 注释下列行
    # /dev/mapper/centos-swap swap swap defaults 0 0
    # 调整swappiness参数
    echo vm.swappiness=0 >> /etc/sysctl.conf
    # 使配置生效
    sysctl -p
    # 确认swap分区已关闭
    free -m
    

步骤二: GlusterFS分区准备

  1. 新建分区并挂载
    查看磁盘, 找到需要分区的磁盘。

    # 列出有几块磁盘大小
    lsblk -d -o NAME,SIZE,MODEL
    # 列出所有磁盘和分区
    fdisk -l
    # 查看磁盘挂载
    lsblk
    
  2. 将sda剩余空间创建新的分区

    fdisk /dev/sda # 确定是/dev/sda还是/dev/sdb
    
    Command (m for help): n        ← 输入 `n` 表示新建一个分区
    Partition type:
       p   primary (1 primary, 0 extended, 3 free)
       e   extended
    Select (default p):            ← 直接按 Enter 选择默认的主分区
    Partition number (4-4): 4      ← 创建 sda4,fdisk 会自动建议编号
    First sector (xxxxx-xxxxx):    ← 默认即可,直接回车
    Last sector, +size or +sizeM or +sizeG:        ← 输入你想要的大小(如 +100G),或直接回车用完全部剩余空间
    Command (m for help): w        ← 输入 `w` 保存更改并退出
    
  3. 将新创建的分区, 初始化使用。

    # 对 /dev/sdb1 分区格式化为 XFS 文件系统,设置 inode 大小为 512 字节
    mkfs.xfs -i size=512 /dev/sda4
    
    # 创建挂载点目录 /data/brick1(如果 /data 不存在,也会一并创建)
    mkdir -p /data/brick1
    
    # 将挂载配置添加到 /etc/fstab,实现开机自动挂载
    # 含义:将 /dev/sda4 挂载到 /data/brick1,文件系统为 xfs,使用默认挂载选项,开机时挂载顺序为第2
    echo '/dev/sda4 /data/brick1 xfs defaults 0 2' >> /etc/fstab
    
    # 立即挂载所有未挂载但已写入 /etc/fstab 的文件系统
    # 然后显示当前已挂载的所有文件系统,用于验证
    mount -a && mount
    

步骤三: GlusterFS服务搭建

手动安装指定的GlusterFS版本, 此文档不演示手动安装指定版本, 只告诉方法:

RPM包: https://download.gluster.org/pub/gluster/glusterfs/

# 下载指定版本的rpm包
wget https://download.gluster.org/pub/gluster/glusterfs/10/10.4/Fedora/glusterfs-server-10.4-1.fc38.x86_64.rpm
# 安装指定版本的rpm包
dnf install ./glusterfs-server-10.4-1.fc38.x86_64.rpm
  1. 安装GlusterFS

    # 安装软件
    dnf install glusterfs-server
    # 启动 GlusterFS 管理守护进程:
    systemctl start glusterd
    # 检查守护进程的状态:
    systemctl status glusterd
    # 配置开机启动
    systemctl enable glusterd
    

    应该看到类似这样的内容:

    glusterd.service - LSB: glusterfs server
           Loaded: loaded (/etc/rc.d/init.d/glusterd)
       Active: active (running) since Mon, 13 Aug 2012 13:02:11 -0700; 2s ago
       Process: 19254 ExecStart=/etc/rc.d/init.d/glusterd start (code=exited, status=0/SUCCESS)
       CGroup: name=systemd:/system/glusterd.service
           ├ 19260 /usr/sbin/glusterd -p /run/glusterd.pid
           ├ 19304 /usr/sbin/glusterfsd --xlator-option georep-server.listen-port=24009 -s localhost...
           └ 19309 /usr/sbin/glusterfs -f /var/lib/glusterd/nfs/nfs-server.vol -p /var/lib/glusterd/...
    
  2. 配置可信池
    可以是任意一台执行, 注意修改节点名字即可。
    glusterfs-server1执行:

    gluster peer probe glusterfs-server2
    gluster peer probe glusterfs-server3
    

    glusterfs-server2执行:

    gluster peer probe glusterfs-server1
    

    查看对等状态

    gluster peer status
    
  3. 设置GlusterFS 卷
    所有服务器执行:

    mkdir -p /data/brick1/gv0
    

    任意单台服务器执行:
    请注意: replica 3为3副本, 如果不打算设置副本可以省去replica 3参数, 以下为省去replica 3参数命令。
    请注意: 单副本和三副本根据需求选择性执行一个
    单副本, 分布式存储:

    # 创建gv0卷, replica 3为三分副本
    gluster volume create gv0 glusterfs-server1:/data/brick1/gv0 glusterfs-server2:/data/brick1/gv0 glusterfs-server3:/data/brick1/gv0
    

    三副本示例:

    # 创建gv0卷, replica 3为三分副本
    gluster volume create gv0 replica 3 glusterfs-server1:/data/brick1/gv0 glusterfs-server2:/data/brick1/gv0 glusterfs-server3:/data/brick1/gv0
    # 启动新创建的卷
    gluster volume start gv0
    # 确认卷是否启动
    gluster volume info
    

    信息确认:

    应该会看到类似这样的内容(卷 ID 会有所不同)

    Volume Name: gv0
    Type: Replicate
    Volume ID: f25cc3d8-631f-41bd-96e1-3e22a4c6f71f
    Status: Started
    Snapshot Count: 0
    Number of Bricks: 1 x 3 = 3
    Transport-type: tcp
    Bricks:
    Brick1: glusterfs-server1:/data/brick1/gv0
    Brick2: glusterfs-server2:/data/brick1/gv0
    Brick3: glusterfs-server3:/data/brick1/gv0
    Options Reconfigured:
    transport.address-family: inet
    

步骤四: 存储验证

  1. 挂载目录并写入文件
    # 创建挂载目录
    mkdir /mnt/gluster-test
    # 将创建的存储集群挂载到刚刚创建的目录上面
    mount -t glusterfs glusterfs-server1:/gv0 /mnt/gluster-test
    # 写入100个文件
    for i in `seq -w 1 100`; do cp -rp /var/log/messages /mnt/gluster-test/copy-test-$i; done
    # 确认写入的文件是100个
    ls -lA /mnt/gluster-test/copy* | wc -l
    
  2. 验证数据

    在每台节点执行验证

    # 确认是否为100个文件, 如果是3副本每台则是100个文件。
    ls -lA /data/brick1/gv0/copy*
    

清理卷 慎重

此命令会将brick gv0重置, 在需要重建创建集群时选择使用。

# 停止卷
gluster volume stop gv0
# 删除卷
gluster volume delete gv0
# 清理旧brick目录
rm -rf /data/brick1/gv0

单副本剔除节点

这里演示的剔除glusterfs-server1节点

  1. 确认当前卷信息 与 存储的信息
    glusterfs-server1节点执行 可在任意节点执行

    gluster volume info gv0
    gluster volume status gv0
    # 如果是生产环境请确认每个节点的数据数量,显示文件和文件夹数量。
    ls -1A /data/brick1/gv0 | wc -l
    
  2. 手动迁移文件到glusterfs-server2的brick
    在glusterfs-server1节点执行

    rsync -av --remove-source-files /data/brick1/gv0/ root@glusterfs-server2:/data/brick1/gv0/
    
  3. 从该卷中移除指定的brick
    在glusterfs-server2或者glusterfs-server3执行均可

    # 移除glusterfs-server1 brick
    gluster volume remove-brick gv0 glusterfs-server1:/data/brick1/gv0 start
    # 提交移除信息
    gluster volume remove-brick gv0 glusterfs-server1:/data/brick1/gv0 commit
    # 剔除可信池
    gluster peer detach glusterfs-server1
    
  4. : 验证卷状态
    在glusterfs-server2或者glusterfs-server3执行均可

    gluster volume info gv0
    gluster volume status gv0
    

添加节点

以glusterfs-server1为例添加新节点

  1. 添加可信池
    在现有任意节点执行
    # 在任意节点执行添加可信池
    gluster peer probe glusterfs-server1
    
    # 确认可信池是否被正常添加
    gluster peer status
    
  2. 新节点准备brick目录
    在新节点执行
    # 创建brick目录
    mkdir -p /data/brick1/gv0
    
    在现有节点执行
    # 添加glusterfs-server1的brick目录
    gluster volume add-brick gv0 glusterfs-server1:/data/brick1/gv0
    
    新节点执行: 如添加节点brick目录报错,删除该目录下的原数据
    rm -rf /data/brick1/gv0/.glusterfs
    
  3. 手动触发rebalance(重新分布文件)
    任意节点可执行
    # 在任意节点手动触发rebalance(重新分布文件)
    gluster volume rebalance gv0 start
    # 查看rebalance状态
    gluster volume rebalance gv0 status
    # 在glusterfs-server1节点执行查看文件数量, 确认否重新分布
    ls -1A /data/brick1/gv0 | wc -l
    
  4. 在挂载的节点上执行, 查看指定文件在那个节点存储
    getfattr -n trusted.glusterfs.pathinfo  /mnt/gluster-test/copy-test-001
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值