更新时间:2024-01-12 GMT+08:00
分享

通过CDN加速OBS视频点播

应用场景

传统的点播服务会加大服务器的负载,并消耗巨大的带宽资源,同时又无法保证终端用户访问时需要的高速体验。

将数据存放在OBS中然后通过配置CDN加速,这样构造的业务系统可以在降低成本的同时,提高终端用户使用感受。

本方案适用于提供音视频点播服务的客户。例如:在线教育类网站、在线视频分享网站、互联网电视点播平台、音乐视频点播APP等。

方案架构

图1 视频点播加速架构图
  1. 客户在CDN控制台配置加速域名。
  2. 终端用户A通过浏览器或APP发出请求数据,经DNS解析转向CDN节点。
  3. CDN节点从OBS桶中拉取数据,OBS返回数据。
  4. 数据返回至终端用户A。
  5. 终端用户B访问同一数据,通过浏览器或APP发出请求数据,经DNS解析转向CDN节点。
  6. 经过终端用户A的访问,CDN节点有缓存数据,直接返回所需数据至终端用户B。

方案优势

  • OBS安全、高可靠且低成本,可以节省存储费用。
  • 通过分布在各个区域的CDN节点,将音视频内容扩展到距离终端用户较近的地方,用户可以享受更加流畅的点播体验。
  • 华为云CDN与华为云OBS通过内网连接,节省带宽费用。

综上,客户可以通过更低的费用,为终端用户提供更加优质的视频点播服务。

约束与限制

  • 支持CDN加速的区域:华北-北京一、华北-北京四、华东-上海一、华南-广州、华南-广州-友好用户环境、西南-贵阳一。
  • 只有桶版本号为3.0及以上的桶支持此方案。

    桶版本号可以在OBS控制台上,进入桶概览页面后,在“基本信息”中查看。

资源与成本规划

本节介绍最佳实践中资源规划情况,包含以下内容:
表1 资源和成本规划内容说明

维度

说明

资源规划

必选

  • OBS:存放图片、软件包等静态资源的桶,存储类别为“标准存储”或“低频访问存储”(归档与深度归档存储不支持直接配置CDN加速),桶策略为“私有”。
  • CDN:提供点播加速。
  • DNS:通过在域名服务商处配置CNAME记录,将加速域名以CNAME方式指向CDN服务中对应的CNAME域名,域名解析生效后,该域名的所有请求都将转向CDN节点。
  • 网站域名:根据中国《互联网管理条例》的要求,此域名必须在工信部已备案并在有效期内才可以使用CDN加速。

成本规划

必选

可选

回源流量包:当回源获取数据时,CDN访问OBS会产生回源流量。OBS提供回源流量包,可以减少回源流量产生的流量费用。

须知:

本文提供的成本预估费用仅供参考,资源的实际费用以华为云管理控制台显示为准。

操作流程

