域名分发的使用教程
7 个月前
提示:如果你对分发不是很了解,请耐心看完,相信聪明的你很快就懂了

功能简介

该功能就是实现负载均衡,原理就是当用户从前端请求m3u8的时候,会从多个服务器随机读取ts切片,从而改善服务器的负载、带宽不足的情况。

特别提示

1、本文以服务器分发做参考教程,所以配置过程可能会麻烦点。
2、你也可以使用云分发存储功能,将切片同步到阿里云oss、七牛云、又拍等,然后在分发设置处直接填上阿里云oss、七牛云的域名即可。

设置分发前后的m3u8加载过程

一般我们安装完程序,都是转码切片后,直接使用m3u8播放地址观看,这时候m3u8加载过程如下:

比如我的m3u8链接地址如下:
http://moemv.com/videos/201910/28/5db7045f57112a77e0aca6df/6agc5a/index.m3u8
当用户读取m3u8后,会加载同文件下的ts文件,才开始播放,也就是需要读取全部的ts链接才能完整播放,链接大致如下:
http://moemv.com/videos/201910/28/5db7045f57112a77e0aca6df/6agc5a/index0.ts
http://moemv.com/videos/201910/28/5db7045f57112a77e0aca6df/6agc5a/index1.ts
http://moemv.com/videos/201910/28/5db7045f57112a77e0aca6df/6agc5a/index2.ts
http://moemv.com/videos/201910/28/5db7045f57112a77e0aca6df/6agc5a/index3.ts

如果观看用户多了后,带宽跟不上了,负载高了,这时候可以添加几个分发域名(服务器),比如我设置如下:

此时,m3u8加载和分发前就不一样了,加载过程如下:

比如我的m3u8链接地址如下:
http://moemv.com/videos/201910/28/5db7045f57112a77e0aca6df/6agc5a/index.m3u8
当用户读取m3u8后,这时候会分别从你添加的分发域名(服务器)读取全部的ts链接,才开始播放,链接大致如下:
http://a.moemv.com/videos/201910/28/5db7045f57112a77e0aca6df/6agc5a/index0.ts
http://b.moemv.com/videos/201910/28/5db7045f57112a77e0aca6df/6agc5a/index1.ts
http://a.moemv.com/videos/201910/28/5db7045f57112a77e0aca6df/6agc5a/index2.ts
http://b.moemv.com/videos/201910/28/5db7045f57112a77e0aca6df/6agc5a/index3.ts

这里就可以看到,设置分发前后,只是加载ts链接的域名变化了,路径都不变。

也就是,你只需要保证用户能从分发域名(服务器)中,读取到全部的ts切片,就可以完美实现分发播放。

所以,这里我们就需要先将转码服务器的全部的ts切片同步到分发服务器,然后解析域名到分发服务器,方便给用户读取ts

提示:这里也可以通过cdn域名实现分发,也就是cdn需要缓存全部的ts切片,并且域名可以读取到这些ts切片。

同步切片到分发服务器

提示:如果你想设置多台分发服务器,那么就同步切片到多台服务器。

同步教程文档已经说的很清楚了,前往该处查看→【实时同步教程】。

这里要注意的是,设置同步文件夹的时候,请同步转码的public文件夹,比如:

我的高级版路径为/home/express-ffmpeg,那么我就同步/home/express-ffmpeg/public文件夹

在分发服务器中绑定分发域名

我通过同步操作已经将转码服务器的全部ts切片实时同步到了分发服务器,这时候我就需要在分发服务器绑定域名(也可以称为分发域名),才能给用户读取到这些ts文件,从而实现观看。

绑定操作的话,只需要有一个web服务器就行了,比如我们常用的nginxapache,这里就使用宝塔面板

使用SSH登录分发服务器,使用命令安装宝塔面板:

#CentOS系统
wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
#Ubuntu系统
wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh
#Debian系统
wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && bash install.sh

安装完成后,记住宝塔面板登录信息,忘记了的,可以使用bt default命令查看。

然后登录宝塔,点击左侧安全,放行实时同步的9000端口。

再点击左侧软件商店,然后安装Nginx

接下来解析一个域名到服务器ip,再点击面板左侧网站,添加站点。

该域名对转码服务器来说,也就是分发域名

记得添加域名的时候,根目录设置成同步过来的切片存储目录,就拿我提供的minio同步方式来说:

1、我在远程服务器,也就是现在说的分发服务器安装minio服务端的时候,设置本地存储目录为/home/express-ffmpeg
2、我在转码服务器配置同步备份的时候,设置的远程存储目录为evf,那么就会同步到远程服务器的/home/express-ffmpeg/evf目录。
3、即/home/express-ffmpeg/evf就是我们的域名需要绑定的根目录。

这里我的转码服务器的切片所在public文件夹都同步到了该目录:

然后我添加站点的时候,根目录设置/home/express-ffmpeg/evf即可。

设置好了后,分发域名也就是分发服务器设置成功。

怎么验证是否设置成功?方法如下:

1、比如我随便从转码服务器的后台拿一个可以播放的m3u8链接,如下:
http://moemv.com/videos/201910/28/5db7045f57112a77e0aca6df/6agc5a/index.m3u8

2、我将该m3u8的域名,也就是转码服务器的域名,换成我刚刚在分发服务器上绑定的域名a.moemv.com。
http://a.moemv.com/videos/201910/28/5db7045f57112a77e0aca6df/6agc5a/index.m3u8

3、如果换了分发服务器的域名后,该地址可以播放或者下载,则设置成功。

在转码后台添加分发域名

提示:域名分发的设置请前往转码设置处,如果你想设置多个分发域名,那么依次给分发服务器做同步+绑定域名即可。

关于分发域名的设置和使用,注意以下几点:

1、只要开启了域名分发,那么用户在读取m3u8的时候,只会从这些设置的分发域名中读取ts链接,未添加的不会读取。
2、由于所有的ts切片默认存放在转码服务器中,所以我们也可以将转码服务器的域名添加到分发这里。

下面一般是我自用的分发设置,一般怎么设置就看你们的需求了。