> **来源:[研报客](https://pc.yanbaoke.cn)** # 负载均衡技术白皮书 # 目录 # 1 概述 3 1.1 技术分类 3 1.2 技术优势 4 # 2 负载均衡技术实现 5 2.1 服务器负载均衡技术实现 ..... 5 2.1.1 技术简介 5 2.1.2 工作流程 2.1.3 业务层级 2.1.4 部署模式 2.1.5 高可靠性 9 2.2出方向链路负载均衡技术实现 15 2.2.1 技术简介 15 2.2.2 工作流程 16 2.3 DNS 透明代理技术实现 2.3.1 技术简介 17 2.3.2 工作流程 18 2.3.3 设备上的业务处理流程 19 2.4入链路负载均衡技术实现 21 2.4.1 技术简介 21 2.4.2 工作流程 21 2.4.3 设备上的业务处理流程 22 2.5 全局服务器负载均衡技术实现 ..... 23 2.5.1 技术简介 23 2.5.2 工作流程 24 2.5.3 部署模式 26 # 3 负载均衡关键技术 26 3.1 调度算法 26 3.1.2 基础与静态调度算法 ..... 27 3.1.3 动态与状态感知调度算法 29 3.1.4 面向流量与带宽的调度算法 30 3.2 健康检测 30 3.2.1 服务器健康检测 30 3.2.2 链路健康检测 31 3.3 负载均衡策略 33 3.3.1匹配规则 33 3.3.2 负载均衡动作 33 3.3.3 会话保持 34 # 1 概述 随着信息技术的高速发展,业务系统的访问规模和复杂度呈指数级增长。互联网应用的普及、云计算的兴起、移动终端的广泛使用,使得网络流量分布更加动态且难以预测。与此同时,用户对业务连续性、响应速度和服务质量的要求不断提升,任何服务中断或延迟都可能导致重大经济损失和品牌声誉受损。 在云化、智能化的浪潮中,网络承载的业务流量和复杂性持续攀升,如何保障服务的高可用性、低延迟和灵活扩展,已成为运营商、金融机构以及各类企业网络架构的核心诉求。 负载均衡技术提供高效便捷的流量分发服务,通过对访问流量进行分析、调度和优化,将访问流量自动分配给多个数据中心、多条链路或多台服务器,从而提高了业务处理能力,保证了业务的高可靠性。 # 1.1 技术分类 本白皮书围绕五大核心负载均衡技术展开系统阐述,帮助读者全面理解它们的原理、优势及在运营商、金融与企业网等场景中的典型组网。 负载均衡技术可分为以下几种类型: - 服务器负载均衡(SLB,Server Load Balancing):在数据中心或企业网络中,SLB将客户端的访问请求动态分配至多台服务器进行处理,从而分担单台服务器的压力,提高整体服务的并发处理能力与可靠性。 - 链路负载均衡:当网络存在多条运营商链路时,此技术可动态选择合适的链路转发数据流量,从而提升链路利用率和访问质量。链路负载均衡可分为如下三种: 。出方向链路负载均衡:内网用户访问外部互联网存在多条链路时,可将访问流量分担到多条链路上,实现出口流量的负载均衡。 。DNS 透明代理:当内网用户通过外部 DNS 服务器解析域名时,设备可对 DNS 请求进行透明代理。在不改变用户原有 DNS 配置的前提下,系统会选择最优的出口链路转发这些 DNS 请求,并返回经过调度的解析结果,使后续的业务访问流量沿选定的最优出口链路转发。 。入方向链路负载均衡:当外网用户访问内网服务器存在多条链路时,此技术可在多条链路上分担外网用户访问内网服务器的流量。入方向链路负载均衡技术又称为本地智能DNS技术。 - 全局负载均衡(GSLB,Global Server Load Balancing):在跨地域、多数据中心部署的场景中,此技术可根据用户所在地域、网络状况、各数据中心的健康状态和负载情况,为访问者选择出最优的数据中心,实现跨地域业务流量的分配与调度。全局负载均衡技术又称为全局智能DNS技术。 不同的负载均衡技术需要部署在网络中的不同位置,以完成各自的流量分发任务,具体部署位置如下图所示。 图1-1 负载均衡技术概览图 # 1.2 技术优势 负载均衡技术具有以下优势: - 高性能:通过将业务较均衡地分配到多台设备或多条链路上,提高了系统的整体性能。 - 可扩展性:可以方便地增加集群中设备或链路的数量,在不降低业务质量的前提下满足不断增长的业务需求。 - 高可靠性:单个甚至多个设备或链路发生故障也不会导致业务中断,提高了系统的整体可靠性。 - 可管理性:大量的管理工作都集中在应用了负载均衡技术的设备上,集群中的设备或链路只需要进行普通的配置和维护。 - 透明性:对用户而言,集群等同于一个可靠性高、性能好的设备或链路,用户感知不到也不必关心具体的网络结构。增减集群中的设备或链路不会影响正常业务。 # 2 负载均衡技术实现 # 2.1 服务器负载均衡技术实现 # 2.1.1 技术简介 在企业或大型数据中心场景下,需要多台服务器同时对外提供服务。服务器负载均衡技术能将用户流量在多台服务器间进行合理分配,从而提高服务器资源利用率,提升用户访问体验。 如下图所示,通过服务器负载均衡技术,管理员可将多台真实服务器配置成一台虚拟服务器,对外发布虚拟服务器的 IP 地址。当用户流量访问虚拟服务器时,SLB 设备根据预先配置的调度算法、负载均衡策略等为用户流量分配最优的服务器资源。 图2-1 服务器负载均衡简介图 在服务器负载均衡技术中,涉及以下关键概念: - 虚服务器(Virtual Server):对外提供服务的虚拟服务器,在SLB设备上创建,由协议类型、IP地址和端口唯一标识。外部用户的访问请求首先到达虚服务器,只有匹配虚服务器的流量才会进入服务器负载均衡处理流程,并由SLB设备分发到后端真实服务器。 - 实服务器(Real Server):实际承载业务应用的物理服务器,部署在SLB后端,负责处理用户请求并返回响应。 - 实服务组(Sever Farm):一组功能相同或业务相似的实服务器组成的服务器集群。SLB根据配置的调度算法,在实服务组中的多台实服务器间分配流量,实现流量负载分担。 # 2.1.2 工作流程 服务器负载均衡的工作流程如下图所示。 图2-2 服务器负载均衡工作流程图 服务器负载均衡工作流程简述如下: (1) 客户端向SLB设备发送访问请求,此时的源IP地址为客户端IP地址,目的IP地址为虚服务器IP地址(图中简写为VSIP,即Virtual Server's IP)。 (2) SLB 设备根据健康检测方法、会话保持方法、负载均衡策略、调度算法等,综合计算出将访问请求分发给哪台实服务器,并将报文的目的 IP 地址转换为选中的实服务器的 IP 地址。 (3) 设备将访问请求转发给实服务器,此时的源 IP 地址为客户端 IP,目的 IP 地址为实服务器的 IP 地址。 (4) 实服务器接收并处理请求报文,返回响应报文,此时的源IP地址为实服务器的IP地址,目的IP地址为客户端IP地址。 (5) 设备收到响应报文后,将其源IP地址转换为虚服务器IP地址。 (6) 设备向客户端转发响应报文,此时的源IP地址为虚服务器IP地址,目的IP地址为客户端IP地址。 # 2.1.3 业务层级 根据可识别报文信息所在的协议层不同,服务器负载均衡可以分为四层服务器负载均衡和七层服务器负载均衡两类。 # 1. 四层服务器负载均衡 四层SLB工作在网络层和传输层,可识别报文的IP地址(源IP、目的IP)及传输层端口号(源端口、目的端口),并据此进行负载分配。它采用基于流的转发机制,将同一条连接(如TCP会话或UDP流)的所有报文始终分发至同一台后端服务器。四层SLB适用于高并发、大流量的业务场景。当业务对性能和延迟敏感,而对应用层负载策略依赖较低时,优先推荐采用四层SLB。 # 2. 七层服务器负载均衡 七层 SLB 基于应用层报文内容进行流量分发。在四层 SLB 的基础上,进一步解析并识别应用层特征信息,如 URL 路径、HTTP 头部、Cookie、报文体等,再结合调度算法选择目标服务器。 七层SLB支持多种应用层协议,包括:Diameter、HTTP、HTTPS、MySQL、RADIUS、SIP等。这种广泛的协议支持,使其不仅可以服务于Web系统,还能覆盖电信计费、认证鉴权、数据库访问、IP语音通信等多类业务场景。 七层SLB适用于需要结合业务逻辑或用户信息进行精确化流量调度的场景。当业务逻辑复杂、需要内容级或用户级负载策略时,推荐采用七层SLB。 四层SLB与七层SLB可结合部署。先通过四层SLB实现高性能流量分发,再对特定业务流量引入七层SLB处理应用层需求,从而在性能与功能之间实现平衡。 # 2.1.4 部署模式 # 1. 网关模式 如下图所示,在网关部署模式中,SLB 设备串连部署在实服务器前端,客户端的请求和响应流量均会经过 SLB 设备处理。当客户端的请求流量经过 SLB 设备时,SLB 设备根据健康检测方法、会话保持、负载均衡策略、调度算法等选出最优的实服务器,并将客户端请求的虚 IP 地址转换为选中的实服务器的 IP 地址;在实服务器的响应流量经过 SLB 设备时,SLB 设备会将其源 IP 地址还原为虚服务器 IP 地址。 在网关部署模式中,管理员需要在实服务器上配置缺省网关或静态路由,将发往客户端的报文发送到SLB设备上。 网关部署模式将SLB设备串接在原有组网中,会改变已有的网络拓扑,仅适用于组网较为简单的部署场景。 图2-3 网关部署模式组网图 # 2. 旁路模式 如下图所示,在旁挂部署模式中,SLB设备旁挂部署在核心交换机上,客户端的请求和响应流量均会经过SLB设备处理。 当客户端的请求流量经过SLB设备时,SLB设备根据健康检测方法、会话保持、负载均衡策略、调度算法等选出最优的实服务器,并将客户端请求的虚IP地址转换为 选中的实服务器的 IP 地址;在实服务器的响应流量经过 SLB 设备时,SLB 设备会将其源 IP 地址还原为虚服务器 IP 地址。 在旁挂部署模式中,管理员需要在实服务器上配置缺省网关或静态路由,将发往客户端的报文发送到旁挂SLB设备的核心交换机上。 相比于网关部署模式,旁挂部署模式不改变原有网络拓扑,部署更为灵活。 图2-4 旁挂部署模式组网 # 3. 三角传输模式 如下图所示,三角传输部署模式与旁挂部署模式的网络拓扑相同,SLB设备旁挂部署在核心交换机上,但不同的是,SLB设备与实服务器之间通过二层传输,且只有客户端的请求流量会经过SLB设备处理,实服务器的响应流量不会经过SLB设备处理。当客户端的请求流量经过SLB设备时,SLB设备根据健康检测方法、会话保持、负载均衡策略、调度算法等选出最优的实服务器,并向选中的实服务器发送访问请求,此时请求报文的源IP地址为客户端的IP地址,目的IP地址仍为虚服务器的IP地址,目的MAC地址为实服务器的MAC地址。实服务器接收并处理请求报文,并直接向客户端返回响应报文,响应报文不再经过SLB设备处理。此时的源IP地址为虚服务器的IP地址,目的IP地址为客户端IP地址。 在三角传输部署模式中,管理员需要在实服务器上配置缺省网关或静态路由,将发往客户端的报文发送到出口网关上。并且,管理员还需要在实服务器的 Loopback 地址配置为虚服务器 IP 地址。 相比于网关部署模式,三角传输部署模式不改变原有网络拓扑,部署更为灵活;相比于旁挂部署模式,三角传输部署模式的回程流量不经过SLB设备,更适用于诸如视频等业务流量较大的场景。 图2-5 三角传输部署模式组网 # 2.1.5 高可靠性 在单台SLB设备的组网中,一旦发生单点故障,客户端将无法访问实服务器。采用高可靠性组网可以很好的避免单点故障,保证业务的连续性。高可靠性功能支持主备、双主和集群几种工作模式。 # 1. 主备模式 如下图所示,主备模式(A/S即Active/Standalone)由两台SLB设备在一个内网(或数据中心)中组建成双机热备环境。正常情况下,仅由主设备处理业务,备设备处于待命状态;当主设备的接口、链路或整机故障时,备设备立即接替主设备处理业务,保证业务不中断。 图2-6 主备模式组网图 # 2. 双主模式 如下图所示,双主模式(A/A即Dual-Active)由两台SLB设备在一个内网(或数据中心)中组建成双机热备环境。两台设备同时处理业务,充分利用设备资源,提高系统负载能力。并且当其中一台设备发生故障时,另外一台设备会立即承担其业务,保证业务不中断。 图2-7 双主模式组网图 # 3. 集群模式 集群模式(Cluster)由多台SLB设备组建成一个可靠性系统,多台SLB设备之间不仅可以在一个内网(或数据中心)中组建成一个集群;还可以跨内网(或数据中心)组建成一个集群。集群中的多台SLB设备不仅可以形成主备或双主组网,还可以形成多主组网,进一步提高了系统的处理能力和扩容能力。 同一数据中心多业务场景 如图2-8所示,正常情况下,数据中心的不同设备可以对外发布不同的业务,这样每台设备可以集中高效地处理某一种业务,同时设备之间又可以相互备份配置信息和业务信息。 如图2-9所示,当其中一台设备故障时,其他设备可以立即接手这些流量,保证用户业务不中断。 图2-8 同一数据中心多业务集群模式组网图(正常情况) 图2-9同一数据中心多业务集群模式组网图(故障情况) ←→ Web traffic RBM channel FTP traffic Backup traffic ←→ Mail traffic X Failure # 多活数据中心场景 如图2-10所示,正常情况下,多个数据中心同时对外提供服务,充分利用现有的网络资源和应用服务资源等,不同数据中心SLB设备之间的配置信息和业务信息可以相互备份。 如图2-11所示,当其中一个数据中心的某台SLB设备故障不能对外提供服务时,首先让同一数据中心的其他SLB设备立即接手这些流量,保证用户业务不中断;同理,当整个数据中心故障不能对外提供服务时,再由其他数据中心的SLB设备立即接手这些流量,保证用户业务不中断。 图2-10 多活数据中心集群模式组网图(正常情况) ←→ Web traffic RBM channel ←→ Mail traffic ←--> Backup traffic 图2-11多活数据中心集群模式组网图(故障情况) # 2.2 出方向链路负载均衡技术实现 # 2.2.1 技术简介 在企业或数据中心等场景中,常常会部署多条上行链路接入多个ISP(Internet Service Provider,互联网服务提供商),以满足出口带宽扩展和网络可靠性提升的需求。 然而,多链路环境也会带来一些挑战,例如链路利用率可能严重不均衡,部分链路长期处于拥塞状态,而其他链路闲置;通过路由引导出方向流量的方式缺乏足够的灵活性,难以根据业务类型、目的地址或链路运行状况灵活调整出口路径;同时,由于缺乏链路健康检查与自动切换机制,当某条链路发生故障时,业务流量仍可能继续转发至故障链路,从而造成访问中断,直接影响用户体验。 出方向链路负载均衡技术可将内网用户访问互联网的流量智能分配到多条链路上,从而实现高效的资源利用,提升用户访问体验。 如下图所示,在完成出方向链路负载均衡配置后,设备会根据内网用户流量的特征,结合链路的健康状况、会话保持方法和调度算法等,将不同流量(如视频业务流量和其他业务流量)分别分配至由ISP1和ISP2提供的链路。设备会将带宽较大的链路用于视频业务流量转发,带宽较小的链路用于其他业务流量转发。当某条链路出现拥塞或故障时,流量可自动切换至其他可用链路。通过这种智能调度方式,不仅有效避免了出方向流量分配不均,还提升了整体转发效率与网络响应速度。 图2-12出方向链路负载均衡简介图 在出方向链路负载均衡技术中,涉及以下关键概念: - 虚服务器(Virtual Server):设备上面向用户业务的虚拟载体,出方向链路负载均衡的虚服务器为LINK-IP类型,由IP地址和端口唯一标识。内网用户的访问请求首先到达LINK-IP类型的虚服务器,只有匹配上虚服务器的报文才会进行出方向链路负载均衡处理。VSIP(Virtual Server's IP)为虚服务器的IP地址,即为内网用户发送报文的目的地址。 链路(Link):运营商提供的物理链路。 - 链路组(Link group):由若干条链路组成的集合。设备根据预先配置的调度算法,在链路组内的多条链路之间调度流量,实现出口流量的负载分担。 # 2.2.2 工作流程 出方向链路负载均衡的工作流程如下图所示。 图2-13出方向链路负载均衡工作流程图 出方向链路负载均衡工作流程简述如下。 (1) 负载均衡设备接收来自内网用户的流量。 (2) 负载均衡设备依次根据负载均衡策略、会话保持方法、就近性算法、调度算法(通常使用带宽算法或最大带宽算法)来选择最佳链路。 (3) 负载均衡设备通过选定的最佳链路将流量转发给外网服务器。 (4) 负载均衡设备接收来自外网服务器的应答流量。 (5) 负载均衡设备将流量转发给内网用户。 # 2.3 DNS透明代理技术实现 # 2.3.1 技术简介 DNS 透明代理主要应用在拥有多条 ISP 出口链路的网络中。内网用户可以通过不同的 ISP 链路,访问提供相同服务的外网服务器。 如下图所示,企业内网用户可以通过运营商ISP1的链路Link1和ISP2的链路Link2分别访问提供相同网络服务的外网服务器ExternalserverA和ExternalserverB。企业内网用户通过域名访问外网服务器时,内网用户的所有DNS请求报文会发往同一DNS服务器。DNS服务器收到DNS请求报文后,将其解析为同一运营商网络内外网服务器的IP地址,这将使内网用户的所有流量都通过一条链路转发,导致一条链路拥塞,而其他链路闲置。 图2-14 DNS 透明代理简介图 DNS 透明代理技术可以用来解决由于客户端的 DNS 服务器地址配置不均导致的流量分配不均的问题。 通过DNS透明代理功能可以使DNS请求报文发往不同运营商网络内的DNS服务器,从而使内网用户访问外网服务器的流量较为均匀地分配到多条链路上,提高流量转发效率,提升服务质量;可以避免出现一条链路拥塞而其他链路闲置的情况;也可以在某条链路出现故障时,使用其他链路来访问外网服务器,避免因链路故障导致访问失败。 # 2.3.2 工作流程 DNS 透明代理通过动态改写 DNS 请求的目的 IP 地址,将 DNS 查询请求分发到不同的 DNS 服务器,使解析结果指向对应链路的外网服务器 IP 地址,从而控制业务流量的转发链路。具体工作流程如下图所示。 图2-15 DNS 透明代理工作流程图 DNS 透明代理工作流程简述如下(图中仅包含步骤(1)-(6)): (1) 内网用户向 LB device 发送 DNS 请求报文。此时,DNS 请求报文的目的 IP 地址为 DNS 服务器 A 的 IP 地址。 (2) LB device 收到 DNS 请求报文后,根据调度算法选出最佳链路对应的 DNS 服务器,选中 DNS 服务器 B。 (3) LB device 将 DNS 请求报文的目的 IP 地址修改为选定的 DNS 服务器的 IP 地址,即修改为 DNS 服务器 B 的 IP 地址。 (4) DNS 服务器接收并处理 DNS 请求报文,返回 DNS 应答报文。此时,DNS 应答报文的源 IP 地址为 DNS 服务器 B 的 IP 地址。 (5) LB device 收到 DNS 应答报文后,将其源 IP 地址修改为 DNS 请求报文中的目的 IP 地址,即修改为 DNS 服务器 A 的 IP 地址。 (6) 将 DNS 应答报文转发给内网用户。此时,DNS 应答报文的源 IP 地址为 DNS 服务器 A 的 IP 地址。 (7) 内网用户根据DNS应答报文中的IP地址访问外网服务器,即Web服务器B。 (8) 外网服务器应答内网用户。 # 2.3.3 设备上的业务处理流程 从上述工作流程可以看出,DNS 透明代理通过修改 DNS 请求报文的目的地址,实现对多条链路上的访问流量进行控制,从而为内网用户访问外网服务器选择最优链路。在设备上,DNS 透明代理业务流程涉及以下关键概念: DNS 透明代理(Transparent DNS proxy):设备上面向用户业务的虚拟载体。只有当 DNS 请求报文的 IP 地址和目的端口号与 DNS 透明代理配置的 IP 地址与端口号匹配时,负载均衡设备才会对该报文执行 DNS 透明代理处理。 - 链路(Link):运营商提供的实体链路,用于承载用户访问外网的业务流量。 - DNS 服务器(DNS server):负责解析用户 DNS 请求并返回解析结果的实体。 - DNS 服务器池(DNS server pool):DNS 服务器的集合。设备根据预先配置的调度算法,在 DNS 服务器池内调度流量,实现出口流量的负载分担。 - 负载均衡类(LB class):对进入设备的报文进行分类的规则,用于将不同类型的报文划分到不同的负载均衡类,便于后续执行差异化的负载均衡动作。 - 负载均衡动作(LB action):针对被分类报文所执行的具体处理行为,如转发到指定DNS服务器池。 - 负载均衡策略(LB policy):将“负载均衡类”和“负载均衡动作”进行关联后形成的策略集合。DNS 透明代理通过引用相应的负载均衡策略,实现对 DNS 请求报文的精细化控制。 图2-16 设备上的业务处理流程图(经负载均衡策略转发) 当收到目的IP地址和端口号都与DNS透明代理配置的IP地址和端口号匹配的DNS请求报文时,LB device会对该报文执行DNS透明代理处理。设备上的业务流程可有两种路径: # 1. 经负载均衡策略转发 LB device 在 DNS 透明代理上查找并调用已关联的负载均衡策略。对于命中负载均衡类的报文,执行相应的负载均衡动作,通常为将报文转发到某个 DNS 服务器池。再根据该服务器池中配置的调度算法,选出与最优链路对应的 DNS 服务器。LB device 将 DNS 请求报文发送给选定的 DNS 服务器,由其解析域名并返回 DNS 应答报文。 # 2. 直接关联DNS服务器池转发 DNS 透明代理也可以不经过负载均衡策略,直接关联到某个 DNS 服务器池。 收到DNS请求后,DNS透明代理直接根据调度算法,从池中选择合适的DNS服务器并转发请求。选定的DNS服务器解析域名并返回DNS应答报文。 无论采用哪条路径,内网用户在收到DNS应答报文后,即可根据应答中的外网服务器IP地址发起访问。 # 2.4 入链路负载均衡技术实现 # 2.4.1 技术简介 入方向链路负载均衡主要应用于拥有多条ISP入口链路的企业网络,通过智能调度,使外网用户能够经由不同的链路访问企业服务,从而提高访问的效率与可靠性。 如下图所示,企业分别租用不同运营商ISP1、ISP2和ISP3的三条链路Link1、Link2和Link3为外网用户提供服务。 通过配置入方向链路负载均衡,可以使外部互联网用户访问内网服务器的流量均匀地分配到多条链路上,从而提高流量转发效率,提升服务质量;可以避免出现一条链路拥塞而其他链路闲置的情况;可以在某条链路出现故障时,使互联网用户使用其它链路来访问内网服务器,避免因链路故障导致流量转发失败。 图2-17入方向链路负载均衡原理图 # 2.4.2 工作流程 入方向链路负载均衡技术又叫本地智能DNS解析技术,是基于DNS解析实现的。负载均衡设备作为权威DNS服务器,对外网用户访问内网服务器的DNS请求报文进行智能解析,为外网用户选择最佳入方向链路。具体工作流程如下图所示。 图2-18入方向链路负载均衡工作流程图 入方向链路负载均衡工作流程简述如下: (2) Host 向 Local DNS 服务器发起 DNS 请求(若请求域名为 domain_a)。 (3) Local DNS 服务器向指定域名(domain_a)的权威 DNS 服务器 LB device 发起 DNS 请求。 (4) LB device 根据调度算法、健康检测结果、带宽限制策略等来选择最佳入方向链路。管理员可为每条入方向链路绑定其对应的虚服务器。 (5) LB device 将选定入方向链路对应的虚服务器 IP 地址通过 DNS 响应报文发送给发起请求的 Local DNS 服务器。 (6) Local DNS 服务器把获取的虚服务器 IP 地址发送给 Host。此步骤即完成了将 Host 请求域名(domain_a)智能解析为指定 IP 地址(最优入链路对应的虚服务器 IP 地址)。 (7) Host 向虚服务器 IP 地址发起访问请求(请求通过选定入链路进入 LB device)。 (8) LB device 向内网服务器发起访问请求。 (9) 内网服务器发送响应至LB device。 (10) LB device 发送响应至 Host。 # 注意 在入方向负载均衡工作流程中,LB设备承担指定域名的权威DNS解析职责。因此,管理员需要联系运营商,在Local DNS中将该域名的权威解析服务器配置为LB设备的地址,以确保DNS请求能够由LB设备处理。 # 2.4.3 设备上的业务处理流程 从上述工作流程可见,入方向链路负载均衡是通过智能DNS解析实现的。 核心机制是:当设备接收到针对特定域名的 DNS 请求报文后,通过智能解析选择最优入链路,并返回该链路对应的虚服务器 IP 地址,从而引导用户流量进入最佳链路。要实现这一过程,使设备具备智能 DNS 解析能力,我们需引入以下关键概念: DNS监听器(DNS listener):用于监听DNS请求。只有当DNS请求的目的地址与DNS监听器的IP地址匹配时,该DNS请求报文才会进入入方向链路负载均衡处理流程。 DNS映射(DNS mapping):用于关联域名与虚服务器池。设备通过DNS映射查找域名对应的虚服务器池。 - 虚服务器池:用于在虚服务器池下关联虚服务器与链路。链路和虚服务器的可用性共同决定链路是否可参与调度。 链路(Link):运营商提供的实体链路。 - 虚服务器:面向用户业务的虚拟载体,需与链路绑定,通过在智能DNS解析过程中返回虚服务器IP地址,从而引导用户流量通过指定链路进入网络。如果用户网络同时部署了服务器负载均衡与入链路负载均衡,则虚服务器IP地址既是入链路负载均衡的DNS解析结果,也是服务器负载均衡的入口地址。 设备上的入方向链路负载均衡业务处理流程如下图所示。 图2-19 设备上的业务处理流程图 当设备收到了目的地址匹配DNS监听地址的DNS请求报文时,首先在DNS映射中查找域名所关联的虚服务器池。设备依据虚服务器池中配置的调度算法选出最佳链路所对应的虚服务器IP地址,将选定的虚服务器IP地址通过DNS应答报文发送给用户,用户得到虚服务器IP地址后将其作为目的地址,通过该虚服务器关联的链路访问内网服务器。 # 2.5 全局服务器负载均衡技术实现 # 2.5.1 技术简介 全局负载均衡技术主要应用在多数据中心的场景。可实现用户的访问流量在多个数据中心之间的智能调配,使用户接入最优的数据中心,提升用户访问体验。也可以在多个数据中心之间进行远程灾备,当某数据中心发生故障时,GSLB技术可将流量平滑切换至其它数据中心,保证业务不中断。 图2-20 全局负载均衡简介图 GSLB 技术又叫全局智能 DNS 解析技术,是基于 DNS 解析技术实现的。主要解决普通 DNS 服务器在流量分配与故障感知方面的不足,主要改进如下: - 优化调度算法:普通DNS服务器通常采用简单的轮询方式分配流量,无法根据用户位置或者网络状况调整解析结果,例如,地区A的ISP1用户请求可能被解析到地区B的ISP2的地址,导致访问延迟增加、用户体验下降。 - 提供故障感知能力:普通DNS服务器缺乏健康检测机制,无法感知到灾难的发生。当某数据中心发生设备故障时,仍可能将解析结果指向该故障节点,造成访问失败。 在GSLB架构中,设备充当智能DNS服务器,对接收到的DNS请求进行解析:GSLB设备根据配置的调度算法,对所有数据中心中提供同一服务的链路进行全局评估,选择最优链路。将最优链路对应的虚服务器IP地址作为解析结果返回给用户,实现跨地域的访问优化。GSLB设备还可以通过健康检测机制持续监控各数据中心链路与设备状态。当检测到某链路或设备故障时,立即将其从调度池中剔除,确保解析结果始终指向可用的服务节点。 # 2.5.2 工作流程 在实际应用中,全局负载均衡通常与服务器负载均衡配合使用。全局负载均衡负责在多个数据中心之间进行整体调度,选择最优数据中心及其最佳入口链路;服务器负载均衡则在数据中心内部进行本地调度,选取最优的实服务器。 如下图所示,以分别在 GSLB 设备上配置全局负载均衡,在 SLB 设备上配置服务器负载均衡的场景为例,介绍全局负载均衡的工作流程。也可以在 GSLB 设备上配置全局负载均衡和服务器负载均衡,工作流程类似,此处不再赘述。 图2-21 全局负载均衡工作流程图 全局负载均衡工作流程简述如下: (1) Host 向 Local DNS 发送 DNS 请求。 (2) Local DNS 将 DNS 请求发送给数据中心 B 的 GSLB 设备。 (3) GSLB 设备收到 DNS 请求后,根据预先配置的调度算法对 DNS 请求进行智能解析。此处,假定 GSLB B 设备为 Host 选择与其相同运营商的链路 Link_A1 接入数据中心 A,最终将 Host 的 DNS 请求解析为 VSIP_A1。 (4) GSLB 设备将解析结果 VSIP_A1 返回给 Local DNS。 (5) Local DNS 将解析结果 VSIP_A1 返回给 Host。 (6) Host 根据智能 DNS 解析结果向 VSIP_A1 的虚服务器发起访问,进入服务器负载均衡工作流程。 (7) 数据中心A的SLBA设备接收到请求报文后,根据服务器负载均衡工作流程,选择一台最优的实服务器响应用户请求。 (8) SLBA 设备向选出的实服务器发送请求报文。 (9) 实服务器向SLBA设备返回响应报文。 (10) SLBA 设备将响应报文返回给 Host。 在全局负载均衡工作流程中,GSLB 设备承担指定域名的权威 DNS 解析职责。因此,管理员需要联系运营商,在 Local DNS 中将该域名的权威解析服务器配置为 GSLB 设备的地址,以确保 DNS 请求能够由 GSLB 设备处理。 # 2.5.3 部署模式 在实际应用中,全局负载均衡需要配合服务器负载均衡实现。全局负载均衡在多个数据中心之间进行全局调度,选出最优的数据中心的最优链路。服务器负载均衡则在数据中心内部进行本地调度,选择最优的实服务器。 GSLB 设备和本地 SLB 设备支持集中部署和分布部署两种部署模式,根据实际需求选择合适的部署方式即可。 - 集中部署是指全局负载均衡功能与服务器负载均衡功能在同一台设备上进行配置。GSLB 设备既提供全局负载均衡服务,又提供服务器负载均衡服务。 - 分布部署是指全局负载均衡功能与服务器负载均衡功能分别配置在 GSLB 设备和本地 SLB 设备上。由 GSLB 设备提供全局负载均衡服务,本地 SLB 设备提供服务器负载均衡服务。 # 3 负载均衡关键技术 # 3.1 调度算法 调度算法是负载均衡技术的核心机制之一,用于按照预先设定的规则,将用户请求在多个可用资源之间进行合理分配。它面对的是一组候选资源,如多台实服务器、多条链路、多台DNS服务器或多个业务站点等,每当有新的用户请求到来时,调度算法根据当前资源的处理能力、网络的运行状况或请求流量的特征等,选择合适的目标资源进行处理,从而在保障业务稳定性的前提下,实现资源利用最大化与用户访问体验的整体优化。 在不同类型的负载均衡技术中,调度算法的核心目标一致:从一个逻辑集合(待选资源池)中,依据特定策略选出一个最优成员(最优资源)。然而,该“资源池”与“资源”的具体所指,每种负载均衡技术有所区别。具体对应关系如下表所示: 表3-1 调度对象与资源映射关系表 <table><tr><td>负载均衡类型</td><td>待选资源池</td><td>最优资源</td><td>调度目标</td></tr><tr><td>服务器负载均衡</td><td>实服务器组</td><td>一台实服务器</td><td>将用户请求分发至最合适的后端服务器</td></tr><tr><td>出方向链路负载均衡</td><td>链路组</td><td>一条出站链路</td><td>为内部访问外部的流量选择最佳出口</td></tr><tr><td>DNS透明代理</td><td>DNS服务器池</td><td>一台DNS服务器</td><td>将DNS查询请求导向最优链路对应的DNS解析节点</td></tr><tr><td>入方向链路负载均衡</td><td>入站虚服务器池</td><td>一个虚服务器(通常关联一条入站链路)</td><td>为外部用户访问内部服务器的入口流量选择最佳入口</td></tr><tr><td>全局负载均衡</td><td>第一级:全局虚服务器池映射第二级:所选全局虚服务器池</td><td>第一级:一个全局虚服务器池第二级:该池中的一台虚服务器</td><td>实现跨地域、跨数据中心的两级智能流量调度</td></tr></table> 为便于统一阐述,后文在描述各类调度算法时,将通用术语“待选资源池”指代上述各类逻辑组(如实服务器组、链路组、DNS 服务器等),将“最优资源”指代最终被选出的单个成员(如实服务器、链路、DNS 服务器等)。 不同业务场景下对调度的侧重点并不相同,有的侧重连接数和负载能力,有的关注带宽和流量分布,有的强调会话一致性或就近访问。因此,在统一的调度框架下,形成了多种面向不同决策依据的调度算法。 本白皮书将遵循一个由浅入深、从静态到动态、从基础到智能的逻辑框架,将调度算法划分为三大类别: # 3.1.2 基础与静态调度算法 以简单、确定的规则进行调度,无需感知业务系统实时状态。 这类算法实现简单、开销小,但无法感知服务资源的实时状态,适用于环境稳定、服务能力均等的场景。 # 1. 随机算法 随机算法是将请求随机分发给待选资源池中的某个可用资源。经过一段时间后,各个资源的连接数大致相同。 当待选资源池中的所有成员(如实服务器、链路、DNS 服务器)在处理能力、网络带宽、硬件配置和软件性能上大致均等,且运行状态长期稳定时,随机算法可以提供一种理论上长期统计公平的分配方式。它假设任一资源处理任一请求的成本和效果相同。 五类负载均衡技术均支持此算法。 # 2. 加权轮转算法 加权轮询算法是一种基于静态权重的顺序调度算法。管理员需要为待选资源池中的每个资源预先配置权值,用以代表其相对处理能力或分配比重。加权轮转算法根据权值的大小,将请求依次分发给待选资源池中的每个资源,权值越大,分配的请求越多。加权轮转算法适用于待选资源池中的成员性能存在已知、固定的差异(如不同性能的服务器、带宽不等的出口链路),且每个请求所消耗的资源(带宽、处理时间)大致相近的场景。这使得按权重比例分配请求数量能近似等同于按比例分配负载。 五类负载均衡技术均支持此算法。 # 3. 哈希算法 根据识别报文信息不同,哈希算法分为源IP地址哈希算法、源IP地址+端口哈希算法、目的地址哈希算法和HTTP载荷哈希算法。 - 源IP地址哈希算法:适用于同一源IP地址发起的请求必须要调度到同一资源的场景,多用于应用本身对请求的源IP地址有要求的环境。 - 源 IP 地址 + 端口哈希算法:适用于同一源 IP 地址和端口发起的请求必须要调度到同一资源的场景,多用于应用本身对请求的源 IP 地址和端口有要求的环境。 - 目的 IP 地址哈希算法:适用于将发往同一目的 IP 地址的用户请求必须要调度到同一资源的场景,当客户端有一系列业务需要处理且必须和一台服务器反复通信时需要用到该算法,该算法保证发送到相同目的 IP 地址的流量能够一直在同一资源进行处理。 - HTTP 载荷哈希算法:设备将具有相同 HTTP 载荷的用户请求分配给相同的实服务器。 除普通哈希算法外,服务器负载均衡技术还支持CARP(Cache Array Routing Protocol,缓存阵列路由协议)哈希算法。 CARP 哈希算法是在普通哈希算法的基础上进行了改进。在实服务器故障和实服务组扩容的场景下,相比于普通哈希算法,采用 CARP 哈希算法,能使当前所有可用实服务器负载分担变动最小,更好地保持流量调度的持续性。 - 在实际应用中,若某台实服务器由于故障等原因无法提供服务。则原来发送至该故障实服务器的请求,将被分配至实服务组内其他可用的实服务器上。 。采用普通 IP 地址哈希算法, 原来发送至未故障的实服务器的请求, 将根据源 IP 地址、源 IP 地址+端口、目的 IP 地址或 HTTP 载荷, 在实服务组内所有实服务器上进行重新分配。所有访问流量均需要重新分配, 影响用户体验。 。采用CARPIP地址哈希算法,原来发送至未故障的实服务器的请求,将继续被分配到原来的实服务器上。采用该算法,仅故障实服务器的访问流量会被重新分配,而不影响实服务组内无故障实服务器的访问流量。 - 若因为实服务组扩容等需求,在实服务组中增加新的实服务器。 。采用普通 IP 地址哈希算法, 将根据源 IP 地址、源 IP 地址+端口、目的 IP 地址或 HTTP 载荷, 将请求在实服务组内所有实服务器上进行重新分配,包括新增实服务器和已有实服务器。所有访问流量均需要重新分配, 影响用户体验。 ○采用CARPIP地址哈希算法,只将一部分发送至原有实服务器的请求,分配至新增实服务器;大部分请求仍然分配到已有实服务器上。采用该算法,能最大程度保证用户的访问体验。 服务器负载均衡、出方向链路负载均衡、DNS 透明代理和入方向链路负载均衡技术均支持普通 IP 哈希算法。仅服务器负载均衡技术支持 HTTP 载荷哈希算法和 CARP 哈希算法。 # 4. 首个可用算法 总是将 DNS 请求分发给首次调度选中的虚服务器。首次调度时,权值越大的虚服务器越被优先选中,若存在多个权值最大的虚服务器,则在其中随机选择一个。 仅全局负载均衡的第二级调度(在全局虚服务池中选择虚服务器)支持首个可用算法。 # 3.1.3 动态与状态感知调度算法 这类算法能感知服务器或链路的实时状态,进行更精细、自适应的调度。 # 1. 加权最小连接算法 管理员可为每个参与调度的资源配置权值,该权值通常反映了资源的处理能力或性能表现。加权最小连接算法总是将请求分发给加权活动连接数(当前活动连接总数/权值)最小的资源。 加权最小连接算法适用于服务资源性能相近,但每条流的业务负载和处理时间不同的场景(如FTP等)。 服务器负载均衡、出方向链路负载均衡和入方向链路负载均衡技术支持加权最小连接算法。 # 2.动态反馈算法 根据实服务器的内存使用率、CPU 使用率和磁盘使用率等信息计算出当前的负载能力权值。负载越小,权值越大,分配到的新连接越多。 该算法需要引用 SNMP-DCA 类型的 NQA 探测模板才会生效。SNMP-DCA 类型的 NQA 探测模板向实服务器发送资源(如 CPU/内存/硬盘)查询报文来获取实服务器资源的使用情况,动态反馈算法根据 NQA 探测模板获取的资源使用情况,综合计算出实服务器的负载能力权值。若未引用 SNMP-DCA 类型的 NQA 探测模板,则使用非加权的轮转算法进行调度。 动态反馈算法适用于实服务器性能不同,且每条流的业务负载和处理时间无特定规律的场景。 仅服务器负载均衡支持动态反馈算法。 # 3. 最快响应算法 根据实服务器的响应时间计算出当前负载能力的权值。响应时间越短,权值越大,分配到的新连接越多。 最快响应算法适用于实服务器性能相近,但每条流的业务负载较大、处理时间较长的场景。 仅服务器负载均衡支持最快响应算法。 # 4. 链路质量算法 根据链路的网络延迟、路由跳数和丢包率综合计算出链路的质量,根据链路质量把新连接依次分发给每条链路,链路质量越好,分配的新连接越多。若配置调度算法为链路质量算法,则需要管理员在就近性视图下配置就近性探测方法、网络延迟权值、路由跳数权值以及丢包率权值。 仅出方向链路负载均衡支持链路质量算法。 # 5.就近性算法 根据客户端IP的地理或网络位置,选择拓扑上最近的资源。分为管理员预先配置好映射关系的静态就近性算法和实时探测网络情况的动态就近性算法。 仅入方向链路负载均衡和全局负载均衡支持就近性算法。 # 3.1.4 面向流量与带宽的调度算法 这类算法专注于网络流量模型和带宽利用率,适用于大流量、视频、下载等对带宽敏感的场景。 # 1. 带宽算法 根据资源的权值与剩余带宽乘积后的比例把请求分发给每个待选资源。例如,对于实服务器 rs1 和实服务器 rs2,如果其剩余带宽分别为 150kbps 和 250kbps,而权值分别为 5 和 6,最终 rs1 和 rs2 的请求流量分配比例为 $150 \times 5:250 \times 6$ ,即 1:2。 服务器负载均衡、出方向链路负载均衡、DNS 透明代理和入方向链路负载均衡技术均支持带宽算法。 # 2. 最大带宽算法 总是将请求分发给处于空闲状态且剩余带宽最大的资源。例如,对于实服务器 rs1 和实服务器 rs2,如果其剩余带宽分别为 150kbps 和 250kbps,两条实服务器带宽差值为 100kbps,此时,当请求流量少于 100kbps 时,则流量都将分配给 rs2;当请求流量大于 100kbps 时,如 130kbps,其中 100kbps 分配给 rs2,其余 30kbps 流量将平均分配给两台实服务器。 服务器负载均衡、出方向链路负载均衡、DNS 透明代理和入方向链路负载均衡技术均支持最大带宽算法。 # 3. 流量观察算法 设备主动观察实服务器当前及过去一段时间内的连接数情况,通过统计这些观察数据,判断出当前负载最小的实服务器,并将新到达的客户端连接分配给该实服务器。 流量观察算法监控现有连接的流量模式,尝试将新连接分配给当前负载较小的服务器。仅服务器负载均衡支持流量观察算法。 # 4. 流预测量算法 设备主动观察实服务器当前及过去一段时间内的连接数情况,并且分析过去一段时间内的负载变化趋势,判断成员的性能是提升还是下降。优先将新连接分配给性能排名靠前且当前性能正在提升的实服务器。 流预测量算法不仅观察,还试图预测未来短时间内的流量趋势,进行前瞻性调度。 仅服务器负载均衡支持流预测量算法。 # 3.2 健康检测 健康检测功能可以对服务器或链路进行检测,保证其能够提供有效的服务。负载均衡设备主动向服务器或链路发送探测报文,实时探测服务器或链路的状态,当探测到某服务器或链路发生故障时,设备立即停止向其分配流量,并将流量调度给其他处于正常状态的服务器或链路。一段时间后,若故障的服务器或链路状态恢复正常,设备会修改该服务器或链路的健康检测状态,使其重新参与调度。 健康检测功能调用通过负载均衡探测模板或NQA探测模板实现。 # 3.2.1 服务器健康检测 本章以服务器负载均衡为例,介绍服务器健康检测的原理。 如下图所示,当探测到实服务器状态均为正常时,SLB设备根据调度算法将客户端的流量依次分配给每台实服务器(以实服务器权值相同的加权轮转算法为例)。 图3-1 健康检测示意图(正常状态) 如下图所示,当探测到某台实服务器发生故障时,SLB设备立即停止向其分配流量,并将流量调度给其他处于正常状态的实服务器。 图3-2 健康检测示意图(故障状态) 一段时间后,若故障的实服务器状态恢复正常,设备会修改该实服务器的健康检测状态,使其重新参与调度。 # 3.2.2 链路健康检测 本章以DNS透明代理技术为例,介绍链路健康检测的原理。 DNS 透明代理健康检测功能可以对链路和 DNS 服务器进行周期性检测,保证其能够提供有效的服务。负载均衡设备主动向链路和 DNS 服务器发送探测报文,实时探测链路和 DNS 服务器的状态,避免将流量分配给故障的链路和 DNS 服务器,导致服务中断。 如下图所示,当探测到DNS服务器和对应的链路的状态均为正常时,设备根据调度算法将请求流量依次分配给每个DNS服务器(以DNS服务器权值相同的加权轮转算法为例)。 图3-3 健康检测示意图(正常状态) 如下图所示,当探测到某条链路发生故障时,就算该链路对应的 DNS 服务器处于正常状态,设备也会立即停止向该链路对应的 DNS 服务器发送流量,并将流量调度给其他处于正常状态的链路所对应的 DNS 服务器。 图3-4 健康检测示意图(链路故障状态) 当探测到某DNS服务器发生故障时,设备立即停止向其分配流量,并将流量调度给其他处于正常状态的DNS服务器。 如下图所示,当探测到某个DNS服务器发生故障时,设备立即停止向该DNS服务器发送流量,并将流量调度给其他处于正常状态的DNS服务器。 图3-5 健康检测示意图(DNS服务器故障状态) 一段时间后,若故障的DNS服务器和链路状态恢复正常,设备会修改该DNS服务器和链路的健康检测状态,使对应的DNS服务器重新参与调度。 # 3.3 负载均衡策略 负载均衡策略是负载均衡技术中的重要组成部分,用于决定如何分配客户端的请求流量。通过选择合适的负载均衡策略和结合调度算法,可以实现理想的负载均衡效果。负载均衡策略负责将符合特定规则的用户流量分配到指定的待选资源池中,而调度算法则在待选资源池内选择最优的服务器或链路。 将负载均衡类和负载均衡动作关联起来就构成了负载均衡策略。通过负载均衡策略,用户可以为匹配特定规则的报文指定执行的负载均衡动作,从而实现更加灵活的负载均衡。 # 3.3.1 匹配规则 管理员可以在一个负载均衡策略中指定多条匹配规则,设备会按照配置顺序进行匹配。 - 当匹配方式为匹配任意一条规则时,与某条匹配规则匹配成功就执行调度动作,否则继续匹配下一条匹配规则,若所有匹配规则均未匹配成功,则不执行调度动作。 - 当匹配方式为匹配所有规则时,仅当所有规则都匹配成功时,才会执行调度动作,否则不执行调度动作。 # 3.3.2 负载均衡动作 对于规则匹配成功的报文,设备会为其执行指定的负载均衡动作,动作分为几大类: - 转发类动作:确定是否转发以及如何转发报文。如果没有配置转发类动作,报文将被丢弃处理。 修改类动作:对报文执行一些修改行为。修改类动作应配合转发类动作使用,否则修改后的报文终将被丢弃。 - 代答类动作:用指定的文件对客户端 HTTP 请求进行应答。 如果用户想对报文进行丢弃处理,则可在创建负载均衡动作后,不为其指定任何上述动作。 # 3.3.3 会话保持 会话保持的作用是根据某会话保持方法将具有一定相关性的会话都分配给同一服务器处理,这个分配规则就称为会话保持表项。在一个会话中,当其首包通过会话保持方法选择了同一服务器之后,后续包都会沿用这个选择结果,减少了调度算法的重复运算,提升了转发效率。 会话保持组的详细处理流程如下: (1) 当设备首次收到具有某种特征的请求时,会根据调度算法将请求分发给某个服务器,同时根据管理员配置的会话保持方法生成会话保持表项。 (2) 在会话保持表项老化之前,若设备再次收到具有相同特征的请求,则不再根据调度算法进行计算,而是依据已生成的会话保持表项,选择对应的服务器进行转发。