本文中含有需要您注意的重要提示信息,忽略該信息可能對您的業務造成影響,請務必仔細閱讀。
為了更好地支持云原生場景,應用型負載均衡ALB(Application Load Balancer)與云原生服務實現深度集成,推出了ALB Ingress-阿里云官方云原生Ingress網關。阿里云容器服務ACK/ACK Serverless等Kubernetes產品,可以借助ALB Ingress,把集群外部流量路由到集群內部的Service,從而實現七層負載均衡功能。本文為您介紹ALB Ingress的基本概念、使用、產品優勢及應用場景。
ALB Ingress基本概念
阿里云容器服務ACK/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由容器服務Kubernetes 版管理,您不能自行在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時則需要預留一部分集群資源,在波谷時會產生閑置成本,并且還需要手動設置與預留資源。
ALB Ingress應用場景
ALB Ingress具備超強性能、自動彈性、免運維和開放可編程等特性。
通過多級負載和多級調度,單實例可處理高達100萬QPS
通過軟硬件一體化和硬件加速卡,具備超強轉發性能
通過自動彈性讓運維更簡單,服務等級協議SLA多實例可用性高達99.995%
通過自定義轉發平臺,提供豐富的高級路由特性
ALB Ingress可覆蓋多種業務場景,以下是幾個常見的應用場景: