全部产品
Search
文档中心

负载均衡:ALB Ingress概述

更新时间:Feb 29, 2024

为了更好地支持云原生场景,应用型负载均衡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是由Controller完全托管的,您不能自行在ALB控制台上进行配置,否则可能造成Ingress服务的异常。关于ALB额度的更多信息,请参见使用限制

ALB Ingress与云原生服务做了深度集成,在具备丰富功能的同时也保证了易用性,在容器服务ACK/ACK Serverless中使用ALB Ingress网关的操作流程如下:配置步骤

功能

描述

控制台安装ALB Ingress Controller

阿里云Serverless Kubernetes集群,基于ALB七层转发规则提供了托管的ALB Ingress Controller。

说明
  • Kubernetes版本≥1.18。

  • 如果您使用的是Flannel网络插件,则ALB Ingress后端Service服务仅支持NodePort和LoadBalance类型。

您可以通过在创建集群时安装ALB Ingress Controller,也可以通过在组件管理页面安装ALB Ingress Controller。具体操作,请参见:

授权ALB Ingress Controller

安装完ALB Ingress Controller后,若需要在ACK专有版集群中通过ALB Ingress访问服务,在部署服务前您还需要授予ALB Ingress Controller的相关权限。具体操作,请参见为ACK专有集群授予ALB Ingress Controller访问权限

创建AlbConfig和IngressClass

完成ALB Ingress Controller授权后,您可以通过创建AlbConfig,然后创建IngressClass并将AlbConfig与IngressClass进行关联,最后通过注解项配置ALB Ingress的转发规则。配置完以上步骤,客户端就可以通过ALB Ingress访问K8s中的资源。具体操作,请参见:

创建Ingress/Service/Deployment等K8s资源

配置完以上步骤后,您可以在K8s中部署Service、Deployment等服务,使客户端可以通过ALB Ingress访问K8s中部署的服务。具体操作,请参见:

说明

ALB Ingress不仅可以通过注解项配置转发规则,还可以通过注解项实现会话保持、灰度发布等高级功能。关于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的优势

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则不存在这个问题。

  • 高QPS相关业务

    互联网业务往往具有高QPS的特点,比如预期内的大促活动和突发的热点事件。ALB支持自动弹性,高QPS时会自动弹出更多VIP,通过一个ALB实例即可支持百万QPS,因此ALB处理延迟要比Nginx的低,且Nginx在处理HTTPS短连接时由于没有使用硬件加速卡,单机性能较低,高QPS下需要较多机器。

  • 高并发连接相关业务

    物联网业务由于终端设备数量大,往往具有高并发连接的特点。ALB Ingress基于洛神云网络平台,支持对用户session进行收敛,单个ALB实例支持千万级连接数;Nginx Ingress需要用户自行运维,单台设备支持的session数有限,即使使用网络增强型虚拟机,依然存在容量风险,需要维护大量设备。

  • 业务存在峰谷相关业务

    费用方面ALB也存在优势,特别是对于有波峰波谷的业务,比如电商和游戏。因为ALB按量计费,波谷期间消耗的LCU少,且支持自动弹性,用户无需关注和应对自身业务流量模型。而Nginx在波谷期间往往有闲置成本,用户需要根据业务流量调整机器到合适的数量和规格。另外考虑到容灾需要,Nginx通常还需要有资源缓冲区,这些都会产生额外的成本。

ALB Ingress应用场景

ALB Ingress具备超强性能、自动弹性、免运维和开放可编程等特性。

  • 通过多级负载和多级调度,单实例可处理高达100万QPS

  • 通过软硬件一体化和硬件加速卡,具备超强转发性能

  • 通过自动弹性让运维更简单,服务等级协议SLA多实例可用性高达99.995%

  • 通过自定义转发平台,提供丰富的高级路由特性

ALB Ingress可覆盖多种业务场景,以下是几个常见的应用场景:应用场景