可作為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的配置方式,詳情見 什么是云企業網