通過本文,您可以了解與Serverless 應用引擎 SAE(Serverless App Engine)網(wǎng)絡相關的概念,以及面對不同的網(wǎng)絡訪問需求時如何選擇適配的網(wǎng)絡類型。
概念和能力索引
一級分類 | 二級分類 |
無 | |
視頻教程
阿里云網(wǎng)絡基礎概念
專有網(wǎng)絡(VPC):基于阿里云創(chuàng)建的自定義私有網(wǎng)絡,不同的專有網(wǎng)絡之間在邏輯上徹底隔離。
說明私有網(wǎng)絡默認不可訪問公網(wǎng)。
交換機(vSwitch):交換機是組成專有網(wǎng)絡的基礎網(wǎng)絡設備,對應實體物理機房。在VPC內創(chuàng)建云資源時,必須指定云資源所連接的交換機。
彈性公網(wǎng)IP(EIP):只能和一個資源(ECS、SAE實例等)綁定,綁定的資源具備出、入公網(wǎng)的能力。
NAT網(wǎng)關(NAT Gateway):支持VPC內的資源訪問公網(wǎng)(SNAT)。區(qū)別于EIP的核心功能,公網(wǎng)NAT網(wǎng)關可用于VPC內的所有資源,而EIP只能用于VPC內的一個資源。
SAE網(wǎng)絡訪問主要場景與方式
將應用部署到SAE后,您可能會遇到以下網(wǎng)絡訪問需求。概念圖如下所示。
SAE應用之間的內網(wǎng)互相訪問(非微服務)
Serverless模式下,每次部署都會產生新的內網(wǎng)IP,但不支持直接基于實例的IP來互相訪問應用。您可以通過以下方式實現(xiàn)。
SAE Service(CLB):基于阿里云負載均衡產品(私網(wǎng)CLB)實現(xiàn)的SAE服務來訪問。更多信息,請參見基于CLB配置應用服務訪問。
SAE ServiceName:基于SAE的K8s底座,實現(xiàn)的基于域名的應用訪問。每個SAE的應用會有一個SAE環(huán)境中可供訪問的域名。更多信息,請參見基于K8s ServiceName配置應用服務訪問。
SAE Ingress(ALB/CLB):基于阿里云負載均衡產品(私網(wǎng)ALB/CLB)實現(xiàn)的網(wǎng)關路由,可以根據(jù)不同的域名、路徑路由到不同的SAE應用。更多信息,請參見基于ALB/CLB配置網(wǎng)關路由(Ingress)訪問。
SAE應用需要被公網(wǎng)訪問(入口流量)
您可以通過以下方式實現(xiàn)。
SAE Service(CLB):基于阿里云負載均衡產品(公網(wǎng)CLB)實現(xiàn)的SAE服務訪問。更多信息,請參見基于CLB配置應用服務訪問。
SAE Ingress(ALB/CLB):基于阿里云負載均衡產品(公網(wǎng)CLB/ALB)實現(xiàn)的網(wǎng)關路由,可以根據(jù)不同的域名、路徑路由到不同的SAE應用。更多信息,請參見基于ALB/CLB配置網(wǎng)關路由(Ingress)訪問。
SAE EIP:為SAE應用的每個實例綁定一個EIP,使該實例能夠同時具備出、入公網(wǎng)的能力。更多信息,請參見基于EIP配置SAE實例公網(wǎng)訪問和訪問公網(wǎng)的能力。
SAE應用需要訪問公網(wǎng)(出口流量)
您可以通過以下方式實現(xiàn)。
NAT網(wǎng)關:為SAE應用關聯(lián)的VPC或者vSwitch配置NAT網(wǎng)關,則所有相關的SAE應用都具備了訪問公網(wǎng)的能力。更多信息,請參見配置NAT網(wǎng)關使SAE應用能訪問公網(wǎng)。
SAE EIP:為SAE應用的每個實例綁定一個EIP,則該實例會同時具備出、入公網(wǎng)的能力。更多信息,請參見基于EIP配置SAE實例公網(wǎng)訪問和訪問公網(wǎng)的能力。
SAE需要訪問VPC內的ECS、云數(shù)據(jù)庫RDS和云數(shù)據(jù)庫 Tair(兼容 Redis)等
SAE基于阿里云VPC網(wǎng)絡,因此無需額外配置,可以直接訪問同一VPC內的資源,如ECS、云數(shù)據(jù)庫RDS和云數(shù)據(jù)庫 Tair(兼容 Redis)等。反之,同一VPC內的阿里云資源也可以訪問SAE。
需要確認安全組、產品白名單是否放開。如果遇到問題,請參考常見問題的步驟進行排查。
微服務應用訪問注冊中心以及實例互相訪問
更多信息,請參見SAE微服務相關概念和能力。
SAE網(wǎng)絡訪問對比項
SAE中ServiceName和網(wǎng)關路由(Ingress)的區(qū)別
SAE基于阿里云SLB(CLB和ALB)實現(xiàn)的網(wǎng)關路由(Ingress),具備根據(jù)域名、路徑路由到不同應用的能力(如下圖),而ServiceName不具備該能力。因此,在滿足需求的前提下,建議您優(yōu)先考慮使用網(wǎng)關路由。在需要使用4層TCP協(xié)議訪問或者無法通過域名訪問等場景下,您可以考慮使用ServiceName。
更多信息,請參見以下文檔:
基于CLB實現(xiàn)的服務和基于域名(ServiceName)實現(xiàn)的服務的區(qū)別
K8s服務有兩種模式,一種是基于CLB,另一種是基于ClusterIP。SAE沒有直接提供ClusterIP,而是提供了一個可供訪問的域名。兩者的主要區(qū)別如下。
對比項 | CLB | Domain(ClusterIP) |
費用 | 免費 | |
運維 | CLB作為一個獨立的阿里云產品,支持配置相關的監(jiān)控、告警以及收集訪問日志到SLS,提供細粒度的問題排查能力。 | 未提供獨立的監(jiān)控、告警、訪問日志等能力,需要應用側本身配置告警和日志。 |
基于ALB實現(xiàn)的網(wǎng)關路由和CLB網(wǎng)關路由的區(qū)別
ALB(Application Load Balancer)是阿里云推出的專門面向HTTP、HTTPS和QUIC等應用層負載場景的負載均衡服務。針對網(wǎng)關路由場景,建議您優(yōu)先考慮使用ALB。更多信息,請參見負載均衡SLB產品家族介紹。
基于NAT訪問公網(wǎng)和EIP訪問公網(wǎng)的區(qū)別
EIP訪問公網(wǎng)的示例圖如下,每個實例都會綁定一個EIP。如果EIP不足,則會創(chuàng)建失敗,導致實例無法對外提供服務。
NAT和EIP兩種模式的主要差異如下。
對比項 | NAT | EIP |
生效范圍 | NAT可以控制在VPC或者vSwitch級別,為VPC或者vSwitch內所有無公網(wǎng)IP的實例提供訪問公網(wǎng)的代理服務。一個VPC或者vSwitch只需要配置一個NAT,其所有實例將具備出公網(wǎng)的能力。 | EIP為實例級別,例如10個實例就需要10個EIP。一個實例綁定EIP后,將同時具備出網(wǎng)和入網(wǎng)的能力。 |
是否固定公網(wǎng)IP | 是。 | 否。新的實例成功綁定EIP后,SAE才會銷毀原先的實例并解綁原來的EIP。因此,需保證EIP數(shù)量至少為實例數(shù)量加一。EIP是變化的,是一個IP池。 |
典型場景 | 應用會自動彈性擴縮,新的實例默認需要出公網(wǎng)的能力,且需要固定IP(95%的用戶都適合該場景)。 | 可接受EIP可變,需要直連實例的場景(例如在線會議),另外還需要自行精細化地控制每個實例的生命周期。 |
費用 | 計費詳情,請參見NAT網(wǎng)關計費。 | 計費詳情,請參見EIP計費。實例數(shù)不超過20個時,EIP成本更優(yōu)。 |
常見問題
SAE應用如何訪問公網(wǎng)?
首先參照下圖,明確您的需求是“出”公網(wǎng)還是“入”公網(wǎng)。如果是“出”流量,則參考本小節(jié);如果是“入”流量,請參見SAE應用如何被公網(wǎng)訪問?。
SAE可以通過配置NAT網(wǎng)關使SAE應用能訪問公網(wǎng)或者基于EIP配置SAE實例公網(wǎng)訪問和訪問公網(wǎng)的能力兩種模式訪問公網(wǎng),優(yōu)先推薦基于NAT的訪問模式。兩種模式的區(qū)別,請參見基于NAT訪問公網(wǎng)和EIP訪問公網(wǎng)的區(qū)別。
SAE應用如何被公網(wǎng)訪問?
首先參照下圖,明確您的需求是“出”公網(wǎng)還是“入”公網(wǎng)。如果是“入”流量,則參考本篇文章;如果是“出”流量,請參見SAE應用如何訪問公網(wǎng)?。
優(yōu)先推薦基于ALB/CLB配置網(wǎng)關路由(Ingress)訪問提供公網(wǎng)訪問。如果網(wǎng)關路由方式無法滿足您的需求,您可以參考基于CLB配置應用服務訪問或者基于EIP配置SAE實例公網(wǎng)訪問和訪問公網(wǎng)的能力提供訪問。主要區(qū)別如下。
對比項 | 網(wǎng)關路由(ALB/CLB) | 服務(CLB) | 彈性公網(wǎng)IP(EIP) |
是否具備路由能力 | 具備。可以根據(jù) | 不具備。只能訪問該端口背后的一個應用。 | 不具備。一般需要獲取EIP列表,并自行控制訪問策略。 |
是否支持7層協(xié)議 | 支持 | 支持 | 支持 |
是否支持4層協(xié)議 | 不支持 | 支持 | 支持 |
是否支持跨域/Rewrite等特性 | 支持 | 不支持。需要應用自行實現(xiàn)。 | 不支持。需要應用自行實現(xiàn)。 |
是否固定訪問IP | 是 | 是 | 否 |
費用 |
SAE應用如何和公網(wǎng)域名綁定?
SAE本身并不處理和域名相關的操作,您可以在SAE配置ALB或CLB后,獲取相關的公網(wǎng)IP或者域名,再到域名DNS服務進行綁定。
SAE應用無法訪問短信服務API怎么辦?
參考短信服務接入點,大部分地域只提供公網(wǎng)的接入方式。請先確認SAE應用是否已配置公網(wǎng)訪問能力。更多信息,請參見SAE應用如何訪問公網(wǎng)?。
SAE應用無法訪問ECS怎么辦?
請按照以下步驟排查。
確認SAE和ECS服務器都在同一個VPC內,并檢查安全組配置是否放開相關的端口。
在容器內執(zhí)行ping、telnet服務地址的命令檢測連通性。如果沒有這些命令,請先安裝常見命令(操作步驟)再執(zhí)行。
訪問公網(wǎng)ECS地址的具體操作,請參見SAE應用如何訪問公網(wǎng)?。
SAE應用無法訪問云數(shù)據(jù)庫RDS和云數(shù)據(jù)庫 Tair(兼容 Redis)等怎么辦?
請先確認SAE應用訪問的RDS或者Tair(兼容 Redis)地址,屬于公網(wǎng)地址還是內網(wǎng)地址。內網(wǎng)地址的網(wǎng)絡質量和時延都優(yōu)于公網(wǎng),因此同一個VPC內優(yōu)先推薦內網(wǎng)地址。網(wǎng)絡的費用與創(chuàng)建的資源類型有關,更多信息,請參見產品計費。如果屬于不同VPC,在條件允許的情況下,推薦您使用云企業(yè)網(wǎng)CEN(Cloud Enterprise Network)打通,再采用內網(wǎng)地址。確認地址類型后,請按照以下步驟排查。