超大容量的资源分发教程
6 个月前
提示:该教程适用于大几T,或者几十T的资源播放分发;等总控分布式开发完成可直接使用总控操作,更加方便。

说明

一般默认的分发设置为全局分发,也就是所有分发服务器必须都有同样的切片才能完整播放,这样当转码资源变的非常大后,很浪费服务器空间,所以这里推荐使用定向分发功能就行了。

定向分发说明

提示:定向分发就是如果开启并设置定向分发,则程序部分视频ts切片都会从分发域名读取。

定向分发可以说成是一个小范围的全局分发,比如我只给N部视频设置定向分发,则这N部视频会从分发服务器读取。

比如我总资源10T,同时在线人数1000人,按照一个300-400k左右计算,大概最高需要400M,也就是4G带宽的服务器,这样可以直接使用10G带宽的服务器,或者41G带宽的服务器分发,当然搞51G带宽的服务器更好,带宽尽量足就行。

提示:由于不好准确的分出对应大小的资源,所以定向操作最好刚开始转码的时候准备,等总控出来就方便了。

比如我程序安装到了/home目录,切片目录为/home/express-ffmpeg/public/videos,然后我准备的一个分发服务器容量为2T,则我先转码2T左右的视频。

转码的时候可以随时观察切片目录,使用SSH客户端登录转码服务器,使用命令:

du -sh /home/express-ffmpeg/public/videos

如果显示大小接近2T,由于计量显示,最好在1.7T的时候先停掉转码。

然后使用同步命令,将这些切片同步到分发服务器进行托管,同步操作如下:

1、先使用SSH客户端登录到分发服务器,安装一下rsync
#CentOS系统
yum install rsync -y
#Debian、Ubuntu系统
apt install rsync -y

2、再运行同步命令:
# 192.168.0.1为转码服务器ip,9999为转码服务器ssh端口,/home/express-ffmpeg/public/videos为转码服务器切片目录,/www为同步到分发服务器目录
rsync -av -e 'ssh -p 9999' root@192.168.0.1:/home/express-ffmpeg/public/videos /www

等到全部同步完成后,再到分发服务器里安装nginx,解析一个域名作为分发域名,根目录为同步过来的文件夹,且包含videos文件夹即可。

提示:验证分发域名有没有配置成功,可以把转码服务器的某个视频的m3u8链接中的域名换成分发域名打开,如果可以播放,则没问题。

该分发服务器配置没问题后,可以删掉转码服务器的切片文件,节省转码服务器空间,在转码服务器里使用命令:

#该脚本默认只删除ts后缀的切片文件,其它不删除
curl -sL https://download.zhuanma.org/moeapp/shell/delts.sh | bash -s /home/express-ffmpeg/public/videos

运行命令前将后面的/home/express-ffmpeg/public/videos修改成你实际的切片目录,然后直到脚本运行结束。

最后在后台筛选出转码完成的视频,数量显示100,批量全部选中,点击下方的定向分发,批量设置为刚刚配置好的分发域名。

2T视频的定向分发全部配置完成后,需要点一下后台的全部正式发布,把转码完成状态变成finish,这样下次筛选转码完成的视频,可以过滤掉这一批已经设置过的视频。

然后接下来重复上面的操作即可,如果下一台分发服务器空间为1T,则随时观察切片目录,接近1T就把转码停掉,重复操作即可。

最后直到所有视频的定向分发全部设置完成,这样全部的视频,依次由这些分发服务器提供切片播放,带宽+容量也就依次被分担了。