Skip to content

组建分布式复制卷 #157

@igweek

Description

@igweek

实验题目:某大型视频网站“海量 UGC 视频”存储架构高可用升级实战

1. 企业真实场景(背景)

你是**某短视频平台(类似抖音/B站)**的初级存储工程师。

  • 业务现状:公司目前每天有数万名用户上传短视频(UGC)。目前视频存在一台单机服务器上,容量已经报警(10TB 快满了),且上周由于那台机器硬盘坏了,导致部分用户 4 小时无法看视频,遭到了大量投诉。
  • 老板的需求
    1. 空间要翻倍:现在的 10TB 不够,必须能横向扩展。
    2. 不能断流:坏掉 1 到 2 块硬盘,绝对不能影响用户刷视频。
    3. 成本控制:不能像银行那样搞三副本(太贵),要用 4 台机器实现双副本的平衡。
  • 你的任务:利用 4 台 Ubuntu 服务器,搭建一个 $2 \times 2$ 分布式复制卷,解决扩容与高可用的矛盾。

2. 实验详细步骤(保姆级指南)

第一阶段:环境初始化(Node1, Node2, Node3, Node4)

我们需要在 VMware 中模拟真实的“数据盘”与“系统盘”分离。

  1. 添加硬盘:在 VMware 虚拟机设置中,为 4 台机器各添加一块 10GB 的 SCSI 硬盘。
  2. 磁盘分区(所有节点执行)
    # 格式化新盘为 XFS(GlusterFS 官方推荐文件系统)
    sudo mkfs.xfs /dev/sdb
    
    # 创建物理挂载目录
    sudo mkdir -p /data/gluster_bricks
    
    # 挂载并设置开机自动挂载
    sudo mount /dev/sdb /data/gluster_bricks
    echo "/dev/sdb /data/gluster_bricks xfs defaults 0 0" | sudo tee -a /etc/fstab
  3. 安装 GlusterFS 服务(所有节点执行)
    sudo apt update && sudo apt install glusterfs-server -y
    sudo systemctl enable --now glusterd

第二阶段:构建集群骨架(仅在 Node1 执行)

建立“信任朋友圈”,让 4 台零散的机器变成一个整体。

  1. 添加节点
    sudo gluster peer probe 192.168.10.12  # Node2
    sudo gluster peer probe 192.168.10.13  # Node3
    sudo gluster peer probe 192.168.10.14  # Node4
  2. 检查集群状态
    sudo gluster peer status
    # 预期结果:Number of Peers: 3,且均为 Connected

第三阶段:创建分布式复制卷(核心逻辑)

这是本实验的“灵魂”。注意:Bricks 的输入顺序决定了谁和谁成对。

  1. 创建卷
    # replica 2 表示每份数据存 2 份。
    # 我们输入 4 个 brick,Gluster 会自动把前两个设为一对(组1),后两个设为一对(组2)。
    sudo gluster volume create video-storage replica 2 \
    192.168.10.11:/data/gluster_bricks/v1 \
    192.168.10.12:/data/gluster_bricks/v1 \
    192.168.10.13:/data/gluster_bricks/v2 \
    192.168.10.14:/data/gluster_bricks/v2 force
  2. 启动卷
    sudo gluster volume start video-storage

第四阶段:模拟业务接入(Client 节点执行)

假设 Client 是你的 Nginx 视频分发服务器

  1. 挂载存储
    sudo mkdir -p /var/www/videos
    sudo mount -t glusterfs 192.168.10.11:/video-storage /var/www/videos
  2. 容量确认
    df -h /var/www/videos
    # 结果应为 20GB(2组镜像,每组10G,相加得到20G)

3. 实验解释:为什么这能解决企业痛点?

A. 空间翻倍(分布式特性)

当你往 /var/www/videos 存入 video1.mp4video2.mp4 时:

  • 哈希算法可能把 video1 扔进 第 1 组(Node1/Node2)
  • video2 扔进 第 2 组(Node3/Node4)
  • 意义:你的存储空间不再受限于单台机器的硬盘,只要加组,空间就能无限增长。

B. 容灾演练(复制特性)

  • 场景一:Node1 宕机了
    • 解释:由于 Node2 有 Node1 的全量备份,用户在刷视频时完全感知不到故障。
  • 场景二:机房部分掉电(Node1 和 Node3 同时关机)
    • 解释:虽然坏了两台,但因为它们不属于同一个镜像对,视频依然全部可看
    • 结论:这就是分布式复制卷的强大之处,它比简单的 RAID 5 更灵活。

4. 实验总结报告要求

  1. 截图 1:执行 gluster volume info,证明卷类型是 Distributed-Replicate
  2. 截图 2:在挂载点创建 4 个文件,证明它们分别成对地出现在不同的机器物理目录中。
  3. 思考题:如果我想把可用空间提升到 30GB,我需要再增加几台服务器?(答案:2 台,组成第三个镜像对)。

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions