背景介绍
现在越来越多的行业使用obs存储图片、视频、软件包等静态资源文件,并将obs作为网站、论坛、app、游戏等业务的存储源。在需要获取这些静态资源时,用户通过url直接从obs请求数据,数据请求过程如图1所示。obs能够很好的解决本地存储不够用的难题,但一般情况下文件只存储在一个区域,不同区域的用户访问obs的响应速度存在差异。在需要频繁访问的场景下,直接访问obs来获取相应文件,还会消耗大量的流量费用。
图1 从obs获取数据过程
方案说明
obs提供低成本的存储,华为云cdn可以提供网站加速、文件下载加速和点播加速。将数据存放在obs中然后通过配置cdn加速,这样构造的业务系统可以在降低成本的同时,提高终端用户使用感受。当终端用户发起访问请求时,会首先通过cdn查找对此域名响应速度最快的cdn节点,并查询此节点是否有缓存终端用户请求的内容。
在cdn节点没有缓存用户请求的数据或缓存到期的情况下,cdn加速访问obs的示意图如图2所示。
图2 cdn加速访问obs示意图(cdn无缓存)
当其他终端用户再次访问相同的数据时,cdn将直接返回缓存的数据给终端用户,而无需再向obs发起访问请求。在cdn有缓存的情况下,cdn加速访问obs的示意图如图3所示。
图3 cdn加速访问obs示意图(cdn有缓存)
方案优势
- 低成本:obs提供cdn回源流量包折扣方式,使cdn从obs获取数据时流量费用更低。当数据缓存至cdn节点时,后续请求都将通过cdn回源流量计费,从而减少obs费用。
- 高效率:华为云cdn具有加速资源丰富、节点分布广泛优势,保证将用户请求精准调度至更优的边缘节点,提供有效且稳定的加速效果。
适用场景
- 通过obs提供文件下载业务的应用或服务。例如:通过http/https提供文件下载业务的网站、工具下载、游戏客户端、app商店等。
- 通过obs提供音视频点播业务的应用或服务。例如:在线教育类网站、在线视频分享网站、互联网电视点播平台、音乐视频点播app等。
约束与限制
只有桶版本号为3.0及以上的桶支持此方案。桶版本号可以在obs控制台上,进入桶对象页面后单击“概览”,在“基本信息”中查看。
通过cdn加速obs视频点播方案介绍
下面将为您介绍通过cdn加速obs视频点播方案,包含方案的应用场景、架构和优势、约束限制,详细的资源规划和操作步骤。
应用场景
传统的点播服务会加大服务器的负载,并消耗巨大的带宽资源,同时又无法保证终端用户访问时需要的高速体验。
将数据存放在obs中然后通过配置cdn加速,这样构造的业务系统可以在降低成本的同时,提高终端用户使用感受。
本方案适用于提供音视频点播服务的客户。例如:在线教育类网站、在线视频分享网站、互联网电视点播平台、音乐视频点播app等。
方案架构
图4 视频点播加速架构图
- 客户在cdn控制台配置加速域名。
- 终端用户a通过浏览器或app发出请求数据,经dns解析转向cdn节点。
- cdn节点从obs桶中拉取数据,obs返回数据。
- 数据返回至终端用户a。
- 终端用户b访问同一数据,通过浏览器或app发出请求数据,经dns解析转向cdn节点。
- 经过终端用户a的访问,cdn节点有缓存数据,直接返回所需数据至终端用户b。
方案优势
- obs安全、高可靠且低成本,可以节省存储费用。
- 通过分布在各个区域的cdn节点,将音视频内容扩展到距离终端用户较近的地方,用户可以享受更加流畅的点播体验。
- 华为云cdn与华为云obs通过内网连接,节省带宽费用。
综上,客户可以通过更低的费用,为终端用户提供更加优质的视频点播服务。
资源与成本规划
本节介绍最佳实践中资源规划情况,包含以下内容:
表1 资源和成本规划内容说明
维度 |
说明 |
资源规划 |
必选
- obs:存放图片、软件包等静态资源的桶,存储类别为“标准存储”或“低频访问存储”(归档与深度归档存储不支持直接配置cdn加速),桶策略为“私有”。
- cdn:提供点播加速。
- dns:通过在域名服务商处配置cname记录,将加速域名以cname方式指向cdn服务中对应的cname域名,域名解析生效后,该域名的所有请求都将转向cdn节点。
- 网站域名:根据中国《互联网管理条例》的要求,此域名必须在工信部已备案并在有效期内才可以使用cdn加速。
|
成本规划 |
必选
可选 回源流量包:当回源获取数据时,cdn访问obs会产生回源流量。obs提供回源流量包,可以减少回源流量产生的流量费用。
须知:
本文提供的成本预估费用仅供参考,资源的实际费用以华为云管理控制台显示为准。
|
实施步骤
- (可选)购买cdn回源流量包
当回源获取数据时,cdn访问obs会产生回源流量。obs提供回源流量包,可以减少回源流量产生的流量费用。如果未购买回源流量包,将按需走公网流出流量扣费。
- 进入。
- 根据实际业务需求配置以下参数。
- 区域:选择待配置cdn加速的桶所在区域。
- 资源包类型:选择“回源流量包”。
- 每月流量:根据每月实际流量使用情况选择合适的规格。
- 购买数量:输入购买回源流量包的数量。与每月流量结合,以组成不同规格的回源流量包。例如购买2个每月1tb的回源流量包,则实得流量为2tb。
- 购买时长:选择需要购买的回源流量包时长。
- 生效时间:根据实际情况选择“支付完成后立即生效”或“指定生效时间”。
- 单击“加入清单”。
- 在右侧资源包清单中确认资源包信息,单击“立即购买”。
- 配置cdn点播加速
obs支持域名管理功能,在obs上绑定用户域名即可实现使用自定义域名访问obs,并可以在绑定后配置cdn加速。
- 登录华为云控制台,在控制台九游平台首页选择“存储 > 对象存储服务 obs”,进入obs管理控制台。
- 单击存放软件包的桶名称,此处以“my-video”为例。
- 在左侧导航栏选择“域名管理”,单击“配置加速域名”。
- 在“配置加速域名”弹框中配置cdn加速信息,如图5所示。
- 服务范围:根据需要选择。
- 业务类型:选择“点播加速”。
- 加速域名:输入视频网站域名,此处以“click.my-video.com”为例。
图5 配置加速域名
- 单击“确定加速”。
- 配置cname
在obs绑定用户域名并配置cdn加速后,cdn会自动生成一条cname域名。通过在域名服务商处配置cname记录,将加速域名以cname方式指向cdn服务中对应的cname域名,域名解析生效后,该域名的所有请求都将转向cdn节点。本示例中自动生成的cname域名为“click.my-video.com.c.cdnhwc1.com”。
不同dns服务商的cname配置方式不同,此处以华为云云解析服务为例。其他dns服务商的cname配置方法可参考。
- 登录华为云控制台,在控制台九游平台首页选择“网络 > 云解析服务 dns”,进入云解析服务页面。
- 在左侧菜单栏中,选择“公网解析”,进入公网域名列表页面。
- 在待添加记录集的域名所在行,单击“域名”列的域名名称。本实践中对应的域名为“my-video.com.”。
- 单击“添加记录集”,进入“添加记录集”页面。
- 根据界面提示填写参数配置,参数信息如表2所示。下表中未提到的参数可保持默认值。
表2 参数说明
参数 |
参数说明 |
取值样例 |
主机记录 |
主机记录指域名前缀。 |
click |
类型 |
记录集的类型,此处为cname类型。 |
cname-将域名指向另外一个域名 |
别名 |
用于是否将此记录集关联至云服务资源实例。 |
否 |
线路类型 |
用于dns服务器在解析域名时,根据访问者的来源,返回对应的服务器ip地址。 添加解析线路类型时,切记先添加默认线路类型,以保证网站可访问。 |
全网默认 |
ttl(秒) |
ttl指解析记录在本地dns服务器的有效缓存时间。如果您的服务地址经常更换,建议ttl值设置相对小些,反之,建议设置相对大些。 |
默认为“5分钟”,即300s |
值 |
需指向的域名。 如果没有开启cdn加速,该值为桶访问域名;如果开启cdn加速后,该值为cdn分配的cname域名。 |
click.my-video.com.c.cdnhwc1.com |
- 单击“确定”,完成添加。
- 验证cname配置是否生效。
打开windows操作系统中的cmd程序,输入如下指令:
nslookup -qt=cname 桶绑定的自定义域名
本实践中桶绑定的自定义域名为“click.my-video.com”。如果回显cdn分配的cname域名,则表示cname配置已经生效。
- 开启私有桶回源
由于当前存储软件包的桶为私有桶,需要前往cdn开启私有桶回源,cdn才能从obs中回源获取数据。
- 登录华为云控制台,在控制台九游平台首页选择“cdn与智能边缘 > cdn”,进入cdn控制台。
- 在左侧菜单栏中,选择“域名管理”。
- 在域名列表中,单击需要修改的域名或域名所在行的“设置”,进入域名配置页面。本实践中对应的域名为“download.game-apk.com”。
- 选择“基本配置”页签。
- 在源站配置模块,单击编辑。
- 选择源站类型为obs桶域名,桶类型选择“私有桶”,其余选项配置请参见。
- 单击“保存”按钮,完成源站添加。
- 如果您账号下的此域名是初次配置obs私有桶回源,您还需要先对cdn进行云资源委托授权,授权成功后cdn将有权限访问您账号下的obs私有桶,授权操作请参见。
请勿删除cdn针对obs的委托关系,否则会导致cdn无法在回源时从obs私有桶获取相应资源。
- 配置点播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
- 配置obs高级桶策略,避免私有桶内对象被匿名用户列举
开启私有桶回源后,任何匿名用户访问桶的自定义域名(cdn加速域名),均可以成功列举桶根目录中的对象,导致对象列表暴露在公网。因此,如果不希望任何人都能列举桶内对象,还需要配置两条高级桶策略,仅允许指定用户列举桶内对象。
- 登录华为云控制台,在控制台九游平台首页选择“存储 > 对象存储服务 obs”,进入obs管理控制台。
- 单击存放软件包的桶名称(即开启了私有桶回源的obs桶),本例中为“my-video”。
- 在左侧导航栏选择“访问权限控制 > 桶策略”。
- 单击“创建”,创建第一条桶策略。
- 根据使用习惯,策略配置方式以可视化视图为例。单击“可视化视图”。
- 配置如下参数。
本条策略的含义:除了指定的用户外,其他任何人都没有桶的列举权限(list*)。
表3 桶策略参数配置说明
参数 |
说明 |
策略名称 |
输入自定义的桶策略名称 |
策略内容 |
效力 |
拒绝 |
被授权用户 |
- 被授权用户:当前账号
- 子账号:选择允许列举桶内对象的用户。可根据实际业务需要,选择与账号同名的iam用户或其他iam用户
|
授权资源 |
|
授权操作 |
|
高级设置-排除策略(可选) |
|
- 单击右下角的“创建”,完成第一条桶策略创建。
- 再次单击“创建”,创建第二条桶策略。
- 根据使用习惯,策略配置方式以可视化视图为例。单击“可视化视图”。
- 配置如下参数。
本条策略的含义:允许指定的用户拥有桶的列举权限(list*)。此处指定的用户需要和上一条策略保持一致。
q:为什么还要配置第二条允许列举的桶策略?
a:由于在控制台普通模式下创建桶策略,被授权用户无法指定到当前账号本身。所以在第一条桶策略中,被授权用户无论选择与账号同名的iam用户或其他iam用户,实际都把当前账号本身排除在外了。这些iam用户之前有私有桶的列举权限,是因为账号在iam中进行了授权。但在第一条桶策略配置完成后,账号本身不再有列举权限,导致无法给这些iam用户授予列举权限,所以当前这些iam用户的列举权限为默认deny。基于显示deny > allow > 默认deny的原则,还需要配置一条允许列举的桶策略,才能让这些iam用户实现正常列举。
表4 桶策略参数配置说明
参数 |
说明 |
策略名称 |
输入自定义的桶策略名称 |
策略内容 |
效力 |
允许 |
被授权用户 |
- 被授权用户:当前账号
- 子账号:选择允许列举桶内对象的用户。需要和第一条桶策略保持一致
|
授权资源 |
|
授权操作 |
|
- 单击右下角的“创建”,完成第二条桶策略创建。
- 登录cdn控制台,在“预热刷新 > 缓存刷新”中,刷新cdn缓存,使桶策略在cdn加速域名生效。
刷新缓存时选择“url”类型,输入的url为配置文件点播url中添加的文件点播url,本例中为:
https://click.my-video.com/video/3.2.1/introduction.mp4
- 验证业务
待视频网站重新部署后,登录视频网站,点播视频文件。
如果视频可以成功点播,则表示加速配置成功。