ECS的應用交付網(wǎng)絡設計
概述
簡介
應用交付網(wǎng)絡旨在實現(xiàn)應用的發(fā)布、容災和防護,而負載均衡 SLB(Server Load Balancer)是構建應用交付網(wǎng)絡的核心組件。SLB包含面向4層的網(wǎng)絡型負載均衡NLB、面向7層的應用型負載均衡ALB和傳統(tǒng)型負載均衡CLB。作為阿里云官方的云原生網(wǎng)關,SLB在應用交付網(wǎng)絡中發(fā)揮著至關重要的作用。本文檔將詳細介紹如何選擇、部署和使用負載均衡產(chǎn)品,以構建高效的應用交付網(wǎng)絡。
基本概念
VPC:專有網(wǎng)絡VPC(Virtual Private Cloud)是用戶基于阿里云創(chuàng)建的自定義私有網(wǎng)絡, 不同的專有網(wǎng)絡之間二層邏輯隔離,用戶可以在自己創(chuàng)建的專有網(wǎng)絡內(nèi)創(chuàng)建和管理云產(chǎn)品實例,比如ECS、SLB、RDS等。
VIP:虛擬IP地址VIP(Virtual IP Address)是一種未分配給特定計算機或網(wǎng)絡接口的IP地址。它可以在不同的物理服務器或設備之間動態(tài)分配,以實現(xiàn)負載均衡、高可用性和冗余。
DNS摘除:DNS摘除(DNS Cutover)是指在網(wǎng)絡遷移或切換過程中,更新DNS記錄以將流量從一個服務器或服務轉移到另一個服務器或服務的過程。通常用于確保在遷移過程中服務的連續(xù)性。
CNAME:CNAME記錄是一種DNS記錄類型,它將一個域名別名指向另一個域名。解析CNAME記錄時,DNS服務器會將請求重定向到別名指向的目標域名,并返回目標域名的A記錄(IP地址)。
ALB:應用型負載均衡ALB(Application Load Balancer)是阿里云推出的專門面向HTTP、HTTPS和QUIC等應用層負載場景的負載均衡服務,具備超強彈性及大規(guī)模應用層流量處理能力。ALB具備處理復雜業(yè)務路由的能力,與云原生相關服務深度集成,是阿里云官方提供的云原生Ingress網(wǎng)關。
NLB:網(wǎng)絡型負載均衡NLB(Network Load Balancer )是阿里云面向萬物互聯(lián)時代推出的新一代四層負載均衡,支持超高性能和自動彈性能力,單實例可以達到1億并發(fā)連接,幫您輕松應對高并發(fā)業(yè)務。
CLB:傳統(tǒng)型負載均衡CLB(Classic Load Balancer)是將訪問流量根據(jù)轉發(fā)策略分發(fā)到后端多臺云服務器的流量分發(fā)控制服務。CLB擴展了應用的服務能力,增強了應用的可用性。
NIS:網(wǎng)絡智能服務 NIS(Network Intelligence Service)是一系列云上網(wǎng)絡AIOps工具集,提供了云上網(wǎng)絡從網(wǎng)絡規(guī)劃到網(wǎng)絡運維全生命周期。包括流量分析、網(wǎng)絡巡檢、網(wǎng)絡性能監(jiān)控、網(wǎng)絡診斷、路徑分析、網(wǎng)絡拓撲等功能,幫助用戶優(yōu)化網(wǎng)絡架構、提升網(wǎng)絡運維效率、降低網(wǎng)絡運營成本。
云監(jiān)控:云監(jiān)控(CloudMonitor)是一項針對阿里云資源和互聯(lián)網(wǎng)應用進行監(jiān)控的服務。
共享帶寬:共享帶寬提供地域級帶寬共享和復用功能。創(chuàng)建共享帶寬實例后,您可以將同地域下的彈性公網(wǎng)IP(EIP)添加到共享帶寬實例中,復用共享帶寬中的帶寬,節(jié)省公網(wǎng)帶寬使用成本。
設計原則
為幫助應用系統(tǒng)實現(xiàn)快速、可靠、安全的發(fā)布體驗,應用交付網(wǎng)絡設計需考量如下關鍵點。
性能:應具備與業(yè)務高峰相匹配的性能上限(吞吐帶寬、新建、并發(fā)以及每秒請求數(shù))。
彈性:應具備隨業(yè)務量增減而自動彈性伸縮的承載力,以及與之匹配的計價方案。
穩(wěn)定:應具備健壯的架構及健全的容災機制,從而保障應用的穩(wěn)定發(fā)布。
安全:應具備一定程度的應用層、傳輸層、網(wǎng)絡層的防護能力。
可觀測:應具備完善的監(jiān)控指標和日志信息,以便實時監(jiān)控分析及排查問題。
您可以根據(jù)應用系統(tǒng)對負載均衡的性能和功能要求,并結合具體的組網(wǎng)場景,權衡上述5個關鍵點,設計合適的產(chǎn)品選型及部署方案。
設計關鍵點
負載均衡選型階段
負載均衡的選型階段,需重點考慮性能(承載力維度和功能支持維度)、穩(wěn)定、彈性、安全等四個關鍵點。
前提
明確應用系統(tǒng)所需負載均衡的類型(4層或7層),是負載均衡選型的前提。
對比項 | ALB | NLB | CLB |
產(chǎn)品定位 |
|
|
|
如應用系統(tǒng)需要4層負載均衡,需選擇NLB或CLB。
如應用系統(tǒng)需要7層負載均衡,需選擇ALB或CLB。
性能關鍵點
明確應用系統(tǒng)對于負載均衡的性能需求,從而針對性進行負載均衡選型。
對比項 | ALB | NLB | CLB |
產(chǎn)品架構與性能 |
|
|
|
轉發(fā)能力 |
|
|
|
后端業(yè)務類型 |
|
|
|
運維能力 |
|
|
|
云原生集成 |
| 支持ACK/ASK集成(1.24版本以后) | 支持較弱,需要與阿里云ACK或ASK等容器服務結合使用 |
典型應用場景 |
|
|
|
承載力維度
對于4層負載均衡,如應用系統(tǒng)對新建連接數(shù)、并發(fā)連接數(shù)的性能上限及彈性能力具有較高要求,建議選擇NLB。
對于7層負載均衡,如應用系統(tǒng)對每秒請求數(shù)QPS的性能上限及彈性能力具有較高要求,建議選擇ALB。
如對負載均衡的4層或7層的性能上限無較高要求,可考慮選擇CLB。
功能支持維度
對于4層負載均衡,如應用系統(tǒng)對4層TCPSSL卸載、洪峰限速、云原生集成等功能具有較高要求,建議選擇NLB。
對于7層負載均衡,如應用系統(tǒng)對7層路由、云原生Ingress網(wǎng)關等功能具有較高要求,建議選擇ALB。
如對負載均衡的4層或7層的功能特性無較高要求,可考慮選擇CLB。
穩(wěn)定關鍵點
ALB、NLB、CLB的容災架構和機制有所不同,您需要先明確應用系統(tǒng)對于負載均衡的容災需求,從而針對性地進行負載均衡選型。
多可用區(qū)多活模式
ALB和NLB均支持多可用區(qū)部署。在應用系統(tǒng)所在的地域支持2個及以上可用區(qū)的情況下,為了保障業(yè)務的高可用性,建議至少選擇兩個可用區(qū)進行部署。其工作原理主要通過域名對外提供服務,域名會進行CNAME解析,指向NLB和ALB的域名,然后將業(yè)務流量調(diào)度至所選可用區(qū)內(nèi)的ALB和NLB實例的VIP(虛擬IP)。當某個可用區(qū)出現(xiàn)故障或不可用時,該可用區(qū)可被置于DNS摘除狀態(tài),從而實現(xiàn)容災逃逸。這種機制確保了在單個可用區(qū)發(fā)生故障時,流量可以自動切換到其他可用區(qū),保證業(yè)務的連續(xù)性和高可用性。
雙可用區(qū)主備模式
CLB已在大部分地域支持多可用區(qū)類型的實例,此類型實例會部署在兩個可用區(qū),默認啟用主可用區(qū)。當主可用區(qū)出現(xiàn)故障或不可用時,CLB有能力在短時間內(nèi)(約30秒)切換到備可用區(qū)并恢復服務。當主可用區(qū)恢復時,CLB會自動切換回主可用區(qū)。
說明CLB的主備可用區(qū)是可用區(qū)級別的容災。只有當主可用區(qū)整體不可用時,如機房整體斷電或者機房出口光纜中斷等,CLB才會切換到備可用區(qū)。而并非某個實例出現(xiàn)故障,就切換到備可用區(qū)。
通過上述描述可以看出,相較于CLB的容災架構和機制,NLB和ALB采用的多可用區(qū)多活模式提供了更大的容災范圍。具體來說,單個負載均衡實例可以部署在2個及以上的可用區(qū)內(nèi),顯著提升了系統(tǒng)的高可用性和故障恢復能力。此外,這種模式還具備更強的故障逃逸能力,您可以自主操作,將異常可用區(qū)的DNS記錄摘除,從而快速響應和處理故障。因此,您可以根據(jù)應用系統(tǒng)對穩(wěn)定性和可用性的要求,選擇合適的負載均衡產(chǎn)品。對于高可用性要求較高的系統(tǒng),NLB和ALB的多可用區(qū)多活模式無疑是更優(yōu)的選擇。
彈性關鍵點
對于用戶而言,彈性的直接價值,是在業(yè)務波峰時能夠及時獲取相應的承載力,并僅需按實際使用量付費,避免資源預置所造成的成本浪費。因此,根據(jù)前序章節(jié)的介紹:
如應用系統(tǒng)計劃選用ALB或NLB,那么此兩款負載均衡產(chǎn)品在具備高性能上限的情況下,采用按使用量計費模式,滿足按需使用&按量付費的彈性要求。
如應用系統(tǒng)計劃選用CLB,CLB支持“按規(guī)格計費”和“按使用量計費”兩種計費模式,采用按使用量計費模式,便可滿足按需使用&按量付費的彈性要求。
安全關鍵點
ALB、NLB、CLB的安全能力有所不同,明確應用系統(tǒng)對于負載均衡的安全需求,從而針對性地進行負載均衡選型。
關于七層負載均衡:Web攻擊防護能力
如應用系統(tǒng)具有Web攻擊防護需求,優(yōu)先推薦采用ALB。ALB WAF增強版支持阿里云WAF3.0服務化接入。
WAF3.0的服務化接入,是指通過SDK模塊化的方式集成在ALB中,并通過SDK提取流量并進行檢測和防護。該集成方式對應用系統(tǒng)有如下兩方面幫助:
轉發(fā)方面:WAF不參與流量轉發(fā),可避免因額外引入一層轉發(fā)而帶來各種兼容性和穩(wěn)定性問題,并降低訪問延遲。
部署方面:無需修改DNS、配置證書、端口、回源算法等復雜的WAF接入轉發(fā)配置,簡化部署流程。
關于四層負載均衡:傳輸層加密
如果應用系統(tǒng)需使用四層負載均衡,且具有TCPSSL加密要求,推薦選擇NLB。
NLB支持配置TCP SSL監(jiān)聽,實現(xiàn)TCP SSL卸載,將加密流量解析為明文流量后分發(fā)至后端服務器,從而使后端服務器的配置得以簡化、工作負載得以降低,繼而提高業(yè)務處理效率。
負載均衡部署階段
完成負載均衡的選型后,在部署階段,需重點考慮性能、穩(wěn)定、安全等三個關鍵點。
性能關鍵點
實例處理性能
對于ALB或NLB,實例具有較高的性能上限以及較強的彈性能力。但如果應用系統(tǒng)需承載可預知的突發(fā)流量(如大促活動等),建議提前與阿里云商務經(jīng)理聯(lián)系,以便評估檢查相關實例對突發(fā)流量的承載能力和彈性能力。
對于CLB,無論使用按規(guī)格計費模式或按使用量計費模式,單實例可提供的最大處理能力同S3.large規(guī)格(最大連接數(shù)1,000,000、新建連接數(shù)100,000、每秒查詢數(shù)50,000)。建議根據(jù)應用系統(tǒng)的流量模型和規(guī)模,選擇適合的計費模式、實例規(guī)格以及實例數(shù)量。
公網(wǎng)帶寬性能
對于公網(wǎng)類型的ALB或NLB,通過彈性公網(wǎng)IP(EIP)提供公網(wǎng)能力。
如果應用系統(tǒng)的流量模型較平穩(wěn),共享帶寬可考慮選擇“按帶寬計費模式”,設定業(yè)務所需的帶寬峰值。
如果應用系統(tǒng)的流量模型峰谷效應明顯,共享帶寬可考慮選擇“按主流量計費模式”(即在一個計費周期內(nèi),取共享帶寬實例的入方向和出方向中流量較大的為主流量,對主流量進行計費),并設定業(yè)務所需的帶寬峰值。
說明按流量計費的EIP,帶寬峰值上限為200Mbps。因此,為保障應用系統(tǒng)獲得足夠的帶寬保障,建議搭配使用共享帶寬產(chǎn)品。
對于CLB,既可通過“私網(wǎng)類型CLB+EIP”的方式提供公網(wǎng)能力,也可直接使用“公網(wǎng)類型CLB”。但出于多個負載均衡實例的帶寬復用性以及IP地址的獨立保有性這兩方面考慮,更為推薦“私網(wǎng)類型CLB+EIP”的方式,并搭配使用共享帶寬產(chǎn)品。
穩(wěn)定關鍵點
實例的可用區(qū)規(guī)劃
如果使用ALB,至少選擇2個可用區(qū),ALB的可用區(qū)盡量與后端服務器的可用區(qū)保持一致。但ALB不支持“關閉跨AZ轉發(fā)”,即ALB的各VIP接收到客戶端的訪問流量時,會將流量轉發(fā)至所有可用區(qū)的后端服務器(即不局限于該VIP所屬可用區(qū))。
如果使用NLB,至少選擇2個可用區(qū),NLB的可用區(qū)盡量與后端服務器的可用區(qū)保持一致。且可考慮“關閉跨AZ轉發(fā)”,使NLB各VIP接收到客戶端的訪問流量時,僅將流量轉發(fā)至同可用區(qū)的后端服務器,從而規(guī)避跨AZ轉發(fā)。
如果使用CLB,CLB的主可用區(qū)盡量與后端服務器的可用區(qū)保持一致,從而規(guī)避跨AZ轉發(fā)。
后端服務器的健康檢查
建議開啟負載均衡的健康檢查功能,從而判斷后端服務器的業(yè)務可用性。當某臺后端服務器健康檢查出現(xiàn)異常時,負載均衡會自動將新的請求分發(fā)到其他健康檢查正常的后端服務器上;而當該后端服務器恢復正常運行時,負載均衡會將其自動恢復到負載均衡服務中進行流量轉發(fā)。健康檢查機制提高了業(yè)務整體可用性,避免了局部后端服務器異常對總體服務的影響,是保證業(yè)務高可用的關鍵要素。ALB、NLB、CLB的健康檢查協(xié)議類型均支持TCP和HTTP。
監(jiān)聽的限速設置
為防止非預期的洪峰流量超過后端服務器的承載力并導致“雪崩效應”,可以考慮使用負載均衡的監(jiān)聽級限速功能。在洪峰流量出現(xiàn)時,此功能可以確保后端服務器在其承載能力范圍內(nèi)處理請求。
ALB的每秒請求數(shù)(QPS)限速
對于ALB的目標監(jiān)聽,可設置“總QPS限速”或“客戶端顆粒度QPS限速”(基于客戶端源IP),這兩種限速方式可以單獨或同時配置。
NLB的新建連接數(shù)(CPS)限速
對于NLB的目標監(jiān)聽,可以設置在每個可用區(qū)(VIP)每秒可接受的新建連接數(shù)上限。
安全關鍵點
黑白名單的訪問控制
ALB和NLB均支持加入安全組,可通過ALB加入安全組或NLB加入安全組實現(xiàn)基于白名單或黑名單的訪問控制。
CLB提供監(jiān)聽級別的訪問控制。您可以針對不同的監(jiān)聽設置訪問白名單或黑名單:
開啟白名單:僅轉發(fā)來自所選訪問控制策略組中設置的IP地址或地址段的請求,白名單適用于應用只允許特定IP訪問的場景。
開啟黑名單:來自所選訪問控制策略組中設置的IP地址或地址段的所有請求都不會轉發(fā),黑名單適用于應用只限制某些特定IP訪問的場景。
TLS策略的自定義
對于七層負載均衡,針對HTTPS場景,ALB預置了部分常用的TLS安全策略以滿足加密需求,您可根據(jù)安全需求選擇合適的TLS安全策略,或者配置自定義TLS安全策略,從而保證應用系統(tǒng)的安全性。
對于四層負載均衡,針對TCPSSL場景,NLB預置了部分常用的TLS安全策略以滿足加密需求,您可根據(jù)安全需求選擇合適的TLS安全策略,或者配置自定義TLS安全策略,從而保證應用系統(tǒng)的安全性。
說明CLB不支持自定義TLS安全策略。
雙向認證
在HTTPS場景下,ALB(標準版和WAF增強版)、NLB以及CLB均支持雙向認證,能夠滿足應用系統(tǒng)的安全認證要求。而在TCPSSL場景中,NLB具備雙向認證能力,確保了高安全性的通信需求。具體操作可參考:使用ALB部署HTTPS業(yè)務(雙向認證)、通過NLB實現(xiàn)TCPSSL卸載(雙向認證)、使用CLB部署HTTPS業(yè)務(雙向認證)。
負載均衡使用階段
負載均衡的使用階段,需重點考慮可觀測關鍵點。
可觀測關鍵點
監(jiān)控
當應用系統(tǒng)遇到請求超時、流量限速等網(wǎng)絡連接問題,或需了解負載均衡的工作負載等數(shù)據(jù),可查看負載均衡所提供的監(jiān)控項指標。具體操作可參考:NLB監(jiān)控項說明、ALB監(jiān)控項說明、CLB監(jiān)控項說明。
日志
負載均衡可提供操作日志和訪問日志功能。具體操作可參考:ALB日志、NLB日志、CLB訪問日志、CLB操作日志。
操作日志:可以監(jiān)控并記錄賬號對負載均衡產(chǎn)品的使用行為。
訪問日志:收集了所有發(fā)送到7層負載均衡的請求的詳細信息(包括請求時間、客戶端IP地址、延遲、請求路徑和服務器響應等),可通過訪問日志分析客戶端行為、了解客戶端地域分布以及進行問題排查。
網(wǎng)絡智能服務
除使用NLB、ALB、CLB自身所提供的監(jiān)控日志能力外,建議考慮開啟網(wǎng)絡智能服務,進一步提升應用交付網(wǎng)絡的可觀測性。
設計最佳實踐
如前文所述,對于性能、穩(wěn)定、彈性、安全、可觀測等5項設計關鍵點,使用ALB或NLB將具有更高的匹配度。因此相較CLB,我們更為推薦用戶使用ALB或NLB構建應用交付網(wǎng)絡。下方總結的四個場景下的最佳實踐,將重點介紹基于ALB或NLB所構建的設計方案。
同地域的應用交付網(wǎng)絡
本文所描述的同地域的應用交付網(wǎng)絡,是指負載均衡與其掛載的后端服務器,均位于阿里云同一個Region。
4層負載均衡
設計關鍵點回顧與提煉:
穩(wěn)定關鍵點
至少選擇2個或2個以上的可用區(qū)創(chuàng)建NLB,且盡量與后端服務器所在可用區(qū)保持一致。
NLB可考慮“關閉跨AZ轉發(fā)”。
按需評估是否開啟新建連接限速,從而預防非預期的洪峰流量造成“雪崩效應”。
針對后端服務器組,啟用健康檢查。
性能關鍵點
公網(wǎng)類型NLB,建議搭配使用共享帶寬產(chǎn)品,且根據(jù)流量模型,選擇使用“主流量計費”或“按帶寬計費”。
安全關鍵點
根據(jù)應用系統(tǒng)的安全管控要求,評估是否將NLB加入安全組。如使用TCPSSL監(jiān)聽,評估是否自定義TLS策略以及是否啟用雙向認證。
7層負載均衡
設計關鍵點回顧與提煉:
穩(wěn)定關鍵點
至少選擇2個或2個以上的可用區(qū)創(chuàng)建ALB,且盡量與后端服務器所在可用區(qū)保持一致。
按需評估是否開啟QPS限速,從而預防非預期的洪峰流量造成“雪崩效應”。
針對后端服務器組,啟用健康檢查。
性能關鍵點
公網(wǎng)類型ALB,建議搭配使用共享帶寬產(chǎn)品,且根據(jù)流量模型,選擇使用“主流量計費”或“按帶寬計費”。
安全關鍵點
根據(jù)應用系統(tǒng)的安全管控要求,評估是否需將ALB加入安全組、評估是否自定義TLS策略以及評估是否啟用雙向認證。
跨地域的應用交付網(wǎng)絡
本文所描述的跨地域應用交付網(wǎng)絡,是指負載均衡與其掛載的后端服務器,位于阿里云不同Region。
如下圖所示,可基于NLB或ALB,構建跨地域的應用交付網(wǎng)絡,從而實現(xiàn)訪問入口的就近部署和跨地域容災。跨地域應用交付網(wǎng)絡部署可參考使用ALB掛載跨地域VPC內(nèi)的服務器、使用NLB掛載跨地域VPC內(nèi)的服務器。
IPv6應用交付網(wǎng)絡
負載均衡選型
應用系統(tǒng)如需借助負載均衡,構建支持IPv6的應用交付網(wǎng)絡,建議綜合考慮“IPv6端到端通信”和“IPv6至IPv4轉換”兩種場景,以確定負載均衡選型。
場景1:IPv6端到端通信
NLB和ALB,均支持掛載IPv6類型的后端服務器,從而將來自客戶端的IPv6訪問請求,以IPv6協(xié)議轉發(fā)至后端服務器,幫助應用系統(tǒng)實現(xiàn)全鏈路的IPv6通信。而CLB不支持。
場景2:IPv6至IPv4轉換
NLB、ALB、CLB,均具備IPv6至IPv4轉換能力,從而將來自客戶端的IPv6訪問請求,以IPv4協(xié)議轉發(fā)至后端服務器,幫助應用系統(tǒng)簡單快速地具備IPv6訪問能力。
綜上,由于NLB和ALB可同時兼顧“IPv6端到端通信”和“IPv6至IPv4轉換”,建議優(yōu)先選擇NLB或ALB構建IPv6應用交付網(wǎng)絡。
與此同時,NLB和ALB支持雙棧類型實例,即單個實例可同時具備IPv6地址和IPv4地址,從而構建統(tǒng)一的IPv6與IPv4應用交付網(wǎng)絡。而CLB不支持雙棧類型實例,需單獨創(chuàng)建IPv6類型實例和IPv4類型實例,使得IPv4和IPv6應用交付網(wǎng)絡相互獨立。因此選擇NLB或ALB,還可幫助簡化應用交付網(wǎng)絡架構。
負載均衡部署
IPv6應用交付網(wǎng)絡的負載均衡部署階段,同樣需重點關注“穩(wěn)定、安全、彈性、可觀測、自服務”這5項設計關鍵點。
IPv6端到端通信
步驟1: 為NLB或ALB所在VPC開啟IPv6。
步驟2: 創(chuàng)建“協(xié)議版本”為雙棧的NLB或ALB實例。
步驟3: 如NLB或ALB的IPv6地址需要公網(wǎng)可達,則需在NLB或ALB所在VPC的IPv6網(wǎng)關,為IPv6地址開通公網(wǎng)帶寬。
步驟4: 創(chuàng)建NLB或ALB的后端服務器組,并開啟IPv6掛載。
IPv6至IPv4轉換
NLB或ALB部署
步驟1: 為NLB或ALB所在VPC開啟IPv6。
步驟2: 創(chuàng)建“協(xié)議版本”為雙棧的NLB或ALB實例。
步驟3: 如NLB或ALB的IPv6地址需要公網(wǎng)可達,則需在NLB或ALB所在VPC的IPv6網(wǎng)關,為IPv6地址開通公網(wǎng)帶寬。
步驟4: 創(chuàng)建NLB或ALB的后端服務器組,無需開啟IPv6掛載。
CLB部署
創(chuàng)建“IP版本”為IPv6的CLB實例,且僅公網(wǎng)CLB實例支持IPv6。隨后完成負載均衡的常規(guī)配置即可。