通過本文,您可以瞭解與Serverless 應用引擎 SAE(Serverless App Engine)網路相關的概念,以及面對不同的網路訪問需求時如何選擇適配的網路類型。
阿里雲網路基礎概念

Virtual Private Cloud:基於阿里雲建立的自訂私人網路,不同的專用網路之間在邏輯上徹底隔離。
說明私人網路預設不可訪問公網。
交換器(vSwitch):交換器是組成專用網路的基礎網路裝置,對應實體物理機房。在VPC內建立雲資源時,必須指定雲資源所串連的交換器。
Elastic IP Address(EIP):只能和一個資源(ECS、SAE執行個體等)綁定,綁定的資源具備出、入公網的能力。
NAT Gateway(NAT Gateway):支援VPC內的資源訪問公網(SNAT)。區別於EIP的核心功能,公網NAT Gateway可用於VPC內的所有資源,而EIP只能用於VPC內的一個資源。
SAE網路訪問主要情境與方式
將應用部署到SAE後,您可能會遇到以下網路訪問需求。概念圖如下所示。
SAE應用需要被公網訪問(入口流量)
您可以通過以下方式實現。
SAE Ingress:基於SAE Ingress(網關路由)來訪問應用,可以通過公網API Gateway、公網ALB或公網MSE雲原生網關來實現,可以根據不同的網域名稱、路徑路由到不同的SAE應用。
SAE EIP:為SAE應用的每個執行個體綁定一個EIP,使該執行個體能夠同時具備出、入公網的能力。
SAE應用需要訪問公網(出口流量)
您可以通過以下方式實現。
NAT Gateway:為SAE應用關聯的VPC配置公網NAT Gateway,則所有相關的SAE應用都具備了訪問公網的能力。
SAE EIP:為SAE應用的每個執行個體綁定一個EIP,使該執行個體能夠同時具備出、入公網的能力。
利用註冊中心實現微服務應用間互訪
更多資訊,請參見基於Nacos等註冊中心實現服務註冊與發現。
實現應用間內網互訪
Serverless模式下,每次部署都會產生新的內網IP,但不支援直接基於執行個體的IP來互相訪問應用。您可以通過以下方式實現。
SAE Ingress:基於SAE Ingress(網關路由)來訪問應用,可以通過私網API Gateway、私網ALB或私網MSE雲原生網關來實現,可以根據不同的網域名稱、路徑路由到不同的SAE應用。
SAE需要訪問VPC內的ECS、雲資料庫RDS和雲資料庫 Tair(相容 Redis)等
SAE基於阿里雲VPC網路,因此無需額外配置,可以直接存取同一VPC內的資源,ECS、雲資料庫RDS和雲資料庫 Tair(相容 Redis)等。反之,同一VPC內的阿里雲資源也可以訪問SAE。
需要確認安全性群組、產品白名單是否放開。如果遇到問題,請參考常見問題的步驟進行排查。
SAE網路訪問對比項
SAE中Service(服務)和Ingress(網關路由)的區別
SAE Ingress(網關路由),具備根據網域名稱、路徑路由到不同應用的能力(如下圖),而Service不具備該能力。因此,在滿足需求的前提下,建議您優先考慮使用網關路由。在需要使用4層TCP協議訪問或者無法通過網域名稱訪問等情境下,您可以考慮使用Service。
SAE中Service(服務)和K8s ServiceName的區別
K8s服務有兩種模式,一種是基於LoadBalancer(對應於SAE Service,可以通過NLB或CLB來實現),另一種是基於ClusterIP。SAE沒有直接提供ClusterIP,而是提供了一個可供訪問的網域名稱(即K8s ServiceName)。兩者的主要區別如下。
對比項 | Service | K8s ServiceName |
費用 | 免費 | |
適用情境 | 適用於從公網或私網訪問應用。 | 僅適用於SAE應用之間互訪。 |
營運 | 支援配置相關的監控、警示以及收集訪問日誌到SLS,提供細粒度的問題排查能力。 | 未提供獨立的監控、警示、訪問日誌等能力,需要應用側本身配置警示和日誌。 |
ALB網關路由和CLB網關路由的區別
ALB(Application Load Balancer)是阿里雲推出的專門面向HTTP、HTTPS和QUIC等應用程式層負載情境的負載平衡服務。針對網關路由情境,建議您優先考慮使用ALB。更多資訊,請參見Server Load Balancer產品家族介紹。
基於NAT訪問公網和EIP訪問公網的區別
EIP訪問公網的樣本圖如下,每個執行個體都會綁定一個EIP。如果EIP不足,則會建立失敗,導致執行個體無法對外提供服務。
NAT和EIP兩種模式的主要差異如下。
對比項 | NAT | EIP |
生效範圍 | NAT可以控制在VPC或者vSwitch層級,為VPC或者vSwitch內所有無公網IP的執行個體提供訪問公網的代理服務。一個VPC或者vSwitch只需要配置一個NAT,其所有執行個體將具備出公網的能力。 | EIP為執行個體層級,例如10個執行個體就需要10個EIP。一個執行個體綁定EIP後,將同時具備出網和入網的能力。 |
是否固定公網IP | 是。 | 否。新的執行個體成功綁定EIP後,SAE才會銷毀原先的執行個體並解除綁定原來的EIP。因此,需保證EIP數量至少為執行個體數量加一。EIP是變化的,是一個IP池。 |
典型情境 | 應用會自動彈性擴縮,新的執行個體預設需要出公網的能力,且需要固定IP(95%的使用者都適合該情境)。 | 可接受EIP可變,需要直連執行個體的情境(例如線上會議),另外還需要自行精細化地控制每個執行個體的生命週期。 |
費用 | 計費詳情,請參見NAT Gateway計費。 | 計費詳情,請參見EIP計費。執行個體數不超過20個時,EIP成本更優。 |
常見問題
SAE應用如何訪問公網?
首先參照下圖,明確您的需求是“出”公網還是“入”公網。如果是“出”流量,則參考本小節;如果是“入”流量,請參見SAE應用如何被公網訪問?。
SAE可以通過為SAE應用關聯的VPC配置公網NAT Gateway或為SAE應用的每個執行個體綁定一個EIP兩種方式訪問公網。
SAE應用如何被公網訪問?
首先參照下圖,明確您的需求是“出”公網還是“入”公網。如果是“入”流量,則參考本篇文章;如果是“出”流量,請參見SAE應用如何訪問公網?。
SAE可以通過應用服務(Service)、網關路由(Ingress)或為SAE應用的每個執行個體綁定一個EIP三種方式被公網訪問。
SAE應用如何和公網網域名稱綁定?
SAE本身並不處理和網域名稱相關的操作,您可以在SAE配置ALB或CLB後,擷取相關的公網IP或者網域名稱,再到網域名稱DNS服務進行綁定。
SAE應用無法訪問ECS怎麼辦?
請按照以下步驟排查。
確認SAE和ECS伺服器都在同一個VPC內,並檢查安全性群組配置是否放開相關的連接埠。
登入應用執行個體的Webshell,執行ping、telnet等命令檢測與ECS的連通性。如果容器中沒有這些命令,請先安裝。
訪問公網ECS地址的具體操作,請參見SAE應用如何訪問公網?。
SAE應用無法訪問雲資料庫RDS和雲資料庫 Tair(相容 Redis)等怎麼辦?
請先確認SAE應用訪問的雲資料庫RDS或者雲資料庫 Tair(相容 Redis)地址,屬於公網地址還是內網地址。內網地址的網路品質和時延都優於公網,因此同一個VPC內優先推薦內網地址。網路的費用與建立的資源類型有關,更多資訊,請參見產品計費。如果屬於不同VPC,在條件允許的情況下,推薦您使用雲企業網CEN(Cloud Enterprise Network)打通,再採用內網地址。確認地址類型後,請按照以下步驟排查。
確認是否已配置白名單。
說明內網訪問需添加VPC/vSwitch網段白名單,公網訪問需要將NAT Gateway的公網IP或應用執行個體的EIP添加到公網白名單。
如果未配置,請參考應用訪問阿里雲資料庫進行配置。
登入應用執行個體的Webshell,執行ping、telnet等命令檢測與雲資料庫的連通性。如果容器中沒有這些命令,請先安裝。
如果ping、telnet命令都正常,還可以考慮直接在鏡像中安裝MySQL或者Redis用戶端,測試是否能聯通。如果能聯通,則可以排除SAE網路環境問題,需要您檢查程式設定。