为了更好地支持云原生场景,应用型负载均衡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可覆盖多种业务场景,以下是几个常见的应用场景: