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