# 基于VPC终端节点与应用型负载均衡在内部网站部署API网关API
#### 方案概述
为了满足组织对**私有API不可从互联网访问** 且**使用自定义域名** 的合规要求，通过VPC终端节点（VPCEP）、独享型应用负载均衡（ELB）、API网关专享版（APIG）和云解析服务（DNS），将API网关API部署到可从本地数据中心（On-Premises）网络访问的内部网站上。利用私有终端节点、应用型负载均衡和内网域名解析构建一种架构，使得内部网络中的Web流量可以根据ELB监听器的转发规则，定向到**网站后端服务器组** 或**API网关后端服务器组**。
该架构可避免因在非路由子网部署VPC终端节点导致网络不可达的问题，也避免通过自定义域名和代理服务器进行域名路由时可能产生的副作用（例如将APIG流量经云专线传递给本地数据中心时导致其他内部站点中断）。
#### 方案架构
如下架构图展示了独享型应用负载均衡（ELB）部署在VPC中，根据监听器转发规则将Web流量定向转发至**网站后端服务器组** 或**API网关后端服务器组**。
APIG配置为内网访问模式，其后端服务器组中的后端服务器地址为VPC终端节点的IP地址，通过访问控制策略限制仅允许来自特定VPC终端节点的调用；APIG的自定义域名更新为api.domain.com，ELB转发策略根据主机头（Host Header）路由流量。
![](https://support.huaweicloud.com/bestpractice-elb/zh-cn_image_0000002778631905.png "点击放大")
1. **DNS解析与SSL卸载**
   本地数据中心的用户尝试访问内部网站，请求发送至ui.domain.com和api.domain.com。通过云专线/VPN到达华为云VPC后，DNS将域名解析到内网ELB的地址。SSL在ELB处卸载（终止），ELB使用SCM托管的SNI证书分别为ui.domain.com和api.domain.com提供HTTPS服务。
   
2. **ELB监听器转发策略基于域名转发流量**
   - 如果主机头（Host Header）为api.domain.com，请求被转发到APIG后端服务器组。ELB通过端口443与APIG建立新连接。
   
   - 如果主机头为 ui.domain.com，请求被转发到网站后端服务器组。 API网关处理请求：请求到达APIG后，APIG中配置的自定义域名映射确定主机名及要运行的API。
     
    
 
#### 约束与限制
- IP类型后端开启后无法关闭，单个后端服务器最多支持10万并发连接数。
- VPCEP接口型终端节点与终端节点服务一一对应；终端节点服务需配置白名单方可被其他账号访问。
- API网关专享版内网域名无需备案，A记录解析到实例入口地址或CNAME解析到分组调试域名。
 
#### 准备工作
- 用于网站和API的SNI证书（涵盖ui.domain.com和api.domain.com）。
- 已通过云专线或VPN建立本地数据中心到华为云VPC的网络连接。
- 已在DNS控制台创建内网域名，且可从本地数据中心解析（通过DNS解析器的入站终端节点将本地DNS请求转发至华为云内网DNS）。
- 部署可路由的私有子网，确保本地数据中心网络可正常访问此私有子网。
 
#### 工具说明
|                              **服务**                               |                                  **说明**                                   |
|---|---|
| [API网关 APIG](https://support.huaweicloud.com/apig/index.html)     | 帮助您创建、发布、维护、监控和保护REST API，支持任意规模的API调用。专享版实例运行在用户VPC内，支持内网访问和自定义域名。       |
| [云解析服务 DNS](https://support.huaweicloud.com/dns/index.html)       | 高可用、高扩展的DNS服务。支持内网域名解析，将内网域名与VPC内的私网IP关联，为华为云上资源提供VPC内的域名解析服务。            |
| [云证书与管理服务 CCM](https://support.huaweicloud.com/ccm/index.html)    | 提供SSL证书管理（SCM）和私有证书管理（PCA）功能。SCM联合全球知名CA机构，提供SSL证书全生命周期管理，支持一键部署到ELB和WAF。 |
| [VPC终端节点 VPCEP](https://support.huaweicloud.com/vpcep/index.html) | 在VPC和终端节点服务之间建立私有连接通道，无需通过公网即可访问云服务或用户私有服务。支持接口型和网关型两种终端节点服务。             |
   
#### 实施步骤
本方案主要包含**创建SNI证书** 、**在非路由私有子网部署VPC终端节点** 、**配置ELB** 、**配置DNS** 、**部署APIG**等5项任务。
#### 步骤一：创建SNI证书
|       **任务**       |                                                                                                                                                                                                                                                      **描述**                                                                                                                                                                                                                                                       | **所需技能** |
|---|---|---|
| **创建SNI证书并导入至CCM** | 1. 创建涵盖ui.domain.com 和api.domain.com的SNI证书。 可使用CCM的私有证书管理PCA签发，或从第三方CA购买后导入。   2. 将证书导入云证书与管理服务（CCM）。 详见[上传已有SSL证书](https://support.huaweicloud.com/usermanual-ccm/ccm_01_0011.html)。   3. 确认证书状态为"已签发"，可部署至ELB。   | 网络管理员    |
   
 #### 步骤二：在非路由私有子网部署VPC终端节点
|         **任务**         |                                                                                                                                                                                                                                                                                                                                         **描述**                                                                                                                                                                                                                                                                                                                                         | **所需技能** |
|---|---|---|
| **创建API网关的接口型VPC终端节点** | 1. 在VPCEP控制台创建接口型终端节点，选择API网关云服务类型的终端节点服务**com.myhuaweicloud.*RegionId*.apig** 。 说明： 华为云VPCEP的接口型终端节点服务中，API网关（c**om.myhuaweicloud.*RegionId*.apig**）是系统预配置的云服务类终端节点服务，用户无需创建，可直接使用。   2. 选择非路由私有子网作为终端节点所在子网。  3. 配置安全组，放行443端口的入方向流量。  4. 记录终端节点的私有IP地址，后续用于配置ELB后端服务器组。   详见[购买终端节点](https://support.huaweicloud.com/usermanual-vpcep/zh-cn_topic_0131645189.html)。 | 云管理员     |
   
#### 步骤三：配置弹性负载均衡
|         **任务**         |                                                                                                                                                                                                                                                                         **描述**                                                                                                                                                                                                                                                                         | **所需技能** |
|---|---|---|
| **为应用创建后端服务器组**        | 创建后端服务器组用于网站资源，添加VPC内的ECS实例作为后端服务器。 详见[创建后端服务器组](https://support.huaweicloud.com/usermanual-elb/elb_ug_hdg_0003.html)。                                                                                                                                                                                                                                                                                                                                                                                                   | 云管理员     |
| **为API网关终端节点创建后端服务器组** | 1. 创建IP类型的后端服务器组（需先在ELB基本信息页面开启"IP类型后端"功能）。  2. 将[步骤二：在非路由私有子网部署VPC终端节点]中获取的VPC终端节点IP地址添加为后端服务器。  3. 配置健康检查：健康检查协议使用HTTPS，端口443，预期健康检查返回码设置为403。因为APIG的VPC终端节点在无任何请求头的情况下被健康检查调用时返回403状态码。   详见[通过IP类型后端功能添加服务器至ELB](https://support.huaweicloud.com/bestpractice-elb/elb_bp_0300.html)。 | 云管理员     |
| **创建独享型应用负载均衡**        | 1. 创建独享型-应用型负载均衡实例，网络类型选择"内网"（不绑定EIP），部署在可路由私有子网中。  2. 添加HTTPS监听器（端口443），选择CCM中已导入的SNI证书，开启SNI多域名证书功能，分别为 ui.domain.com 和 api.domain.com 配置对应证书。   详见[购买独享型负载均衡器](https://support.huaweicloud.com/usermanual-elb/elb_lb_000006.html)。                                                                                                                                                      | 云管理员     |
| **创建监听器转发策略**          | 在HTTPS监听器上创建转发策略： - 转发策略1：转发规则选择"域名"，值为 api.domain.com，转发动作选择"转发至后端服务器组"，目标为APIG后端服务器组。  - 转发策略2：转发规则选择"域名"，值为 ui.domain.com，转发动作选择"转发至后端服务器组"，目标为网站后端服务器组。   详见[添加转发策略](https://support.huaweicloud.com/usermanual-elb/elb_ug_jt_0023.html#section3)。 说明： 独享型ELB开启高级转发策略后，还支持基于HTTP请求头、查询字符串、网段等更丰富的转发规则。               | 云管理员     |
   
#### 步骤四：配置云解析服务
|     **任务**     |                                                                                                                                                                                                                      **描述**                                                                                                                                                                                                                      | **所需技能** |
|---|---|---|
| **创建内网域名**     | 在云解析服务DNS中创建内网域名domain.com，并关联到VPC。 详见[创建内网域名](https://support.huaweicloud.com/usermanual-dns/zh-cn_topic_0057773658.html)。                                                                                                                                                                                                                                                                                       | 云管理员     |
| **创建内网域名解析记录** | 为内网域名添加2个CNAME类型解析记录： - 主机记录为api.domain.com，记录值为ELB的内网域名。  - 主机记录ui.domain.com，记录值为ELB的内网域名。   详见[添加内网域名解析记录](https://support.huaweicloud.com/usermanual-dns/dns_usermanual_2513.html)。 说明： 也可以选择添加A类型解析记录，记录值指向ELB的内网IP地址。 | 云管理员     |
   
#### 步骤五：在API网关创建私有API端点
|       **任务**       |                                                                                                                                                                                                                                                                                                               **描述**                                                                                                                                                                                                                                                                                                                |  **所需技能**  |
|---|---|---|
| **创建并配置专享版APIG实例** | 1. 购买API网关专享版实例，VPC和子网选择与ELB相同的VPC和可路由子网。  2. 不开启公网入口（确保API仅内网可达）。  3. 配置安全组，入口方向放行80和443端口。   详见[创建APIG实例](https://support.huaweicloud.com/usermanual-apig/apig_03_0037.html)。                                                                                                                                                                                                                                           | 应用开发者，云管理员 |
| **创建API并配置访问控制**   | 1. 在APIG实例中创建API分组和API。  2. 配置访问控制策略，类型选择"IP地址"，动作为"允许"，IP地址填写VPC终端节点的IP地址（仅允许来自VPC终端节点的调用）。  3. 将访问控制策略绑定到API。   详见[配置API的访问控制](https://support.huaweicloud.com/usermanual-apig/apig_03_0027.html)。                                                                                                                                                                                                             | 应用开发者，云管理员 |
| **绑定自定义域名**        | 1. 为API分组绑定独立域名 api.domain.com。  2. 由于使用内网域名，无需备案。添加A记录解析到APIG实例的虚拟私有云访问地址，或CNAME记录解析到API分组的调试域名。  3. 为域名配置SSL证书（与CCM中导入的证书一致）。  4. 完成API映射配置，将 api.domain.com 映射到指定的API和发布环境。   详见[配置API的调用域名](https://support.huaweicloud.com/usermanual-apig/apig_03_0006.html)和[绑定域名](https://support.huaweicloud.com/usermanual-apig/apig-ug-180327076.html)。 | 云管理员       |
   
