generated from Meekdai/Gmeek-template
-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Labels
Description
实验题目:某大型视频网站“海量 UGC 视频”存储架构高可用升级实战
1. 企业真实场景(背景)
你是**某短视频平台(类似抖音/B站)**的初级存储工程师。
- 业务现状:公司目前每天有数万名用户上传短视频(UGC)。目前视频存在一台单机服务器上,容量已经报警(10TB 快满了),且上周由于那台机器硬盘坏了,导致部分用户 4 小时无法看视频,遭到了大量投诉。
-
老板的需求:
- 空间要翻倍:现在的 10TB 不够,必须能横向扩展。
- 不能断流:坏掉 1 到 2 块硬盘,绝对不能影响用户刷视频。
- 成本控制:不能像银行那样搞三副本(太贵),要用 4 台机器实现双副本的平衡。
-
你的任务:利用 4 台 Ubuntu 服务器,搭建一个
$2 \times 2$ 分布式复制卷,解决扩容与高可用的矛盾。
2. 实验详细步骤(保姆级指南)
第一阶段:环境初始化(Node1, Node2, Node3, Node4)
我们需要在 VMware 中模拟真实的“数据盘”与“系统盘”分离。
- 添加硬盘:在 VMware 虚拟机设置中,为 4 台机器各添加一块 10GB 的 SCSI 硬盘。
- 磁盘分区(所有节点执行):
# 格式化新盘为 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
- 安装 GlusterFS 服务(所有节点执行):
sudo apt update && sudo apt install glusterfs-server -y sudo systemctl enable --now glusterd
第二阶段:构建集群骨架(仅在 Node1 执行)
建立“信任朋友圈”,让 4 台零散的机器变成一个整体。
- 添加节点:
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
- 检查集群状态:
sudo gluster peer status # 预期结果:Number of Peers: 3,且均为 Connected
第三阶段:创建分布式复制卷(核心逻辑)
这是本实验的“灵魂”。注意:Bricks 的输入顺序决定了谁和谁成对。
- 创建卷:
# 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
- 启动卷:
sudo gluster volume start video-storage
第四阶段:模拟业务接入(Client 节点执行)
假设 Client 是你的 Nginx 视频分发服务器。
- 挂载存储:
sudo mkdir -p /var/www/videos sudo mount -t glusterfs 192.168.10.11:/video-storage /var/www/videos
- 容量确认:
df -h /var/www/videos # 结果应为 20GB(2组镜像,每组10G,相加得到20G)
3. 实验解释:为什么这能解决企业痛点?
A. 空间翻倍(分布式特性)
当你往 /var/www/videos 存入 video1.mp4 和 video2.mp4 时:
- 哈希算法可能把
video1扔进 第 1 组(Node1/Node2)。 - 把
video2扔进 第 2 组(Node3/Node4)。 - 意义:你的存储空间不再受限于单台机器的硬盘,只要加组,空间就能无限增长。
B. 容灾演练(复制特性)
- 场景一:Node1 宕机了
- 解释:由于 Node2 有 Node1 的全量备份,用户在刷视频时完全感知不到故障。
- 场景二:机房部分掉电(Node1 和 Node3 同时关机)
- 解释:虽然坏了两台,但因为它们不属于同一个镜像对,视频依然全部可看!
- 结论:这就是分布式复制卷的强大之处,它比简单的 RAID 5 更灵活。
4. 实验总结报告要求
- 截图 1:执行
gluster volume info,证明卷类型是Distributed-Replicate。 - 截图 2:在挂载点创建 4 个文件,证明它们分别成对地出现在不同的机器物理目录中。
- 思考题:如果我想把可用空间提升到 30GB,我需要再增加几台服务器?(答案:2 台,组成第三个镜像对)。
Reactions are currently unavailable