实施步骤

  1. (可选)购买CDN回源流量包

    当回源获取数据时,CDN访问OBS会产生回源流量。OBS提供回源流量包,可以减少回源流量产生的流量费用。
    1. 进入购买资源包页面
    2. 根据实际业务需求配置以下参数。
      • 区域:选择待配置CDN加速的桶所在区域。
      • 资源包类型:选择“回源流量包”。
      • 每月流量:根据每月实际流量使用情况选择合适的规格。
      • 购买数量:输入购买回源流量包的数量。与每月流量结合,以组成不同规格的回源流量包。例如购买2个每月1TB的回源流量包,则实得流量为2TB。
      • 购买时长:选择需要购买的回源流量包时长。
      • 生效时间:根据实际情况选择“支付完成后立即生效”或“指定生效时间”。
    3. 单击“加入清单”。
    4. 在右侧资源包清单中确认资源包信息,单击“立即购买”。

  2. 配置CDN点播加速

    OBS支持域名管理功能,在OBS上绑定用户域名即可实现使用自定义域名访问OBS,并可以在绑定后配置CDN加速。
    1. 登录华为云控制台,在控制台首页选择“存储 > 对象存储服务 OBS”,进入OBS管理控制台。
    2. 单击存放软件包的桶名称,此处以“my-video”为例。
    3. 在左侧导航栏选择“域名管理”,单击“配置加速域名”。
    4. 在“配置加速域名”弹框中配置CDN加速信息,如图2所示。
      • 服务范围:根据需要选择。
      • 业务类型:选择“点播加速”。
      • 加速域名:输入视频网站域名,此处以“click.my-video.com”为例。
      图2 配置加速域名
    5. 单击“确定加速”。

  3. 配置CNAME

    在OBS绑定用户域名并配置CDN加速后,CDN会自动生成一条CNAME域名。通过在域名服务商处配置CNAME记录,将加速域名以CNAME方式指向CDN服务中对应的CNAME域名,域名解析生效后,该域名的所有请求都将转向CDN节点。本示例中自动生成的CNAME域名为“click.my-video.com.c.cdnhwc1.com”

    不同DNS服务商的CNAME配置方式不同,此处以华为云云解析服务为例。其他DNS服务商的CNAME配置方法可参考配置CNAME域名解析
    1. 登录华为云控制台,在控制台首页选择“网络 > 云解析服务 DNS”,进入云解析服务页面。
    2. 在左侧菜单栏中,选择“公网解析”,进入公网域名列表页面。
    3. 在待添加记录集的域名所在行,单击“域名”列的域名名称。本实践中对应的域名为“my-video.com.”
    4. 单击“添加记录集”,进入“添加记录集”页面。
    5. 根据界面提示填写参数配置,参数信息如表2所示。下表中未提到的参数可保持默认值。
      表2 参数说明

      参数

      参数说明

      取值样例

      主机记录

      主机记录指域名前缀。

      click

      类型

      记录集的类型,此处为CNAME类型。

      CNAME-将域名指向另外一个域名

      别名

      用于是否将此记录集关联至云服务资源实例。

      线路类型

      用于DNS服务器在解析域名时,根据访问者的来源,返回对应的服务器IP地址。

      添加解析线路类型时,切记先添加默认线路类型,以保证网站可访问。

      全网默认

      TTL(秒)

      TTL指解析记录在本地DNS服务器的有效缓存时间。如果您的服务地址经常更换,建议TTL值设置相对小些,反之,建议设置相对大些。

      默认为“5分钟”,即300s

      需指向的域名。

      若没有开启CDN加速,该值为桶访问域名;若开启CDN加速后,该值为CDN分配的CNAME域名。

      click.my-video.com.c.cdnhwc1.com

    6. 单击“确定”,完成添加。
    7. 验证CNAME配置是否生效。

      打开Windows操作系统中的cmd程序,输入如下指令:

      nslookup -qt=cname 桶绑定的自定义域名

      本实践中桶绑定的自定义域名为“click.my-video.com”。如果回显CDN分配的CNAME域名,则表示CNAME配置已经生效。

  4. 开启私有桶回源

    由于当前存储软件包的桶为私有桶,需要前往CDN开启私有桶回源,CDN才能从OBS中回源获取数据。

    1. 登录华为云控制台,在控制台首页选择“存储 > CDN”,进入CDN控制台。
    2. 在左侧菜单栏中,选择“域名管理”。
    3. 在域名列表中,单击需要修改的域名或域名所在行的“设置”,进入域名配置页面。本实践中对应的域名为“click.my-video.com”
    4. 选择“回源配置”页签。
    5. 在私有桶回源配置模块,选择开启私有桶回源配置开关。

      若您账号下的此域名是初次配置OBS私有桶回源,您还需要先对CDN进行云资源委托授权,授权成功后CDN将有权限访问您账号下的OBS私有桶。

      1. (仅初次配置时需要)单击“立即授权”,弹出云资源委托授权对话框。
      2. (仅初次配置时需要)单击“同意授权”,系统将为您在IAM委托中创建名为“CDNAccessPrivateOBS”的委托关系,允许CDN访问您的OBS私有桶。

        请勿删除CDN针对OBS的委托关系,否则会导致CDN无法在回源时从OBS私有桶获取相应资源。

      3. 开启OBS私有桶回源开关。

  5. 配置点播URL

    将代码中需要点播加速的文件URL地址配置为:视频网站域名+文件在OBS桶中的存储路径+文件名称。

    步骤2配置的视频网站域名click.my-video.com以及存储在my-video桶中的video/3.2.1/文件夹下的introduction.mp4文件为例,文件点播URL的配置如下:

    https://click.my-video.com/video/3.2.1/introduction.mp4

  6. 配置OBS高级桶策略,避免私有桶内对象被匿名用户列举

    开启私有桶回源后,任何匿名用户访问桶的自定义域名(CDN加速域名),均可以成功列举桶根目录中的对象,导致对象列表暴露在公网。因此,如果不希望任何人都能列举桶内对象,还需要配置两条高级桶策略,仅允许指定用户列举桶内对象。

    1. 登录华为云控制台,在控制台首页选择“存储 > 对象存储服务 OBS”,进入OBS管理控制台。
    2. 单击存放软件包的桶名称(即开启了私有桶回源的OBS桶),本例中为“my-video”
    3. 在左侧导航栏选择“访问权限控制 > 桶策略”。
    4. 单击“创建”,创建第一条桶策略。
    5. 根据使用习惯,策略配置方式以可视化视图为例。单击“可视化视图”。
    6. 配置如下参数。
      本条策略的含义:除了指定的用户外,其他任何人都没有桶的列举权限(List*)。
      表3 桶策略参数配置说明

      参数

      说明

      策略名称

      输入自定义的桶策略名称

      策略内容

      效力

      拒绝

      被授权用户

      • 被授权用户:当前账号
      • 子账号:选择允许列举桶内对象的用户。可根据实际业务需要,选择与账号同名的IAM用户或其他IAM用户

      授权资源

      • 资源范围:当前桶

      授权操作

      • 动作范围:自定义配置
      • 选择动作:List*

      高级设置-排除策略(可选)

      • 勾选:排除以上被授权用户
    7. 单击右下角的“创建”,完成第一条桶策略创建。
    8. 再次单击“创建”,创建第二条桶策略。
    9. 根据使用习惯,策略配置方式以可视化视图为例。单击“可视化视图”。
    10. 配置如下参数。
      本条策略的含义:允许指定的用户拥有桶的列举权限(List*)。此处指定的用户需要和上一条策略保持一致。

      Q:为什么还要配置第二条允许列举的桶策略?

      A:由于在控制台普通模式下创建桶策略,被授权用户无法指定到当前账号本身。所以在第一条桶策略中,被授权用户无论选择与账号同名的IAM用户或其他IAM用户,实际都把当前账号本身排除在外了。这些IAM用户之前有私有桶的列举权限,是因为账号在IAM中进行了授权。但在第一条桶策略配置完成后,账号本身不再有列举权限,导致无法给这些IAM用户授予列举权限,所以当前这些IAM用户的列举权限为默认Deny。基于显示Deny > Allow > 默认Deny的原则,还需要配置一条允许列举的桶策略,才能让这些IAM用户实现正常列举。

      表4 桶策略参数配置说明

      参数

      说明

      策略名称

      输入自定义的桶策略名称

      策略内容

      效力

      允许

      被授权用户

      • 被授权用户:当前账号
      • 子账号:选择允许列举桶内对象的用户。需要和第一条桶策略保持一致

      授权资源

      • 资源范围:当前桶

      授权操作

      • 动作范围:自定义配置
      • 选择动作:List*
    11. 单击右下角的“创建”,完成第二条桶策略创建。
    12. 登录CDN控制台,在“预热刷新 > 缓存刷新”中,刷新CDN缓存,使桶策略在CDN加速域名生效。

      刷新缓存时选择“URL”类型,输入的URL为配置文件点播URL中添加的文件点播URL,本例中为:

      https://click.my-video.com/video/3.2.1/introduction.mp4

  7. 验证业务

    待视频网站重新部署后,登录视频网站,点播视频文件。

    如果视频可以成功点播,则表示加速配置成功。

分享:

    相关文档

    相关产品