ECS的应用交付网络设计
概述
简介
应用交付网络旨在实现应用的发布、容灾和防护,而负载均衡 SLB(Server Load Balancer)是构建应用交付网络的核心组件。SLB包含面向4层的网络型负载均衡NLB、面向7层的应用型负载均衡ALB和传统型负载均衡CLB。作为阿里云官方的云原生网关,SLB在应用交付网络中发挥着至关重要的作用。本文档将详细介绍如何选择、部署和使用负载均衡产品,以构建高效的应用交付网络。
基本概念
VPC:专有网络VPC(Virtual Private Cloud)是用户基于阿里云创建的自定义私有网络, 不同的专有网络之间二层逻辑隔离,用户可以在自己创建的专有网络内创建和管理云产品实例,比如ECS、SLB、RDS等。
VIP:虚拟IP地址VIP(Virtual IP Address)是一种未分配给特定计算机或网络接口的IP地址。它可以在不同的物理服务器或设备之间动态分配,以实现负载均衡、高可用性和冗余。
DNS摘除:DNS摘除(DNS Cutover)是指在网络迁移或切换过程中,更新DNS记录以将流量从一个服务器或服务转移到另一个服务器或服务的过程。通常用于确保在迁移过程中服务的连续性。
CNAME:CNAME记录是一种DNS记录类型,它将一个域名别名指向另一个域名。解析CNAME记录时,DNS服务器会将请求重定向到别名指向的目标域名,并返回目标域名的A记录(IP地址)。
ALB:应用型负载均衡ALB(Application Load Balancer)是阿里云推出的专门面向HTTP、HTTPS和QUIC等应用层负载场景的负载均衡服务,具备超强弹性及大规模应用层流量处理能力。ALB具备处理复杂业务路由的能力,与云原生相关服务深度集成,是阿里云官方提供的云原生Ingress网关。
NLB:网络型负载均衡NLB(Network Load Balancer )是阿里云面向万物互联时代推出的新一代四层负载均衡,支持超高性能和自动弹性能力,单实例可以达到1亿并发连接,帮您轻松应对高并发业务。
CLB:传统型负载均衡CLB(Classic Load Balancer)是将访问流量根据转发策略分发到后端多台云服务器的流量分发控制服务。CLB扩展了应用的服务能力,增强了应用的可用性。
NIS:网络智能服务 NIS(Network Intelligence Service)是一系列云上网络AIOps工具集,提供了云上网络从网络规划到网络运维全生命周期。包括流量分析、网络巡检、网络性能监控、网络诊断、路径分析、网络拓扑等功能,帮助用户优化网络架构、提升网络运维效率、降低网络运营成本。
云监控:云监控(CloudMonitor)是一项针对阿里云资源和互联网应用进行监控的服务。
共享带宽:共享带宽提供地域级带宽共享和复用功能。创建共享带宽实例后,您可以将同地域下的弹性公网IP(EIP)添加到共享带宽实例中,复用共享带宽中的带宽,节省公网带宽使用成本。
设计原则
为帮助应用系统实现快速、可靠、安全的发布体验,应用交付网络设计需考量如下关键点。
性能:应具备与业务高峰相匹配的性能上限(吞吐带宽、新建、并发以及每秒请求数)。
弹性:应具备随业务量增减而自动弹性伸缩的承载力,以及与之匹配的计价方案。
稳定:应具备健壮的架构及健全的容灾机制,从而保障应用的稳定发布。
安全:应具备一定程度的应用层、传输层、网络层的防护能力。
可观测:应具备完善的监控指标和日志信息,以便实时监控分析及排查问题。
您可以根据应用系统对负载均衡的性能和功能要求,并结合具体的组网场景,权衡上述5个关键点,设计合适的产品选型及部署方案。
设计关键点
负载均衡选型阶段
负载均衡的选型阶段,需重点考虑性能(承载力维度和功能支持维度)、稳定、弹性、安全等四个关键点。
前提
明确应用系统所需负载均衡的类型(4层或7层),是负载均衡选型的前提。
对比项 | ALB | NLB | CLB |
产品定位 |
|
|
|
如应用系统需要4层负载均衡,需选择NLB或CLB。
如应用系统需要7层负载均衡,需选择ALB或CLB。
性能关键点
明确应用系统对于负载均衡的性能需求,从而针对性进行负载均衡选型。
对比项 | ALB | NLB | CLB |
产品架构与性能 |
|
|
|
转发能力 |
|
|
|
后端业务类型 |
|
|
|
运维能力 |
|
|
|
云原生集成 |
| 支持ACK/ASK集成(1.24版本以后) | 支持较弱,需要与阿里云ACK或ASK等容器服务结合使用 |
典型应用场景 |
|
|
|
承载力维度
对于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有能力在短时间内(约30秒)切换到备可用区并恢复服务。当主可用区恢复时,CLB会自动切换回主可用区。
说明CLB的主备可用区是可用区级别的容灾。只有当主可用区整体不可用时,如机房整体断电或者机房出口光缆中断等,CLB才会切换到备可用区。而并非某个实例出现故障,就切换到备可用区。
通过上述描述可以看出,相较于CLB的容灾架构和机制,NLB和ALB采用的多可用区多活模式提供了更大的容灾范围。具体来说,单个负载均衡实例可以部署在2个及以上的可用区内,显著提升了系统的高可用性和故障恢复能力。此外,这种模式还具备更强的故障逃逸能力,您可以自主操作,将异常可用区的DNS记录摘除,从而快速响应和处理故障。因此,您可以根据应用系统对稳定性和可用性的要求,选择合适的负载均衡产品。对于高可用性要求较高的系统,NLB和ALB的多可用区多活模式无疑是更优的选择。
弹性关键点
对于用户而言,弹性的直接价值,是在业务波峰时能够及时获取相应的承载力,并仅需按实际使用量付费,避免资源预置所造成的成本浪费。因此,根据前序章节的介绍:
如应用系统计划选用ALB或NLB,那么此两款负载均衡产品在具备高性能上限的情况下,采用按使用量计费模式,满足按需使用&按量付费的弹性要求。
如应用系统计划选用CLB,CLB支持“按规格计费”和“按使用量计费”两种计费模式,采用按使用量计费模式,便可满足按需使用&按量付费的弹性要求。
安全关键点
ALB、NLB、CLB的安全能力有所不同,明确应用系统对于负载均衡的安全需求,从而针对性地进行负载均衡选型。
关于七层负载均衡:WEB攻击防护能力
如应用系统具有WEB攻击防护需求,优先推荐采用ALB。ALB WAF增强版支持阿里云WAF3.0服务化接入。
WAF3.0的服务化接入,是指通过SDK模块化的方式集成在ALB中,并通过SDK提取流量并进行检测和防护。该集成方式对应用系统有如下两方面帮助:
转发方面:WAF不参与流量转发,可避免因额外引入一层转发而带来各种兼容性和稳定性问题,并降低访问延迟。
部署方面:无需修改DNS、配置证书、端口、回源算法等复杂的WAF接入转发配置,简化部署流程。
关于四层负载均衡:传输层加密
如果应用系统需使用四层负载均衡,且具有TCPSSL加密要求,推荐选择NLB。
NLB支持配置TCP SSL监听,实现TCP SSL卸载,将加密流量解析为明文流量后分发至后端服务器,从而使后端服务器的配置得以简化、工作负载得以降低,继而提高业务处理效率。
负载均衡部署阶段
完成负载均衡的选型后,在部署阶段,需重点考虑性能、稳定、安全等三个关键点。
性能关键点
实例处理性能
对于ALB或NLB,实例具有较高的性能上限以及较强的弹性能力。但如果应用系统需承载可预知的突发流量(如大促活动等),建议提前与阿里云商务经理联系,以便评估检查相关实例对突发流量的承载能力和弹性能力。
对于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)每秒可接受的新建连接数上限。
安全关键点
黑白名单的访问控制
ALB和NLB均支持加入安全组,可通过ALB加入安全组或NLB加入安全组实现基于白名单或黑名单的访问控制。
CLB提供监听级别的访问控制。您可以针对不同的监听设置访问白名单或黑名单:
开启白名单:仅转发来自所选访问控制策略组中设置的IP地址或地址段的请求,白名单适用于应用只允许特定IP访问的场景。
开启黑名单:来自所选访问控制策略组中设置的IP地址或地址段的所有请求都不会转发,黑名单适用于应用只限制某些特定IP访问的场景。
TLS策略的自定义
对于七层负载均衡,针对HTTPS场景,ALB预置了部分常用的TLS安全策略以满足加密需求,您可根据安全需求选择合适的TLS安全策略,或者配置自定义TLS安全策略,从而保证应用系统的安全性。
对于四层负载均衡,针对TCPSSL场景,NLB预置了部分常用的TLS安全策略以满足加密需求,您可根据安全需求选择合适的TLS安全策略,或者配置自定义TLS安全策略,从而保证应用系统的安全性。
说明CLB不支持自定义TLS安全策略。
双向认证
在HTTPS场景下,ALB(标准版和WAF增强版)、NLB以及CLB均支持双向认证,能够满足应用系统的安全认证要求。而在TCPSSL场景中,NLB具备双向认证能力,确保了高安全性的通信需求。具体操作可参考:使用ALB部署HTTPS业务(双向认证)、通过NLB实现TCPSSL卸载(双向认证)、使用CLB部署HTTPS业务(双向认证)。
负载均衡使用阶段
负载均衡的使用阶段,需重点考虑可观测关键点。
可观测关键点
监控
当应用系统遇到请求超时、流量限速等网络连接问题,或需了解负载均衡的工作负载等数据,可查看负载均衡所提供的监控项指标。具体操作可参考:NLB监控项说明、ALB监控项说明、CLB监控项说明。
日志
负载均衡可提供操作日志和访问日志功能。具体操作可参考:ALB日志、NLB日志、CLB访问日志、CLB操作日志。
操作日志:可以监控并记录账号对负载均衡产品的使用行为。
访问日志:收集了所有发送到7层负载均衡的请求的详细信息(包括请求时间、客户端IP地址、延迟、请求路径和服务器响应等),可通过访问日志分析客户端行为、了解客户端地域分布以及进行问题排查。
网络智能服务
除使用NLB、ALB、CLB自身所提供的监控日志能力外,建议考虑开启网络智能服务,进一步提升应用交付网络的可观测性。
设计最佳实践
如前文所述,对于性能、稳定、弹性、安全、可观测等5项设计关键点,使用ALB或NLB将具有更高的匹配度。因此相较CLB,我们更为推荐用户使用ALB或NLB构建应用交付网络。下方总结的四个场景下的最佳实践,将重点介绍基于ALB或NLB所构建的设计方案。
同地域的应用交付网络
本文所描述的同地域的应用交付网络,是指负载均衡与其挂载的后端服务器,均位于阿里云同一个Region。
4层负载均衡
设计关键点回顾与提炼:
稳定关键点
至少选择2个或2个以上的可用区创建NLB,且尽量与后端服务器所在可用区保持一致。
NLB可考虑“关闭跨AZ转发”。
按需评估是否开启新建连接限速,从而预防非预期的洪峰流量造成“雪崩效应”。
针对后端服务器组,启用健康检查。
性能关键点
公网类型NLB,建议搭配使用共享带宽产品,且根据流量模型,选择使用“主流量计费”或“按带宽计费”。
安全关键点
根据应用系统的安全管控要求,评估是否将NLB加入安全组。如使用TCPSSL监听,评估是否自定义TLS策略以及是否启用双向认证。
7层负载均衡
设计关键点回顾与提炼:
稳定关键点
至少选择2个或2个以上的可用区创建ALB,且尽量与后端服务器所在可用区保持一致。
按需评估是否开启QPS限速,从而预防非预期的洪峰流量造成“雪崩效应”。
针对后端服务器组,启用健康检查。
性能关键点
公网类型ALB,建议搭配使用共享带宽产品,且根据流量模型,选择使用“主流量计费”或“按带宽计费”。
安全关键点
根据应用系统的安全管控要求,评估是否需将ALB加入安全组、评估是否自定义TLS策略以及评估是否启用双向认证。
跨地域的应用交付网络
本文所描述的跨地域应用交付网络,是指负载均衡与其挂载的后端服务器,位于阿里云不同Region。
如下图所示,可基于NLB或ALB,构建跨地域的应用交付网络,从而实现访问入口的就近部署和跨地域容灾。跨地域应用交付网络部署可参考使用ALB挂载跨地域VPC内的服务器、使用NLB挂载跨地域VPC内的服务器。
IPv6应用交付网络
负载均衡选型
应用系统如需借助负载均衡,构建支持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应用交付网络的负载均衡部署阶段,同样需重点关注“稳定、安全、弹性、可观测、自服务”这5项设计关键点。
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部署
步骤1: 为NLB或ALB所在VPC开启IPv6。
步骤2: 创建“协议版本”为双栈的NLB或ALB实例。
步骤3: 如NLB或ALB的IPv6地址需要公网可达,则需在NLB或ALB所在VPC的IPv6网关,为IPv6地址开通公网带宽。
步骤4: 创建NLB或ALB的后端服务器组,无需开启IPv6挂载。
CLB部署
创建“IP版本”为IPv6的CLB实例,且仅公网CLB实例支持IPv6。随后完成负载均衡的常规配置即可。