為了更好地支援雲原生情境,應用型負載平衡ALB(Application Load Balancer)與雲原生服務實現深度整合,推出了ALB Ingress-阿里雲官方雲原生Ingress網關。阿里雲Container ServiceACK/ACK Serverless等Kubernetes產品,可以藉助ALB Ingress,把叢集外部流量路由到叢集內部的Service,從而實現七層負載平衡功能。本文為您介紹ALB Ingress的基本概念、使用、產品優勢及應用情境。
ALB Ingress基本概念
阿里雲Container ServiceACK/ACK Serverless等Kubernetes產品,可以藉助ALB Ingress,把叢集外部流量路由到叢集內部的Service,從而實現七層負載平衡功能。K8s叢集中部署了ALB Ingress Controller組件,負責監聽API Server中AlbConfig/Ingress/Service等資源的變化,動態地轉換為ALB所需的配置。關於ALB Ingress Controller組件的介紹,請參見ALB Ingress Controller。
ALB Ingress的使用
ALB Ingress基於阿里雲應用型負載平衡ALB(Application Load Balancer)之上提供更為強大的Ingress流量管理方式,相容Nginx Ingress,具備處理複雜業務路由和認證自動探索的能力,支援HTTP、HTTPS和QUIC協議,滿足在雲原生應用情境下對超強彈性和大規模七層流量處理能力的需求。
ALB Ingress使用流程
ALB Ingress由Container ServiceKubernetes 版管理,您不能自行在ALB控制台上進行配置,否則可能造成Ingress服務的異常。關於ALB額度的更多資訊,請參見使用限制。
ALB Ingress與雲原生服務做了深度整合,在具備豐富功能的同時也保證了易用性。使用ALB Ingress的操作流程如下:
功能 | 描述 |
安裝ALB Ingress Controller組件 | 您可以通過在建立叢集時安裝ALB Ingress Controller,也可以通過在組件管理頁面安裝ALB Ingress Controller。具體操作,請參見:
說明
|
(可選)為專有叢集授予ALB Ingress Controller存取權限 | 安裝完ALB Ingress Controller後,若需要在ACK專有版叢集中通過ALB Ingress訪問服務,在部署服務前您還需要授予ALB Ingress Controller的相關許可權。具體操作,請參見為ACK專有叢集授予ALB Ingress Controller存取權限。 |
建立Service、Deployment等後端服務 | 您可以在K8s中部署Service、Deployment等後端服務,作為ALB Ingress轉寄流量的目標。具體操作,請參見:
|
(可選)建立AlbConfig與IngressClass資源 | 重要 如果您在安裝ALB Ingress Controller組件時,為ALB雲原生網關執行個體來源選擇了建立或使用已有選項,controller會自動建立一個名為“alb”的AlbConfig和名為“alb”的IngressClass資源,您可忽略此步驟。 完成ALB Ingress Controller授權後,您可以通過建立AlbConfig,然後建立IngressClass並將AlbConfig與IngressClass進行關聯。AlbConfig資源與ALB執行個體對應,定義了ALB執行個體的配置。而IngressClass資源定義了Ingress資源與AlbConfig的關聯。具體操作,請參見:
|
建立Ingress資源 | 配置完以上步驟後,您可以建立Ingress資源,在Ingress中配置將使用者請求流量轉寄到後端Service的轉寄規則,並將Ingress資源與IngressClass和AlbConifg關聯。配置完以上步驟,用戶端就可以通過ALB Ingress訪問K8s中的資源。具體操作,請參見: |
ALB Ingress不僅可以通過註解項配置轉寄規則,還可以通過註解項實現會話保持、灰階發布等進階功能。關於ALB Ingress其他功能,請參見:
容器叢集ACK:ALB Ingress服務進階用法
容器叢集ACK Serverless:ALB Ingress服務進階用法
ALB Ingress工作原理
ALB Ingress在相容K8s原生功能的基礎上,還通過AlbConfig CRD和Ingress註解項,提供了豐富的進階特性。
AlbConfig CRD:AlbConfig CRD用於配置ALB執行個體和監聽。一個AlbConfig對應一個ALB執行個體。
Ingress註解項:ALB Ingress可以通過註解項配置轉寄規則,配置完成後,HTTP/HTTPS請求可以通過註解項配置的轉寄規則轉寄到對應的Service上。
Service是後端真實服務的抽象,一個Service可以代表多個相同的後端服務。
ALB Ingress的優勢
ALB Ingress為全託管模式,提供更強大的Ingress流量管理能力。Nginx Ingress一般用於使用者對網關定製有強烈需求的情境,需要您自我維護。Nginx Ingress和ALB Ingress在產品定位、架構、效能、安全等方面均存在差異。關於Nginx Ingress和ALB Ingress的差異對比,請參見Nginx Ingress和ALB Ingress對比。
基於ALB Ingress和Nginx Ingress的差異,使用者在實際使用過程中,這幾種業務情境下ALB Ingress相比Nginx Ingress具有明顯的優勢。
使用長串連的情境
長串連適用於互動頻繁的業務情境,如物聯網IoT、互連網金融和線上遊戲等。當使用者進行配置變更時,Nginx Ingress由於需要Reload Nginx進程,會導致長串連閃斷,ALB Ingress配置變更支援熱更新,保持長串連穩定,有效避免此問題。
高並發串連情境
物聯網業務由於終端裝置數量大,往往具有高並發串連的特點。ALB Ingress依託洛神雲網路平台,能高效管理會話(session),單個ALB執行個體即支援千萬級串連數。Nginx Ingress支援的會話數有限,同時需要使用者自行營運。Nginx Ingress擴容時需要消耗叢集內的資源,並且還需要使用者手動操作,擴容成本較高。
高QPS情境
互連網業務往往具有高QPS的特點,比如預期內的大促活動和突發的熱時間點事件。ALB Ingress支援自動彈性,高QPS時會自動彈出更多VIP,通過一個ALB執行個體即可支援百萬QPS,因此ALB Ingress擁有比Nginx Ingress更低的延遲。同時Nginx Ingress依賴叢集內的資源,在高QPS情境中更可能會遭遇效能瓶頸。
業務存在流量峰穀的情境
對於有波峰波穀的業務,比如電商和遊戲,ALB Ingress擁有費用優勢。ALB Ingress隨用隨付,流量波穀期間消耗較少的LCU,產生的費用更低,且因為自動彈性,使用者無需關注和應對自身業務流量模型。而使用Nginx Ingress時則需要預留一部分叢集資源,在波穀時會產生閑置成本,並且還需要手動設定與預留資源。
同城多活、異地多活容災情境
對於商務持續性和可靠性有極高要求的行業和應用情境,比如社交網路平台和視頻流媒體服務。您可以通過在分布式雲容器平台ACK One建立ALB多叢集網關,使用ALB Ingress來管理多叢集流量,實現同城多活和異地多活的容災方案。
ALB Ingress應用情境
ALB Ingress具備超強效能、自動彈性、免營運和開放可程式化等特性。
通過多級負載和多級調度,單一實例可支援100萬QPS
通過軟硬體一體化和硬體加速卡,具備超強轉寄效能
通過自動彈性讓營運更簡單,服務等級協議SLA多執行個體可用性高達99.995%
通過自訂轉寄平台,提供豐富的進階路由特性
ALB Ingress可覆蓋多種業務情境,以下是幾個常見的應用情境: