
# 基于全站加速WSA的OBS传输加速最佳实践
#### 应用场景
- 远距离数据传输： 如果客户端所在区域与数据存储区域相距较远，那么当客户端访问数据时，可能会因为传输距离远引发访问延时长、不稳定等问题，例如全球性的论坛网站、在线协同办公平台等，远距离传输造成的长时延会影响客户上传下载数据的体验。基于全站加速（Whole Site Acceleration，WSA）的传输加速方案可以让全球各地的客户极大地提升上传和下载速度，让不同地域的用户都能有很好的访问体验。
  
- 动态文件下载： 与其他加速技术相比，WSA不仅加速静态资源，还适用于加速各行业动静态内容混合、含较多动态资源请求（如asp、jsp、php等格式的文件）的源站应用服务。除了常见的网站页面加速，WSA 还能为各种应用类型提供加速服务，包括但不限于Web应用、移动应用、API接口、WebSocket应用等。
  
 
#### 方案架构
开启WSA前，客户端请求经过DNS解析后，通过直连网络上传下载OBS。
![](https://support.huaweicloud.com/bestpractice-obs/zh-cn_image_0000002206893785.png)
开启WSA后，客户端请求经过DNS解析后，DNS服务器会通过CNAME方式将域名请求重定向到WSA服务。WSA通过一组预先定义好的策略（如内容类型、地理区域、网络负载状况等），静态内容从当时能够最快响应用户的边缘节点就近获取，动态内容通过动态加速技术避开网络拥堵路由，智能选择较优路由回源获取，使用户可以以最快的速度获得网站内容。
![](https://support.huaweicloud.com/bestpractice-obs/zh-cn_image_0000002207048569.png)
#### 方案优势
加速范围全面：
- 动静态内容一体化加速：传统的CDN技术大多只能加速静态资源，如图片、样式表、脚本等。而WSA不仅可以对静态资源进行高效缓存和分发，还能针对动态内容，如动态网页、API接口、实时数据等进行加速。
- 多类型应用加速支持：除了常见的网站页面加速，WSA还能为各种应用类型提供加速服务，包括但不限于Web应用、移动应用、API接口、WebSocket应用等。
智能优化能力强：
- 智能路由选择：WSA能够根据用户的地理位置、网络运营商、网络质量、节点负载等多种因素，实时动态地计算出到源站的最优访问路径。相比传统的基于DNS的就近访问原则，WSA的智能路由可以更精准地避开网络拥堵、故障等问题，提高数据传输效率。
- 协议优化：通过自研的协议优化算法，WSA可以降低网络传输中的延迟和卡顿率，尤其在端侧弱网接入场景下，能够有效改善丢包、时延等问题，提升用户在各种网络环境下的访问体验。
 
#### 资源和成本规划
表1资源和成本规划 
| 资源      | 资源说明                             | 数量 | 费用                                                                                                                                                                                                                                                 |
|:---|:---|:---|:---|
| 全站加速WSA | 提供全站加速功能，加速数据上传下载。               | NA | 基础服务计费：流量或带宽费用，该最佳实践默认按流量阶梯计费，您也可以在WSA服务中购买预付费流量包，更多计费详情请参见[价格详情](https://www.huaweicloud.com/pricing/calculator.html#/wsa)。 增值服务计费：全站加速请求数费用，详情请参见[价格详情](https://www.huaweicloud.com/pricing/calculator.html#/wsa)。 |
| OBS桶    | OBS桶用于存放用户上传和下载的数据，桶存储类别为"标准存储"。 | 1  | 存储费用：按照OBS存储数据所占用的存储空间容量大小收费。 流量费用：WSA回源OBS时会产生公网流出费用，按需计费，版本为3.0以上的桶且以"OBS桶域名"形式接入WSA可购买OBS回源流量包抵扣。                                                                                                                 |
| 网站域名    | 绑定在对象桶上的自定义域名，用户通过访问该域名来访问桶。     | 1  | 域名注册和管理相关费用，不同厂商的收费标准不同。                                                                                                                                                                                                                           |
   
#### 约束限制
- 对于使用中国大陆节点服务器提供互联网信息服务的用户，绑定服务器的域名需要在取得备案号后才能进行访问。
- 您必须是桶拥有者或拥有设置桶的自定义域名的权限，才能设置桶的自定义域名信息。建议使用IAM或桶策略进行授权，如果使用IAM则需授予obs:bucket:PutBucketCustomDomainConfiguration权限，如果使用桶策略则需授予PutBucketCustomDomainConfiguration权限。相关授权方式介绍可参见[OBS权限控制概述](https://support.huaweicloud.com/perms-cfg-obs/obs_40_0001.html)，配置方式详见[使用IAM自定义策略](https://support.huaweicloud.com/usermanual-obs/obs_03_0121.html)、[自定义创建桶策略](https://support.huaweicloud.com/usermanual-obs/obs_03_0123.html)。
 
#### 操作流程
图1基于全站加速WSA的OBS传输加速最佳实践操作流程   
![](https://support.huaweicloud.com/bestpractice-obs/zh-cn_image_0000002207054309.png)
#### 实施步骤
#### 步骤一：在OBS控制台创建OBS桶
1. 登录控制台，进入[创建桶](https://console.huaweicloud.com/console/?locale=zh-cn#/obs/create)页面。
2. 设置"基础配置"。 
   ![](https://support.huaweicloud.com/bestpractice-obs/zh-cn_image_0000002142144252.png "点击放大")
   
   | 参数 | **示例**     | 说明                          |
   |:---|:---|:---|
   | 区域 | **华北-北京四** | 桶所属区域。桶创建成功后，不支持变更区域，请谨慎选择。 |
      
   
   
3. 设置"桶配置"。其他参数保持默认，可在桶创建后修改。 
   ![](https://support.huaweicloud.com/bestpractice-obs/zh-cn_image_0000002177463705.png "点击放大")
   
   | 参数       | **示例**                 | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
   |:---|:---|:---|
   | 桶名称      | **wsa-example-bucket** | 桶的名称。桶创建成功后，不支持修改名称。 桶名称命名规则如下： - 全局唯一，不能与已有的任何桶（包含其他账号创建的桶）名称重复。删除桶后，需等待30分钟才能创建同名桶或并行文件系统。  - 长度范围为3到63个字符，支持小写字母、数字、中划线（-）、英文句号（.）。  - 禁止两个英文句号（.）相邻，禁止英文句号（.）和中划线（-）相邻，禁止以英文句号（.）和中划线（-）开头或结尾。  - 禁止使用IP地址。   |
   | 数据冗余存储策略 | **多AZ存储**              | - 多AZ存储：数据存储至同区域内的多个可用区（AZ），可靠性更高，同时存储成本相对更高。  - 单AZ存储：数据仅存储在单个可用区（AZ），成本更低。   桶创建成功后，不支持更改数据冗余存储策略。                                                                                                                                                                                                                                                                                                     |
   | 存储类型     | **标准存储**               | 桶的存储类别。不同的存储类别可以满足客户业务对存储性能、成本的不同诉求。 - 标准存储：适用于有大量热点文件或小文件，且需要频繁访问（平均一个月多次）并快速获取数据的业务场景。  - 低频访问存储：适用于不频繁访问（平均一年少于12次），但需要快速获取数据的业务场景。   说明： 归档与深度归档存储不支持配置WSA全站加速。 更多详情请参见[存储类别](https://support.huaweicloud.com/usermanual-obs/obs_41_0080.html)。                                                                                          |
   | 桶策略      | **私有**                 | 桶的读写权限控制。 - 私有：除桶ACL授权外的其他用户无桶的访问权限。  - 公共读：任何用户都可以对桶内对象进行读操作。  - 公共读写：任何用户都可以对桶内对象进行读/写/删除操作。  - 复制桶策略：复制源桶的桶策略。当且仅当您选择了源桶时，该选项处于可选状态。                                                                                                         |
   | 企业项目     | **default**            | 将桶加入到企业项目中统一管理。如无特殊的企业项目划分和管理需求，此处可直接选择默认企业项目"default"。 如果您想要了解更多关于如何通过企业项目管理OBS桶，具体请参见[创建桶](https://support.huaweicloud.com/usermanual-obs/zh-cn_topic_0045829088.html#section3)中的"企业项目"参数说明。                                                                                                                                                                                                                                                                                                                                            |
      
   
   
4. 单击页面右下角的"立即创建"，并确认提示信息。 
   创建完成后，将会出现创建成功弹窗，确认后在桶列表页即可看到已创建的桶。
   
   
 
#### 步骤二：在OBS控制台向桶中上传对象
1. 在桶列表页面，单击已创建好的桶名称，进入"对象"页面。
2. 单击搜索框上方的"上传对象"。
3. 将本地文件拖拽至"上传对象"区域框内来添加对象。 
   也可以通过单击区域框内的"添加文件"，选择本地文件进行添加。
   
   
4. 其他参数保持默认，单击"上传"。 
   右侧自动弹出任务中心页面，可在任务中心查看对象上传状态。上传成功的对象将在对象列表中展示。
   ![](https://support.huaweicloud.com/bestpractice-obs/zh-cn_image_0000002177345325.png "点击放大")
   
   
 
#### 步骤三：在OBS控制台为桶绑定自定义域名
1. 在左侧导航栏选择"域名管理"，进入"域名管理"界面。 
   图2域名管理界面   
   ![](https://support.huaweicloud.com/bestpractice-obs/zh-cn_image_0000002147449672.png)
   
   
2. 单击"配置自定义域名"，在用户域名中输入需要配置的自定义域名（此处以"**testwsa.com** "为例），然后单击"确定"。域名后缀目前支持的范围为2\~6个英文大小写字母。如：.com、.cn。
   
   配置自定义域名
   ![](https://support.huaweicloud.com/bestpractice-obs/zh-cn_image_0000002147607744.png "点击放大")
   ![](https://support.huaweicloud.com/bestpractice-obs/public_sys-resources/note_3.0-zh-cn.png)
   在配置自定义域名后，配置WSA之前，OBS会暂时将桶域名作为自定义域名的CNAME，配置WSA后CNAME会变更为WSA生成的CNAME，最终在DNS上配置的CNAME为WSA生成的CNAME。
   
   
 
 #### 步骤四：在CDN控制台配置全站加速
1. 登录[CDN控制台](https://console.huaweicloud.com/cdn)，单击左侧"域名管理"，进入域名管理页面。
2. 在域名管理页面单击"添加域名"，进入添加域名页面。
3. 在添加域名页面，配置域名参数，其他参数保持默认： 
   
   | 参数   | **示例**          | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
   |:---|:---|:---|
   | 服务范围 | **中国大陆**        | - 全球：全球各地用户的访问都会调度到用户附近最优的CDN节点，加速域名需要到工信部备案，详见[备案流程](https://support.huaweicloud.com/usermanual-icp/zh-cn_topic_0000002127712329.html)。  - 中国大陆：所有用户的访问都会调度到中国大陆的节点，加速域名需要到工信部备案，详见[备案流程](https://support.huaweicloud.com/usermanual-icp/zh-cn_topic_0000002127712329.html)。  - 中国大陆境外：所有用户的访问都会调度到中国大陆境外的节点，此时不需要到工信部备案。                                                       |
   | 加速域名 | **testwsa.com** | 需要加速的域名，请填写可以正常使用的域名。 - 域名长度不能超过200个字符，支持大小写字母、数字、"-"、".""\*"，"\*"必须是首字符，首字符不能是"-"或"."。  - 域名单节点长度不超过63个字符，即：\*\*\*.\*\*\*.com中，\*\*\*的字符数最多63个。                                                                                                                                                                                                                                                              |
   | 企业项目 | **default**     | 将加速域名加入到企业项目中统一管理。如无特殊的企业项目划分和管理需求，此处可直接选择默认企业项目"default"。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
   | 业务类型 | **全站加速**        | 适用于各行业动静态内容混合，含较多动态资源请求（如asp、jsp、php等格式的文件）的网站。 说明： 如果您未开通全站加速服务，界面将提示您开通WSA服务： 1. 单击"前往开通"。  2. 选择计费方式，勾选服务声明，单击"立即开通"即可开通WSA服务。                                                                                                                                                                                                                                       |
   | 回源方式 | **HTTP**        | 配置CDN节点回源时采用的协议，可选： - HTTP：CDN采用HTTP协议回源。  - HTTPS：CDN采用HTTPS协议回源（请确保源站支持HTTPS访问），如需使用请[提交工单](https://support.huaweicloud.com/usermanual-ticket/zh-cn_topic_0127038618.html)联系技术人员开通。  - 协议跟随：回源协议跟客户端访问协议一致，例：客户端以HTTPS协议访问CDN，CDN也将采用HTTPS协议回源，如需使用请[提交工单](https://support.huaweicloud.com/usermanual-ticket/zh-cn_topic_0127038618.html)联系技术人员开通。   |
      
   
   
4. 在源站配置模块单击"添加源站"，为域名添加源站： 
   
   | 参数     | **示例**                                                  | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
   |:---|:---|:---|
   | 源站类型   | **源站域名**                                                | - **源站IP：**使用IP作为源站地址时，CDN节点回源时直接访问该IP地址。支持配置IPv4，暂不支持IPv6。  - **源站域名：** 支持配置域名作为源站，CDN节点回源时直接访问该域名。 - 域名首字符为字母或数字，支持大小写字母、数字、"-"、"."，长度不能超过255个字符。  - 域名单节点长度不超过63个字符，即：\*\*\*.\*\*\*.com中，\*\*\*的字符数最多63个。  - 源站域名不能与加速域名相同。     说明： 在CDN控制台添加加速域名，"业务类型"选择"全站加速"时，"源站类型"不支持使用"OBS桶域名"。 |
   | 源站地址   | **wsa-example-bucket.obs.cn-north-4.myhuaweicloud.com** | CDN节点回源时访问的地址，此处填写桶域名。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
   | 回源HOST | **testwsa.com**                                         | 回源HOST是CDN回源过程中，在源站访问的站点域名，即HTTP请求头中的HOST信息。配置回源HOST后，CDN在回源过程中会根据HOST信息去对应站点获取资源，此处填写加速域名。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
      
   
   
5. 单击"确定"，完成源站添加。
6. 源站添加完成后，单击页面左下方"确定"按钮，完成域名添加。
 
 #### 步骤五：在CDN控制台获取WSA生成的CNAME
1. 在[CDN控制台域名管理页面](https://console.huaweicloud.com/cdn/#/cdn/domain)，单击[步骤四]中添加的域名，进入域名详情页。
2. 在"基本配置"页签，复制WSA生成的CNAME，这个CNAME将会在[步骤六]中用到。
   
   ![](https://support.huaweicloud.com/bestpractice-obs/zh-cn_image_0000002206648749.png)
   
   
 
 #### 步骤六：在DNS控制台配置域名解析
如果您已成功添加加速域名，系统会自动为您的加速域名分配对应的CNAME域名。加速域名在WSA服务中获得的CNAME域名不能直接访问，必须在加速域名的域名服务商处配置CNAME记录，将加速域名指向CNAME域名，访问加速域名的请求才能转发到WSA节点上，达到加速效果。
不同DNS服务商的CNAME配置方式不同，此处以华为云云解析服务为例。其他DNS服务商的CNAME配置方法可参考[配置CNAME域名解析](https://support.huaweicloud.com/drawer-cdn/cdn_drawer_01021.html)。
1. 登录[DNS控制台](https://console.huaweicloud.com/dns/?#/dns/publiczones)。
2. 在左侧菜单栏中，选择"公网域名"，进入公网域名列表页面。
3. 单击"域名"列的域名名称。本实践中对应的域名为"testwsa.com"。
4. 单击"添加记录集"，进入"添加记录集"页面。
5. 根据界面提示填写参数配置，参数信息如[表2]所示，下表中未提到的参数可保持默认值：
   
    表2参数说明 
   | 参数   | **示例**                                 | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
   |:---|:---|:---|
   | 记录类型 | **CNAME-将域名指向另外一个域名**                  | 记录集的类型，此处为CNAME类型。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
   | 主机记录 | **\***                                 | 解析域名的前缀。 例如创建的域名为"example.com"，其"主机记录"设置包括： - www：用于网站解析，表示解析的域名为"www.example.com"。  - 空：用于网站解析，表示解析的域名为"example.com"。  - 主机记录置为空，还可用于为空头域名"@"添加解析。  - abc：用于子域名解析，表示解析的域名为"example.com"的子域名"abc.example.com"。  - mail：用于邮箱解析，表示解析的域名为"mail.example.com"。  - \*：用于泛解析，表示解析的域名为"\*.example.com"，匹配"example.com"的所有子域名。   |
   | 值    | **testwsa.com.xxxxxxxx.c.cdnhwc1.com** | 需指向的域名。开启WSA加速后，该值为[步骤五]中获取的WSA分配的CNAME域名。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
      
   
   
6. 单击"确定"，完成添加。
7. 验证CNAME配置是否生效。 
   打开Windows操作系统中的cmd程序，输入如下指令：
   ```
   nslookup -qt=cname 桶绑定的自定义域名
   ```
   本实践中桶绑定的自定义域名为"testwsa.com"。如果回显CDN分配的CNAME域名，则表示CNAME配置已经生效。
   
   
 
#### 步骤七：构造OBS请求
公开桶直接获取对象URL即可访问桶内资源，详情参见[匿名用户通过URL访问对象](https://support.huaweicloud.com/usermanual-obs/obs_03_0319.html)。私有桶请使用自定义域名计算签名或初始化SDK客户端：
- 如果您直接调用OBS API访问桶中资源，那么在计算API签名时，请将CanonicalizedResource中的桶名替换为自定义域名，详情参见[OBS签名机制](https://support.huaweicloud.com/api-obs/obs_04_0009.html)。
- 如果您使用OBS SDK访问桶中的资源，那么在初始化SDK客户端时，请将endpoint设置为自定义域名的endpoint，例如"http://testwsa.com"，并为SDK客户端配置自定义域名相关参数，如[表3]所示。
   表3SDK客户端自定义域名相关参数 
  |     语言      |                                    Java                                     |                                      Python                                      |                                                                                           C                                                                                            |                                    Go                                     |                                      BrowserJS                                      |                                    Android                                     |                                           iOS                                            |                                      PHP                                      |                                     Node.js                                      |
  |---|---|---|---|---|---|---|---|---|---|
  | **需要设置的参数** | [cname](https://support.huaweicloud.com/sdk-java-devg-obs/obs_21_0202.html) | [is_cname](https://support.huaweicloud.com/sdk-python-devg-obs/obs_22_0601.html) | [useCname](https://support.huaweicloud.com/sdk-c-devg-obs/obs_20_1808.html) [host_name](https://support.huaweicloud.com/sdk-c-devg-obs/obs_20_1808.html) | [cname](https://support.huaweicloud.com/sdk-go-devg-obs/obs_33_0102.html) | [is_cname](https://support.huaweicloud.com/sdk-browserjs-devg-obs/obs_24_0204.html) | [cname](https://support.huaweicloud.com/sdk-android-devg-obs/obs_26_0203.html) | [OBSDomainModeCustom](https://support.huaweicloud.com/sdk-ios-devg-obs/obs_27_0203.html) | [is_cname](https://support.huaweicloud.com/sdk-php-devg-obs/obs_28_0203.html) | [is_cname](https://support.huaweicloud.com/sdk-nodejs-devg-obs/obs_29_0203.html) |
     
  
 
#### 步骤八：验证加速效果
配置完成后，访问桶内文件，如果文件能成功访问，则表示加速配置成功。
