VIP:虚拟IP地址VIP(VirtualIPAddress)是一种未分配给特定计算机或网络接口的IP地址。它可以在不同的物理服务器或设备之间动态分配,以实现负载均衡、高可用性和冗余。
DNS摘除:DNS摘除(DNSCutover)是指在网络迁移或切换过程中,更新DNS记录以将流量从一个服务器或服务转移到另一个服务器或服务的过程。通常用于确保在迁移过程中服务的连续性。
为帮助应用系统实现快速、可靠、安全的发布体验,应用交付网络设计需考量如下关键点。
性能:应具备与业务高峰相匹配的性能上限(吞吐带宽、新建、并发以及每秒请求数)。
弹性:应具备随业务量增减而自动弹性伸缩的承载力,以及与之匹配的计价方案。
稳定:应具备健壮的架构及健全的容灾机制,从而保障应用的稳定发布。
安全:应具备一定程度的应用层、传输层、网络层的防护能力。
可观测:应具备完善的监控指标和日志信息,以便实时监控分析及排查问题。
您可以根据应用系统对负载均衡的性能和功能要求,并结合具体的组网场景,权衡上述5个关键点,设计合适的产品选型及部署方案。
负载均衡的选型阶段,需重点考虑性能(承载力维度和功能支持维度)、稳定、弹性、安全等四个关键点。
明确应用系统所需负载均衡的类型(4层或7层),是负载均衡选型的前提。
对比项
ALB
NLB
CLB
产品定位
强大的七层处理能力与丰富的高级路由功能
聚焦HTTP、HTTPS和QUIC应用层协议
面向应用层交付
强大的四层处理能力与大规模SSL卸载功能
聚焦TCP、UDP和TCPSSL协议
面向网络层交付
具备良好的四层和基础的七层处理能力
支持TCP、UDP、HTTP和HTTPS协议
如应用系统需要4层负载均衡,需选择NLB或CLB。
如应用系统需要7层负载均衡,需选择ALB或CLB。
明确应用系统对于负载均衡的性能需求,从而针对性进行负载均衡选型。
产品架构与性能
基于NFV虚拟化平台,支持弹性伸缩
单实例最大支持100万QPS
基于NFV虚拟化平台,不依赖物理机,支持弹性和快速扩容等需求
单实例最大支持1亿并发
基于物理机架构
单实例最大支持100万并发、5万QPS
转发能力
丰富七层特性,基于内容的路由
HTTP标头改写、重定向、重写、限速等
丰富四层高级特性,支持TCPSSL卸载
洪峰限速、优雅中断、Anyport等
四、七层基础能力
仅支持基于域名或URL转发
后端业务类型
云服务器ECS
弹性网卡ENI
弹性容器实例ECI
IP地址
函数计算FC
运维能力
自动弹性
处理能力随着业务峰值自动伸缩,无需人工干预
按规格售卖模式下需要主动管理规格
需要预估业务峰值
云原生集成
云原生Ingress网关
流量拆分、流量镜像、灰度发布、蓝绿测试
支持ACK/ASK集成(1.24版本以后)
支持较弱,需要与阿里云ACK或ASK等容器服务结合使用
典型应用场景
互联网应用七层高性能自动弹性场景
音视频应用大流量低时延场景
云原生应用金丝雀蓝绿发布场景
四层大流量高并发业务场景
物联网、车联网等IoT业务入口
多活容灾、IDC云上出入口场景
网站、系统四层流量分发高可靠场景
大并发高性能网络分流场景
同城灾备、跨地域容灾场景
承载力维度
对于4层负载均衡,如应用系统对新建连接数、并发连接数的性能上限及弹性能力具有较高要求,建议选择NLB。
对于7层负载均衡,如应用系统对每秒请求数QPS的性能上限及弹性能力具有较高要求,建议选择ALB。
如对负载均衡的4层或7层的性能上限无较高要求,可考虑选择CLB。
功能支持维度
对于4层负载均衡,如应用系统对4层TCPSSL卸载、洪峰限速、云原生集成等功能具有较高要求,建议选择NLB。
对于7层负载均衡,如应用系统对7层路由、云原生Ingress网关等功能具有较高要求,建议选择ALB。
如对负载均衡的4层或7层的功能特性无较高要求,可考虑选择CLB。
ALB、NLB、CLB的容灾架构和机制有所不同,您需要先明确应用系统对于负载均衡的容灾需求,从而针对性地进行负载均衡选型。
多可用区多活模式
ALB和NLB均支持多可用区部署。在应用系统所在的地域支持2个及以上可用区的情况下,为了保障业务的高可用性,建议至少选择两个可用区进行部署。其工作原理主要通过域名对外提供服务,域名会进行CNAME解析,指向NLB和ALB的域名,然后将业务流量调度至所选可用区内的ALB和NLB实例的VIP(虚拟IP)。当某个可用区出现故障或不可用时,该可用区可被置于DNS摘除状态,从而实现容灾逃逸。这种机制确保了在单个可用区发生故障时,流量可以自动切换到其他可用区,保证业务的连续性和高可用性。
双可用区主备模式
CLB的主备可用区是可用区级别的容灾。只有当主可用区整体不可用时,如机房整体断电或者机房出口光缆中断等,CLB才会切换到备可用区。而并非某个实例出现故障,就切换到备可用区。
通过上述描述可以看出,相较于CLB的容灾架构和机制,NLB和ALB采用的多可用区多活模式提供了更大的容灾范围。具体来说,单个负载均衡实例可以部署在2个及以上的可用区内,显著提升了系统的高可用性和故障恢复能力。此外,这种模式还具备更强的故障逃逸能力,您可以自主操作,将异常可用区的DNS记录摘除,从而快速响应和处理故障。因此,您可以根据应用系统对稳定性和可用性的要求,选择合适的负载均衡产品。对于高可用性要求较高的系统,NLB和ALB的多可用区多活模式无疑是更优的选择。
对于用户而言,弹性的直接价值,是在业务波峰时能够及时获取相应的承载力,并仅需按实际使用量付费,避免资源预置所造成的成本浪费。因此,根据前序章节的介绍:
如应用系统计划选用ALB或NLB,那么此两款负载均衡产品在具备高性能上限的情况下,采用按使用量计费模式,满足按需使用&按量付费的弹性要求。
如应用系统计划选用CLB,CLB支持“按规格计费”和“按使用量计费”两种计费模式,采用按使用量计费模式,便可满足按需使用&按量付费的弹性要求。
ALB、NLB、CLB的安全能力有所不同,明确应用系统对于负载均衡的安全需求,从而针对性地进行负载均衡选型。
关于七层负载均衡:Web攻击防护能力
如应用系统具有Web攻击防护需求,优先推荐采用ALB。ALBWAF增强版支持阿里云WAF3.0服务化接入。
WAF3.0的服务化接入,是指通过SDK模块化的方式集成在ALB中,并通过SDK提取流量并进行检测和防护。该集成方式对应用系统有如下两方面帮助:
转发方面:WAF不参与流量转发,可避免因额外引入一层转发而带来各种兼容性和稳定性问题,并降低访问延迟。
部署方面:无需修改DNS、配置证书、端口、回源算法等复杂的WAF接入转发配置,简化部署流程。
关于四层负载均衡:传输层加密
如果应用系统需使用四层负载均衡,且具有TCPSSL加密要求,推荐选择NLB。
NLB支持配置TCPSSL监听,实现TCPSSL卸载,将加密流量解析为明文流量后分发至后端服务器,从而使后端服务器的配置得以简化、工作负载得以降低,继而提高业务处理效率。
完成负载均衡的选型后,在部署阶段,需重点考虑性能、稳定、安全等三个关键点。
实例处理性能
对于CLB,无论使用按规格计费模式或按使用量计费模式,单实例可提供的最大处理能力同S3.large规格(最大连接数1,000,000、新建连接数100,000、每秒查询数50,000)。建议根据应用系统的流量模型和规模,选择适合的计费模式、实例规格以及实例数量。
公网带宽性能
对于公网类型的ALB或NLB,通过弹性公网IP(EIP)提供公网能力。
如果应用系统的流量模型较平稳,共享带宽可考虑选择“按带宽计费模式”,设定业务所需的带宽峰值。
如果应用系统的流量模型峰谷效应明显,共享带宽可考虑选择“按主流量计费模式”(即在一个计费周期内,取共享带宽实例的入方向和出方向中流量较大的为主流量,对主流量进行计费),并设定业务所需的带宽峰值。
按流量计费的EIP,带宽峰值上限为200Mbps。因此,为保障应用系统获得足够的带宽保障,建议搭配使用共享带宽产品。
对于CLB,既可通过“私网类型CLB+EIP”的方式提供公网能力,也可直接使用“公网类型CLB”。但出于多个负载均衡实例的带宽复用性以及IP地址的独立保有性这两方面考虑,更为推荐“私网类型CLB+EIP”的方式,并搭配使用共享带宽产品。
实例的可用区规划
如果使用ALB,至少选择2个可用区,ALB的可用区尽量与后端服务器的可用区保持一致。但ALB不支持“关闭跨AZ转发”,即ALB的各VIP接收到客户端的访问流量时,会将流量转发至所有可用区的后端服务器(即不局限于该VIP所属可用区)。
如果使用NLB,至少选择2个可用区,NLB的可用区尽量与后端服务器的可用区保持一致。且可考虑“关闭跨AZ转发”,使NLB各VIP接收到客户端的访问流量时,仅将流量转发至同可用区的后端服务器,从而规避跨AZ转发。
如果使用CLB,CLB的主可用区尽量与后端服务器的可用区保持一致,从而规避跨AZ转发。
后端服务器的健康检查
建议开启负载均衡的健康检查功能,从而判断后端服务器的业务可用性。当某台后端服务器健康检查出现异常时,负载均衡会自动将新的请求分发到其他健康检查正常的后端服务器上;而当该后端服务器恢复正常运行时,负载均衡会将其自动恢复到负载均衡服务中进行流量转发。健康检查机制提高了业务整体可用性,避免了局部后端服务器异常对总体服务的影响,是保证业务高可用的关键要素。ALB、NLB、CLB的健康检查协议类型均支持TCP和HTTP。
监听的限速设置
为防止非预期的洪峰流量超过后端服务器的承载力并导致“雪崩效应”,可以考虑使用负载均衡的监听级限速功能。在洪峰流量出现时,此功能可以确保后端服务器在其承载能力范围内处理请求。
ALB的每秒请求数(QPS)限速
对于ALB的目标监听,可设置“总QPS限速”或“客户端颗粒度QPS限速”(基于客户端源IP),这两种限速方式可以单独或同时配置。
NLB的新建连接数(CPS)限速
对于NLB的目标监听,可以设置在每个可用区(VIP)每秒可接受的新建连接数上限。
黑白名单的访问控制
开启白名单:仅转发来自所选访问控制策略组中设置的IP地址或地址段的请求,白名单适用于应用只允许特定IP访问的场景。
开启黑名单:来自所选访问控制策略组中设置的IP地址或地址段的所有请求都不会转发,黑名单适用于应用只限制某些特定IP访问的场景。
TLS策略的自定义
CLB不支持自定义TLS安全策略。
双向认证
负载均衡的使用阶段,需重点考虑可观测关键点。
监控
日志
操作日志:可以监控并记录账号对负载均衡产品的使用行为。
网络智能服务
如前文所述,对于性能、稳定、弹性、安全、可观测等5项设计关键点,使用ALB或NLB将具有更高的匹配度。因此相较CLB,我们更为推荐用户使用ALB或NLB构建应用交付网络。下方总结的四个场景下的最佳实践,将重点介绍基于ALB或NLB所构建的设计方案。
本文所描述的同地域的应用交付网络,是指负载均衡与其挂载的后端服务器,均位于阿里云同一个Region。
设计关键点回顾与提炼:
稳定关键点
至少选择2个或2个以上的可用区创建NLB,且尽量与后端服务器所在可用区保持一致。
NLB可考虑“关闭跨AZ转发”。
按需评估是否开启新建连接限速,从而预防非预期的洪峰流量造成“雪崩效应”。
针对后端服务器组,启用健康检查。
性能关键点
公网类型NLB,建议搭配使用共享带宽产品,且根据流量模型,选择使用“主流量计费”或“按带宽计费”。
安全关键点
根据应用系统的安全管控要求,评估是否将NLB加入安全组。如使用TCPSSL监听,评估是否自定义TLS策略以及是否启用双向认证。
至少选择2个或2个以上的可用区创建ALB,且尽量与后端服务器所在可用区保持一致。
按需评估是否开启QPS限速,从而预防非预期的洪峰流量造成“雪崩效应”。
公网类型ALB,建议搭配使用共享带宽产品,且根据流量模型,选择使用“主流量计费”或“按带宽计费”。
根据应用系统的安全管控要求,评估是否需将ALB加入安全组、评估是否自定义TLS策略以及评估是否启用双向认证。
本文所描述的跨地域应用交付网络,是指负载均衡与其挂载的后端服务器,位于阿里云不同Region。
应用系统如需借助负载均衡,构建支持IPv6的应用交付网络,建议综合考虑“IPv6端到端通信”和“IPv6至IPv4转换”两种场景,以确定负载均衡选型。
场景1:IPv6端到端通信
NLB和ALB,均支持挂载IPv6类型的后端服务器,从而将来自客户端的IPv6访问请求,以IPv6协议转发至后端服务器,帮助应用系统实现全链路的IPv6通信。而CLB不支持。
场景2:IPv6至IPv4转换
NLB、ALB、CLB,均具备IPv6至IPv4转换能力,从而将来自客户端的IPv6访问请求,以IPv4协议转发至后端服务器,帮助应用系统简单快速地具备IPv6访问能力。
综上,由于NLB和ALB可同时兼顾“IPv6端到端通信”和“IPv6至IPv4转换”,建议优先选择NLB或ALB构建IPv6应用交付网络。
与此同时,NLB和ALB支持双栈类型实例,即单个实例可同时具备IPv6地址和IPv4地址,从而构建统一的IPv6与IPv4应用交付网络。而CLB不支持双栈类型实例,需单独创建IPv6类型实例和IPv4类型实例,使得IPv4和IPv6应用交付网络相互独立。因此选择NLB或ALB,还可帮助简化应用交付网络架构。
IPv6端到端通信
步骤1:为NLB或ALB所在VPC开启IPv6。
步骤2:创建“协议版本”为双栈的NLB或ALB实例。
步骤3:如NLB或ALB的IPv6地址需要公网可达,则需在NLB或ALB所在VPC的IPv6网关,为IPv6地址开通公网带宽。
步骤4:创建NLB或ALB的后端服务器组,并开启IPv6挂载。
IPv6至IPv4转换
NLB或ALB部署
步骤4:创建NLB或ALB的后端服务器组,无需开启IPv6挂载。
CLB部署
创建“IP版本”为IPv6的CLB实例,且仅公网CLB实例支持IPv6。随后完成负载均衡的常规配置即可。