可作为API网关后端服务的VPC内资源主要包括ECS以及CLB,本文主要讲述如何创建一个高可用的后端服务。
概述
使用阿里云专有网络VPC,可以构建出一个隔离的网络环境,并可以自定义IP地址范围、网段、路由表和网关等。API网关也支持您部署在专属网络VPC中的服务开放API。若您的后端服务在VPC环境,需要进行授权API网关访问才可开放相应API。
1.授权与绑定VPC
开放VPC环境的API,需要您先授权API网关可访问您VPC内的服务。授权时需指定API网关可以访问的资源+端口,如:CLB 的443端口、ECS 的80端口。
授权成功后,API网关将通过内网访问VPC内部资源。
此授权只会被用作API网关访问相应后端资源。
API网关不可访问未被授权的资源或者端口。例如:只将VPC 中CLB 的80端口授权给API网关,那么API网关只能访问VPC 中CLB 的80端口。
可用作API网关后端服务的VPC内资源包括CLB实例以及ECS实例:
ECS实例:创建授权时支持绑定VPC网络的ECS实例,实例ID及地址处可填写ECS实例的实例ID,也可以填写ECS实例的私网IP。
CLB实例:目前API网关仅支持绑定内网CLB实例,实例ID及地址处可填写CLB实例的实例ID或是实例私网IP。
2.构建高可用架构
为了构建高可用架构,建议您可以选择内网CLB作为API网关的后端服务,负载均衡可以将访问流量根据转发策略分发到后端多个ECS实例,既能提高整个系统的性能,又能提高应用的高可用。
2.1 准备VPC环境
购买VPC环境的CLB及ECS,并搭建服务,本示例CLB监听的是ECS的80端口,ECS中部署的是简单的NGINX环境。CLB需使用内网实例。
2.2 创建VPC授权
进入API网关控制台-API管理-VPC授权 ,点击创建授权。进入授权页面,输入VPC授权名称;然后输入VPCId、实例ID或实例的私网地址 ,以及服务端口号。若需要指定域名来访问CLB或ECS上的站点(vhost),可将域名配置到Host。
VPC名称:为此条授权的名称标识,供创建API时选择后端地址使用,所以为了便于后续管理,请保证此名称的唯一。
2.3 创建API
创建API的流程与其他类型API方式一致,创建API分组以及定义API可参考创建 API
创建应用以及授权可参考创建后端服务为VPC内资源的API
2.4 测试API
可以通过以下方式测试您的API
2.5 安全
API网关通过内网调用VPC内资源的后端服务,如您有更高的安全要求,或是您的内网CLB中已经配置了黑白名单,您需要在白名单中放行API网关的出口地址。CLB黑白名单设置请参考负载均衡访问控制
ECS实例若设置了安全组,则需要在安全组中放行API网关的出口地址,ECS添加安全组规则请参考添加安全组规则
API网关的出口地址获取详见创建后端服务为VPC内资源的API
常见问题
1、是否支持公网CLB?
不支持,如您的API网关想要使用内网调用CLB,那么只支持绑定内网CLB;如您需要通过公网调用CLB,您可以创建后端服务为HTTP(S)的API来调用。
2、是否可以绑定多个VPC?
可以,若您的后端服务在多个VPC,可以添加多个授权。
3、为什么我无法授权我的VPC?
请确认VPCID、实例ID和端口号的正确,并保证授权策略和VPC在同一个区域。
4、授权API网关后,我的VPC安全么?
只有授权后,API网关才可调用
授权后,只有您授权过的API网关可以调用
您还可以在后端ECS和CLB实例中设置访问控制
5、API网关是否支持跨地域的VPC?
支持,使用cen打通网络之后就行,关于CEN的配置方式,详情见 什么是云企业网