本文介绍了如何结合云企业网(CEN),构建跨Region的集中式API管理方案。同时您也可以参考本例中的步骤,结合CEN能力,构建在VPC间、VPC与本地数据中心间的集中式API管理,从而实现全网资源都可以发布在API网关、并通过API网关进行调用。

1 概述

API网关默认只能和同Region的VPC相互连通。本文就下图这种跨Region的场景做示范,讲述如何进行跨Region VPC的API统一管理。

本例中的API网关为创建在上海Region的API网关专享实例,对4个VPC内不同的API访问请求进行管理。ecs-2、ecs-3和ecs-4三个实例为API的后端服务,同时ecs-1、ecs-3和ecs-4三个实例也会调用架构中其他ecs上的API。本例会验证三个API调用路径,即图中的A路径(黑色)、B路径(红色)和C路径(蓝色)。

由于API网关是托管型的产品,因此需要在上海Region创建一个VPC(本例中为vpc-api-access)用于和张家口Region中的VPC进行互访,从网络上的访问关系如下图所示。

说明 本例的架构设计仅为更清晰的说明如何跨VPC之间的API调用,您在类似场景下使用时,只需要为API网关提供一个VPC(本例中为vpc-api-access)用于与其他环境(如其他Region的VPC、或本地数据中心)进行互通,此VPC除了为API网关提供接入外,并不限制其他用途。

主要配置过程如下:

  1. 配置云企业网,在网络层保证API网关和各个VPC连通性;
  2. 添加API网关到VPC的访问权限,从而API网关可以访问到VPC内的后端服务;
  3. 配置API并发布;
  4. 添加VPC到API网关的访问权限,使得在内网需要调用API的ECS实例可以访问到API网关。

2 准备工作

参考上一章节的架构图,分别创建VPC、ECS和API网关实例,完成后的架构信息如下:

说明:

  • ecs-2,ecs-3,ecs-4 三个ECS实例做为服务的后端,提供了http服务接口可对外访问;
  • API网关为上海Region下的专享实例;
  • 配置ECS实例的安全组。需要以上(ecs-2,ecs-3,ecs-4)的安全组打开服务端口的访问权限。本例中做为API后端服务的ecs上提供的http服务地址为 http://localhost:8080/web/cloudapi 。那需要安全组的内网入方向打开8080端口的访问权限,对应的IP最小范围需要是API网关专享实例内网VPC出口地址,在专享实例管理页面查看。安全组如下图所示。

3 配置云企业网

本阶段创建一个云企业网(CEN),打通上海VPC(vpc-api-access)和张家口的VPC,使得张家口的VPC能和上海的API网关实现内网互通。关于CEN的更多配置方式,请详见 云企业网帮助文档

步骤1: 创建云企业网实例

先通过云企业网控制台 创建一个云企业网实例,如下图。

多次加载网络实例,将vpc-api-access,vpc-backend-2 和 vpc-backend3 都添加到云企业网中,完成后如下图所示。

步骤2:配置带宽

购买一个带宽包,作为云企业网内通信需要。本例购买了一个最低的2M的带宽,您可以根据实际需要按需购买。

配置跨地域带宽设置,指定的互通地域配置带宽值,还可以将1个带宽包拆分到多个互通地域中。

步骤3:配置跨VPC路由

本步骤需要给CEN团队提工单。注意按照 ResolveAndRouteServiceInCen 接口的参数说明,提供配置信息。打通API网关通过内网访问到张家口的服务。

AccessRegionIds.1=cn-zhangjiakou
AccessRegionIds.2=cn-shanghai
CenId=cen-uggzcthgz7cwsl7prr      #云企业网的实例ID
Host=100.104.255.128/26                #通过API网关专享实例内网VPC出口地址
HostRegionId=cn-shanghai
HostVpcId=vpc-uf65amr4k3aepd0u4gnxa     #API网关在上海region,这个是vpc-api-access的VPCID			

其中API网关专享实例接入内网VPC的出口地址,可以在实例管理中查询到,如下图所示

工单回复配置完成后,在云企业网控制台查看配置的路由,能看到上海和张家口region都加了一些路由策略。而且都有一条自定义路由,是根据上面提供的信息添加的。

4 配置API网关到VPC的访问权限

步骤4 : 创建VPC授权

ecs-2等三个ECS实例本例中为API后端服务,因此在配置API之前,需要先创建API网关访问vpc-backend-1、vpc-backend-2和vpc-backend-3等3个VPC的访问授权。在API网关控制台添加VPC授权,如下图所示。

注意:张家口的服务,vpcId需要填写 vpc-api-access的vpc id,”实例ID/IP“ 需要填写张家口对应提供服务的ecs的内网IP,端口填写服务端口。

5 配置API

步骤5:创建API分组

先创建一个分组,实例选择刚刚之前创建的VPC专享实例。

步骤6:创建API并发布

在刚刚创建的分组下创建3个API,后端配置分别选择3个不同的VPC授权,对应3个不同的后端地址。其中为了方便进行curl调用测试,本例选择了“无认证”方式。

API保存完后,需要进行发布,本例为了测试方便,发布到“线上”环境。

最终发布了三个API,对应关系为:

  • /test/api/backend1,对应ecs-2上的API
  • /test/api/backend2,对应ecs-3上的API
  • /test/api/backend3,对应ecs-4上的API

6 配置VPC到API网关的内网访问权限

API网关的专享实例默认没有开通VPC访问,需要用户自己打开。

步骤7: 开通专享实例的入访VPC

在专享实例页面。点击“入访VPC”后的选择VPC,选择vpc-api-access的vpc id,表示可以通过vpc-api-access内网访问到API网关。

步骤8:开通API分组的内网域名

在分组详情页面,开通内网二级域名,点击开通后,API网关会给分组分配一个内网VPC二级域名。该域名可以直接调用该分组下的API。

注意:API分组默认开通互联网访问,您可以根据业务情况通过关闭公网二级域名来停止互联网访问,但注意禁止后,将不能通过API网关控制台进行在线调试。

7 内网访问测试

  • 验证A路径(黑色)的访问

A路径ecs-1访问ecs-3上的API,因此在ecs-1上用curl访问的结果如下图所示。

  • 验证B路径(红色)的访问

B路径ecs-4访问ecs-2上的API,因此在ecs-4上用curl访问的结果如下图所示。

  • 验证C路径(蓝色)的访问

C路径ecs-3访问ecs-4上的API,因此在ecs-3上用curl访问的结果如下图所示。

8 使用限制

  • 仅限API网关专享实例。