应用型负载均衡ALB(Application Load Balancer)是阿里云推出的专门面向HTTP、HTTPS和QUIC等应用层负载场景的负载均衡服务,具备超强弹性及大规模七层流量处理能力。ALB具备处理复杂业务路由的能力,与云原生相关服务深度集成,是阿里云官方提供的云原生Ingress网关。
ALB特性
弹性自动伸缩
ALB同时提供域名与VIP,多级分发承载海量请求在可用区间弹性缩放,避免单可用区资源瓶颈允许用户自定义可用区组合,适应原有计算资源的分布。
先进的协议支持
ALB支持最先进的应用传输协议QUIC,对音视频、移动互联网应用更加友好,传输速度更快,链路更安全支持GRPC协议,实现海量微服务间的高效API通信。
基于内容的高级路由
ALB可基于HTTP标头、Cookie、HTTP方法等各种条件来识别特定业务流量,并将其转发至不同的后端服务,同时还支持重定向、重写甚至是添加用户自定义的HTTP标头等高级操作。
安全加持
ALB自带DDoS防护,一键集成WAF,全链路HTTPS满足Zero-Trust安全架构,更支持TLS 1.3、国密等最新加密协议,既有系统预制的安全策略,用户也可以自定义。
云原生应用
流量拆分、流量镜像等功能用于实现金丝雀发布,在线流量仿真等云原生开发模式,与ACK、SAE和开源K8s深度集成,简单易用,让您更聚焦业务本身。
弹性灵活的计费
ALB通过EIP和共享带宽提供公网能力,实现灵活公网计费;同时采用了更先进的、更适合弹性业务峰值的、基于容量单位(LCU)的计价方案。
ALB类型
阿里云提供公网和私网两种类型的ALB。您可以根据业务场景选择配置对外公开或对内私有的ALB,系统会根据您的选择来决定是否使用共享带宽和弹性公网IP。
上图中黄色半透明框中所有元素构成一个面向公网(私网)的ALB。
共享带宽
共享带宽提供地域级的带宽共享和复用能力,以及按带宽计费和按增强型95计费等多种计费模式,可有效节省公网带宽使用成本。公网应用型负载均衡ALB中将使用共享带宽来提供增强型95计费和按带宽计费能力。
域名
一个在公网上可解析的域名解析至对应的EIP。您也可以将所拥有的可读性强的域名通过CNAME方式解析到ALB的域名上来使用。
EIP
ALB对公网服务的IP地址,一个公网ALB可以有多个EIP。为了实现高可用性,一个公网ALB至少应包含两个分布在不同可用区的EIP。您仅在创建公网ALB时需要使用EIP,在创建私网ALB时无需配置。
VIP(Virtual IP address)
ALB实施流量分发的实体。每个VIP都是专有网络VPC(Virtual Private Cloud)中的一个私网IP地址。
ALB组成
ALB包含以下基本组成部分。
实例
面向七层,提供了超强七层负载均衡能力,通过将流量分发到不同的后端服务来扩展应用系统的服务吞吐能力。单实例可处理高达100万QPS。
监听
监听是ALB最小业务单元,监听上需要配置协议与端口以告知ALB需要处理什么流量,例如HTTP协议,80端口。每个ALB至少有一个监听,才能开始流量处理与分发。每个ALB最多可以配置50个监听,用于处理不同的业务流量。
转发规则
确定ALB实例如何将请求路由到一个或多个后端服务器组中的后端服务器。ALB具备强大的高级路由能力,在传统的路由规则基础上,还可以基于Cookie、Header和Host等多种规则进行转发,实现基于业务的灵活调度。
服务器组
服务器组是一个逻辑组,包含多个后端服务器(ECS实例)用于处理ALB分发的业务请求。ALB中服务器组独立于ALB存在,可以将同一服务器组挂载在不同ALB内。服务器组最大可以包含1000个后端服务器。ALB服务器组支持云ECS、ECI、ENI等多种类型的后端服务器。
健康检查
ALB通过健康检查来判断后端服务器(ECS实例)的业务可用性。ALB探测服务器组中不健康的服务器组,并避免将流量分发给不健康的服务器组。ALB支持丰富灵活的健康检查配置,如协议、端口、以及各种健康检查阈值。同时ALB提供健康检查模板,可将健康检查模板快速的应用到不同的服务器组。
负载均衡基础架构是采用集群部署,提供四层(TCP协议和UDP协议)和七层(HTTP和HTTPS协议)的负载均衡,可实现会话同步,以消除服务器单点故障,提升冗余,保证服务的稳定性。
负载均衡作为流量转发服务,将来自客户端的请求通过负载均衡集群转发至后端服务器,后端服务器再将响应通过内网返回给负载均衡。
基础架构说明
阿里云当前提供四层和七层的负载均衡服务。
a. 四层采用开源软件LVS(Linux Virtual Server)+ keepalived的方式实现负载均衡,并根据云计算需求对其进行了个性化定制。
b. 七层采用Tengine实现负载均衡。Tengine是由淘宝网发起的Web服务器项目,它在Nginx的基础上,针对有大访问量的网站需求,添加了很多高级功能和特性。
如下图所示,各个地域的四层负载均衡实际上是由多台LVS机器部署成一个LVS集群来运行的。采用集群部署模式极大地保证了异常情况下负载均衡服务的可用性、稳定性与可扩展性。
LVS集群内的每台LVS都会进行会话,通过组播报文同步到该集群内的其它LVS机器上,从而实现LVS集群内各台机器间的会话同步。如下图所示,当客户端向服务端传输三个数据包后,在LVS1上建立的会话A开始同步到其它LVS机器上。图中实线表示现有的连接,图中虚线表示当LVS1出现故障或进行维护时,这部分流量会走到一台可以正常运行的机器LVS2上。因而负载均衡集群支持热升级,并且在机器故障和集群维护时最大程度对用户透明,不影响用户业务。
入网流量路径
对于入网流量,负载均衡会根据用户在控制台或API上配置的转发策略,对来自前端的访问请求进行转发和处理,数据流转如下图所示。
1.TCP/UDP协议和HTTP/HTTPS协议的流量都需要经过LVS集群进行转发。
2.LVS集群内的每一台节点服务器均匀地分配海量访问请求,并且每一台节点服务器之间都有会话同步策略,以保证高可用。
出网流量路径
总体原则:流量从哪里进来,就从哪里出去。
通过负载均衡进入的流量在负载均衡SLB上限速或计费,仅收取出方向流量费用,入方向流量不收取(在未来可能会改变),SLB到ECS之间是阿里云内网通信,不收取流量费用。
来自弹性公网IP或NAT网关的流量,分别在弹性公网IP或NAT网关上进行限速或计费。如果在购买ECS时选择了公网带宽,限速/计费点在ECS上。
负载均衡SLB仅提供被动访问公网的能力,即后端ECS只能在收到通过负载均衡SLB转发来的公网的请求时,才能访问公网回应该请求,如后端ECS希望主动发起公网访问,则需要配置或购买ECS公网带宽、弹性公网IP或NAT网关来实现。
ECS公网带宽(购买ECS时配置)、弹性公网IP、NAT网关均可以实现ECS的双向公网访问(访问或被访问),但没有流量分发和负载均衡的能力。
阿里云官方文档