随着信息技术的飞速发展,企业对于网络的依赖程度日益加深。传统的负载均衡技术曾经是企业数据中心的“守护神”,如今却在应对现代应用的快速交付、成本效益和自动化运维方面面临前所未有的挑战。分布式负载均衡技术可为企业网络带来革命性的改变。本文将深入分析从技术层面实现分布式负载均衡的关键要素,从弹性地址、“N+1”高可用系统到数据面与管理面的通信,介绍分布式负载均衡技术如何克服传统负载均衡技术的局限性,以确保网络的高性能和高可用性。
传统负载均衡设备诞生于一个对资源成本敏感度较低、对稳定性有一定要求,但尚未普遍面临大规模并发和动态扩展需求的时代。所以,传统负载均衡设备采用双机主从架构的设计思路,仅提供基本的故障转移能力,控制面与数据面没有分离,设备也不会从组织管理层面开放给各个业务团队。传统负载均衡设备通常基于图1所示的架构实现。
一是两台主机通过独立的心跳线互联,基于类似虚拟路由冗余协议(Virtual Router Redundancy Protocol,VRRP)监控状态、选举主从节点。 二是两台设备必须在一个广播域内,由选出的主设备广播免费ARP(Gratuitous ARP,GARP)消息,从设备则不回应ARP或者ICMP查询,这种实现方案依赖于交换机维护的虚拟IP(Virtual IP,VIP)与MAC地址的映射表。
早期网络规模有限时,网络缺乏弹性对其并没有太大影响,但在当下网络规模庞大的情况下,缺乏弹性会极大影响资源与运维效率。双机主从架构存在的上述问题,其根源在于VIP实现的技术局限性,阻碍了服务的弹性扩展和高可用性的最大化。为突破这些限制,分布式负载均衡系统分离了控制面与数据面,使其各自实现了“多活”VIP技术。 数据面分别在OSI七层协议模型的第二层(数据链路层)和第三层(网络层)实现了“多活”VIP地址。为方便区分控制面与数据面,后续涉及分布式负载均衡架构时,其数据面的设备将称为“转发引擎”,管理面的设备称为“管理节点”。分布式负载均衡架构如下图所示。
在二层广播域内,分布式负载均衡架构采用了“一主多辅”架构,在处理以下场景时,该架构能够充分利用多设备的处理能力优化资源分配,即入流量小而出流量大的业务、消耗大量CPU资源的业务(如SSL卸载、实时数据压缩等),以及并发连接数超出单个转发引擎内存的限制时。一主多辅架构的实现技术如下: 一是主引擎通过向局域网内的交换机广播GARP报文,声明自己是VIP的拥有者,这样所有流向该VIP的流量都会被交换机定向到主转发引擎。 二是主引擎依据TCP/IP五元组(源IP、源端口、目的IP、目的端口和协议类型)对流量执行哈希运算,以确保来自同一客户端的连接能够被均匀且持续地分配到自身及辅转发引擎上。 需要强调的是,一旦连接建立,辅转发引擎的响应流量无需再经过主引擎返回,减少了网络延迟和主转发引擎的处理负担,提高了整体的响应速度和系统吞吐量。这种设计特别适合出流量大、大量消耗CPU和磁盘等资源、对响应时间敏感的静态资源服务,可有效缓解主从架构下的性能瓶颈问题,提升系统的扩展性和可用性。 一主多辅架构在容灾、故障恢复的平滑度上也优于主从架构。以一主三辅架构为例,此时四台转发引擎共同服务于一个VIP,当一台转发引擎发生故障时,其对整体服务的影响被限定在25%左右,即使主转发引擎发生故障,上述结论仍然成立。由于每台辅转发引擎都独立维护着连接状态表,系统可以从集群空闲转发引擎中选出新的主转发引擎,其可以通过整合连接状态表无缝接管服务,确保除了原主转发引擎处理的那部分流量受到影响外,其余流量可以被继续处理。相比主从模式中主设备故障即导致服务完全中断的情况,一主多辅架构有效缩短了故障带来的服务中断时间,缩小了服务中断范围,提升了用户体验和业务连续性。
一主多辅架构只能提升二层广播域内的性能和容灾能力,当面对更大规模的集群部署或复杂的网络架构时,仅仅局限于二层的技术无法满足业务的弹性需求,此时可以通过等价路由(Equal-Cost Multi-Path,ECMP)技术在三层网络层实现“多活”VIP。ECMP技术不仅可扩展集群的地理覆盖范围,还突破了单一广播域的容量天花板,在真正意义上实现了大规模分布式系统的无边界扩展。
ECMP的工作原理是基于路由协议(如BGP、OSPF)在多台设备之间分配等价的多条路径。当多条路径成本相同时,网络设备(如路由器或三层交换机)会利用ECMP算法自动将流入的流量按照预设规则均匀地分发到这些路径上。这样一来,每条路径上的转发引擎都可以作为主转发引擎同时处理流入的流量,并消除了单点故障和容量上限的限制。 图3中三层VIP是怎么实现的呢?每台转发引擎都会配置相同的VIP地址,并通过路由协议宣告此地址可达,路由器会根据ECMP算法,将去往这个VIP的流量均衡地分发到转发引擎上。在实际的应用中, ECMP算法通常由基于TCP/IP五元组的哈希算法实现,这样的设计具有以下四方面的显著优势。
当转发引擎宕机后,需要将其上的虚拟服务迁移到另一台正常运行的转发引擎,为了确保服务的连续性和一致性,需要满足以下两个前提条件。 首先,数据面必须保持无状态,这意味着每个转发引擎在处理数据包时,不应该依赖于任何持久化的状态信息。转发引擎应该专注于数据的快速转发,独立地处理流量,不需要访问存储在其他引擎上的状态信息。这样不仅可以提高转发效率,也简化了故障恢复过程,即使某个转发引擎发生故障,其他引擎也能够无缝地接管服务。 其次,管理面必须具备高可用性。这意味着管理组件需要能够容忍故障,并且能够在发生故障时快速恢复。由于传统负载均衡设备的双机集群无法解决脑裂问题,一台设备宕机后集群的写入能力是无法保障的。为了解决这一问题,需要使用“N+1”高可用模型,保持至少1个冗余节点,在1个管理节点宕机时,管理面仍然能够保持服务可读可写。因此,至少要具备3个管理节点,才能在集群分成两个独立组时,通过少数服从多数的投票策略,使集群仍然可以正常提供服务。 分布式系统的CAP理论(如图5所示)指出,系统在任何时刻只能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition Tolerance)中的两个性能。这意味着需要存储数据的管理集群只能优先选择分区容错性和数据强一致性,而要牺牲部分可用性。
分布式负载管理面的核心功能是协调和控制,而不是处理高流量的业务数据,因此可以降低其对性能的要求。管理面主要是通过API与外部系统或转发引擎进行通信,这些操作对实时性的要求较低。 对于需要高度一致性的决策过程,可以采用Paxos之类的共识算法。这些算法通过两个阶段的提交机制来确保数据的持久化和一致性。在第一阶段,提案(数据变更)被提出并由集群中的大多数成员进行投票;在第二阶段,如果提案获得多数票,就会被提交并应用到所有成员的状态中。这样的机制确保了部分节点宕机时整个系统仍然能够就数据变更达成一致,从而实现系统的高可靠性。此外,Raft协议改进了Paxos算法,通过设计简单、直观的Leader选举、线性一致的日志复制机制,降低了数据变更时的冲突概率,在确保数据强一致性的同时提升了系统性能,是管理面的首选算法之一。
要实现管理面与数据面之间的通信,必须解决以下四个问题。
本文首先从OSI模型的数据链路层和网络层,通过”一主多辅”和ECMP技术实现了弹性虚拟服务,有效支持了大规模网络的并发处理和动态扩展。为了减少容灾场景的影响范围,介绍了传输层的会话连接表,提升了故障恢复的效率。对于七层负载在应用层的CPU消耗问题,介绍了自动缩扩容与迁移技术,以应对业务需求的波动,避免了四、七层负载集群的分层。 在数据面外,文章还讨论了通过共识算法实现高可用的管理面集群,以及数据面如何与管理面通讯,才能保障不同租户产生的大量遥测数据,能够在不影响业务的情况下,为监控、分析和管理大规模分布式系统提供高效、安全、稳定的支持。 本文为分布式负载均衡技术系列的第二篇,下一篇将通过具体的案例进一步分析这些技术在实际应用中的表现和效果。通过这一系列的深入剖析,我们期望读者能够获得必要的知识,以评估和实施分布式负载均衡解决方案,从而提升自身网络的弹性和响应能力,满足不断变化的业务需求。