
# 通过CDN加速访问OBS
#### 背景介绍
现在越来越多的行业使用OBS存储图片、视频、软件包等静态资源文件，并将OBS作为网站、论坛、APP、游戏等业务的存储源。在需要获取这些静态资源时，用户通过URL直接从OBS请求数据，数据请求过程如[图1]所示。OBS能够很好地解决本地存储不够用的难题，但一般情况下文件只存储在一个区域，不同区域的用户访问OBS的响应速度存在差异。在需要频繁访问的场景下，直接访问OBS来获取相应文件，还会消耗大量的流量费用。
图1从OBS获取数据过程   
![](https://support.huaweicloud.com/bestpractice-obs/zh-cn_image_0168852615.png "点击放大")
#### 方案说明
OBS提供低成本的存储，华为云CDN可以提供网站加速、文件下载加速和点播加速。将数据存放在OBS中然后通过配置CDN加速，这样构造的业务系统可以在降低成本的同时，提高终端用户使用感受。当终端用户发起访问请求时，会首先通过CDN查找对此域名响应速度最快的CDN节点，并查询此节点是否有缓存终端用户请求的内容。
在CDN节点没有缓存用户请求的数据或缓存到期的情况下，CDN加速访问OBS的示意图如[图2]所示。
图2CDN加速访问OBS示意图（CDN无缓存）   
![](https://support.huaweicloud.com/bestpractice-obs/zh-cn_image_0168838552.png "点击放大")
当其他终端用户再次访问相同的数据时，CDN将直接返回缓存的数据给终端用户，而无需再向OBS发起访问请求。在CDN有缓存的情况下，CDN加速访问OBS的示意图如[图3]所示。
图3CDN加速访问OBS示意图（CDN有缓存）   
![](https://support.huaweicloud.com/bestpractice-obs/zh-cn_image_0168838563.png)
**方案优势**
- **低成本**：OBS提供CDN回源流量包折扣方式，使CDN从OBS获取数据时流量费用更低。当数据缓存至CDN节点时，后续请求都将通过CDN回源流量计费，从而减少OBS费用。
- **高效率**：华为云CDN具有加速资源丰富、节点分布广泛优势，保证将用户请求精准调度至更优的边缘节点，提供有效且稳定的加速效果。
**适用场景**
- 通过OBS提供文件下载业务的应用或服务。例如：通过http/https提供文件下载业务的网站、工具下载、游戏客户端、APP商店等。
- 通过OBS提供音视频点播业务的应用或服务。例如：在线教育类网站、在线视频分享网站、互联网电视点播平台、音乐视频点播APP等。
 
#### 约束与限制
只有桶版本号为3.0及以上的桶支持此方案。桶版本号可以在OBS控制台上，进入桶对象页面后单击"概览"，在"基本信息"中查看。
#### 配置方法
- 手动配置：以点播加速为例，操作步骤请参见[通过CDN加速OBS视频点播方案介绍]。
- 一键部署：当前部分区域支持一键部署，详见[一键部署CDN下载加速](https://www.huaweicloud.com/solution/implementations/cdn-download-acceleration.html)。
 
 #### 通过CDN加速OBS视频点播方案介绍
下面将为您介绍通过CDN加速OBS视频点播方案，包含方案的应用场景、架构和优势、约束限制，详细的资源规划和操作步骤。
#### 应用场景
传统的点播服务会加大服务器的负载，并消耗巨大的带宽资源，同时又无法保证终端用户访问时需要的高速体验。
将数据存放在OBS中然后通过配置CDN加速，这样构造的业务系统可以在降低成本的同时，提高终端用户使用感受。
本方案适用于提供音视频点播服务的客户。例如：在线教育类网站、在线视频分享网站、互联网电视点播平台、音乐视频点播APP等。
#### 方案架构
图4视频点播加速架构图   
![](https://support.huaweicloud.com/bestpractice-obs/zh-cn_image_0000001983392145.png "点击放大")
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加速。   |
| 成本规划 | **必选** - OBS费用：详见[OBS计费说明](https://support.huaweicloud.com/price-obs/obs_42_0001.html)。  - CDN费用：详见[CDN计费说明](https://support.huaweicloud.com/price-cdn/cdn_01_0155.html)。   **可选** 回源流量包：当回源获取数据时，CDN访问OBS会产生回源流量。OBS提供回源流量包，可以减少回源流量产生的流量费用。 须知： 本文提供的成本预估费用仅供参考，资源的实际费用以华为云管理控制台显示为准。        |
   
#### 操作流程
![](https://support.huaweicloud.com/bestpractice-obs/zh-cn_image_0000001983232261.png)
#### 实施步骤
1. **（可选）购买CDN回源流量包**
   
   当回源获取数据时，CDN访问OBS会产生回源流量。OBS提供回源流量包，可以减少回源流量产生的流量费用。如果未购买回源流量包，将按需走公网流出流量扣费。
   1. 进入[购买资源包页面](https://console.huaweicloud.com/console/?locale=zh-cn#/obs/buy)。
   
   2. 根据实际业务需求配置以下参数。
      - 区域：选择待配置CDN加速的桶所在区域。
      
      - 资源包类型：选择"回源流量包"。
      
      - 每月流量：根据每月实际流量使用情况选择合适的规格。
      
      - 购买数量：输入购买回源流量包的数量。与每月流量结合，以组成不同规格的回源流量包。例如购买2个每月1TB的回源流量包，则实得流量为2TB。
      
      - 购买时长：选择需要购买的回源流量包时长。
      
      - 生效时间：根据实际情况选择"支付完成后立即生效"或"指定生效时间"。
       
   
   3. 单击"加入清单"。
   
   4. 在右侧资源包清单中确认资源包信息，单击"立即购买"。
    
   
   
2. **配置CDN点播加速**
   
   OBS支持域名管理功能，在OBS上绑定用户域名即可实现使用自定义域名访问OBS，并可以在绑定时配置CDN加速。
   1. 登录OBS[管理控制台](https://console.huaweicloud.com/console/?locale=zh-cn#/obs/manager/buckets)。
   
   2. 单击存放软件包的桶名称，此处以"my-video"为例。
   
   3. 在左侧导航栏选择"基础配置 \> 域名管理"，单击"配置加速域名"。
   
   4. 在"配置加速域名"弹框中配置CDN加速信息，如[图5]所示。
      - 服务范围：根据需要选择。
      
      - 业务类型：选择"点播加速"。
      
      - 桶类型：选择"私有桶"。
      
      - 加速域名：输入视频网站域名，此处以"click.my-video.com"为例。
      
      
      图5配置加速域名   
      ![](https://support.huaweicloud.com/bestpractice-obs/zh-cn_image_0000001951272752.png "点击放大") 
   
   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域名解析](https://support.huaweicloud.com/drawer-cdn/cdn_drawer_01021.html)。
   1. 登录DNS[管理控制台](https://console.huaweicloud.com/dns)。
   
   2. 在左侧菜单栏中，选择"公网域名"，进入公网域名列表页面。
   
   3. 在待添加记录集的域名所在行，单击"域名"列的域名名称。本实践中对应的域名为"my-video.com."。
   
   4. 单击"添加记录集"，进入"添加记录集"页面。
   
   5. 根据界面提示填写参数配置，参数信息如[表2]所示。下表中未提到的参数可保持默认值。
       表2参数说明 
      | 参数     | 参数说明                                                                                               | 取值样例                             |
      |:---|:---|:---|
      | 记录类型   | 记录集的类型，此处为CNAME类型。                                                                                 | CNAME-将域名指向另外一个域名                |
      | 主机记录   | 主机记录指域名前缀。                                                                                         | click                            |
      | 线路类型   | 用于DNS服务器在解析域名时，根据访问者的来源，返回对应的服务器IP地址。 添加解析线路类型时，切记先添加默认线路类型，以保证网站可访问。 | 全网默认                             |
      | TTL(秒) | TTL指解析记录在本地DNS服务器的有效缓存时间。如果您的服务地址经常更换，建议TTL值设置相对小些，反之，建议设置相对大些。                                    | 默认为"300"，即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. **配置点播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
   ```
   
   
5. **给IAM委托授权，避免私有桶内对象被匿名用户列举**
   
   配置私有桶回源后，任何匿名用户访问桶的自定义域名（CDN加速域名），均可列举桶根目录中的对象，导致对象列表暴露在公网。如果不希望匿名用户（未经身份认证和鉴权的用户）都能列举桶内对象，还需对列表权限进行配置，您可以通过给"CDNAccessPrivateOBS"委托创建一条拒绝列举桶内对象的策略，达到不会列出桶文件列表的目的，更多内容可参见[为什么OBS桶接入CDN后，访问域名会列出所有文件列表？](https://support.huaweicloud.com/cdn_faq/cdn_faq_0202.html)
   ![](https://support.huaweicloud.com/bestpractice-obs/public_sys-resources/note_3.0-zh-cn.png)
   - 在初次为域名配置OBS私有桶回源时，需要先在CDN控制台开启OBS委托授权，授权CDN访问您账号下的OBS私有桶，授权操作请参见[OBS委托授权](https://support.huaweicloud.com/usermanual-cdn/cdn_01_0029.html)。
   
   - 开启OBS委托权限后，系统将自动创建一个名称为"CDNAccessPrivateOBS"的委托。
    
   1. 前往IAM控制台，在左侧菜单栏选择"委托"，在"CDNAccessPrivateOBS"的"操作"列，单击"授权"。
   
   2. 在授权页面单击"新建策略"，配置如下参数：
      表3参数说明 
      | 参数         || 说明                              |
      |:---|---|:---|
      | 策略名称       || 输入自定义的桶策略名称，例如：deny ListBucket。 |
      | 策略配置方式     || 可视化视图                           |
      | 策略内容 | 效力   | 拒绝                              |
      | 策略内容 | 云服务  | 对象存储服务（OBS）                     |
      | 策略内容 | 操作项  | 在列表一栏勾选"obs:bucket:ListBucket"。 |
      | 策略内容 | 资源   | 所有资源                            |
      | 策略内容 | 请求条件 | -                               |
         
      
   
   3. 单击"下一步"，进入选择策略页面。
   
   4. 勾选刚创建的策略，此处示例为"deny ListBucket"，单击"下一步"，进入设置最小授权范围界面。
   
   5. 单击"确定"，完成授权，授权后15\~20分钟生效。
   
   6. 授权生效后，请刷新CDN缓存后重试。
   
   
   
   
6. **验证** **业务**
   
   待视频网站重新部署后，登录视频网站，点播视频文件。
   如果视频可以成功点播，则表示加速配置成功。
   
   
 
