负载均衡的产生与原理、典型的负载均衡器介绍

admin 2024年4月28日07:55:40评论7 views字数 5574阅读18分34秒阅读模式

◆ 负载均衡的产生

随着网络技术的快速发展,服务器的处理能力和内存访问速度的增长远远低于网络带宽和应用服务的增长速度;同时,用户数量的增长也导致服务器资源消耗严重,服务器成为网络的瓶颈,而单机模式也往往成为网络的故障点。

由此衍生出一种负载均衡的解决方案,即组建服务器群,在集群前端部署负载均衡,将用户请求根据配置的负载均衡策略分发到集群服务器中,以满足高并发业务的需求。

下面简要介绍一下负载均衡的历史、现状及面临的挑战。

1.3.1 负载均衡的历史

负载均衡是随着网络的快速发展而兴起的,回顾其发展历史可以分为以下4个阶段。

● 诞生:负载均衡的概念最早于1996年由Foundry提出,着眼于在传输层(TCP/IP协议OSI参考模型第四层)将负载均衡集成在自己的设备中。

同年,F5公司成立,Foundry将负载均衡作为创业点,在成立之初便开始关注传输层、应用层(TCP/IP协议OSI参考模型第七层)业务,并在后来长期统治该市场。

● 生存中求发展:2000年—2003年,很多互联网公司认识到负载均衡的重要性,纷纷以收购的方式进入该市场,如思科在2000年5月收购Arrowpoint,北电网络在2000年10月收购Alteon。也正是在这个时期,互联网泡沫爆发,许多负载均衡公司面临着生存的考验。

● 快速发展:熬过了互联网寒冬,整个行业从2003年开始迎来了复苏,由互联网引导的客户经济在这个时期开始产生真正的经济效益并逐步发展。随之而来的则是各种网络应用流量瓶颈的问题,单纯依靠升级传统设备已经无法解决流量瓶颈的问题。负载均衡便在此时大显身手,很多负载均衡设备厂商,如F5、Netscaler等都得到了快速发展。

● 应用交付:从2006年开始,国内互联网市场火爆了起来,电子商务、视频网站、流媒体等形成了巨大的访问量。普通的负载均衡已经无法满足网络应用流量增长的需求。F5便对传统负载均衡进行升级、扩展,倡导基于网络七层的应用交付的概念。F5是一种综合的交付平台,综合了负载平衡、TCP优化管理、链接管理、SSL VPN、压缩优化、智能网络地址转换、高级路由、智能端口镜像等各种技术手段。

应用交付是一种将关键应用与基础网络设备关联起来的系统解决方案,并逐渐成为负载均衡的发展方向。

1.3.2 负载均衡的现状

负载均衡设备和路由器一样,一直都是非常昂贵的专用硬件。大部分三、四层专用网络设备被商业化服务硬件、商业化网络接口控制器(NetworkInterface Controller , NIC ) 和 基 于 数 据 平 面 开 发 套 件 ( Data PlaneDevelopment Kit , DPDK ) 、 快 速 数 据 开 源 项 目 ( Fd.io , Fast DataInput/Output)等专业软件方案所取代。使用Linux和基于DPDK编写的自定义的用户空间应用程序进行快速收发包,这样服务器可以用非常小的数据包轻易使80Gbit/s的网卡饱和。

复杂的七层负载均衡器(如Nginx、HAProxy、Envoy)也在快速迭代,并逐渐取代负载均衡器供应商(如F5)。因此,七层负载均衡器也在逐步成为商业化软件解决方案。

因此,如今的负载均衡行业处于传统硬件和新兴软件并存的时期。不过,随着行业朝网络解决方案的商业化OSS(Operation Support Systems,运营支撑系统)硬件和软件方向发展,OSS软件和云供应商将会取代传统的负载均衡供应商,成为负载均衡的新方向。

1.3.3 负载均衡面临的挑战

现如今,负载均衡已成为高并发网络架构中必不可少的组件,大型互联网架构也越来越多地依赖负载均衡。与此同时,我们也看到了负载均衡发展过程中所面临的一些新的挑战。

1.性能

基于通用处理器部署的用户态负载均衡软件,受限于操作系统对多核并发的支持度,而不仅是受限于CPU的数量,因此负载均衡面临新的性能瓶颈。比如,HAProxy这类基于用户态的软件负载均衡,其对CPU主频的依赖度要远远高于CPU核数,这使得对服务器类型选择的要求较为严格。

2.业务

越来越多的Web流量需要流经七层负载均衡器,使得七层负载均衡器需要支持的协议、需要解析的应用数据越来越多;尤其是在出现高并发连接的突发情况下,负载均衡将承担巨大的业务压力。同时,七层负载均衡的交换规则越来越复杂,使得架构师和程序员对其增加了依赖,无形中也加重了七层负载均衡的负担。

3.成本

软件负载均衡之所以被广泛使用,很大程度上是由于其成本较低(包括后期的管理和维护成本)但是,每增加一组负载均衡,投入的成本就会增加,随着对负载均衡的依赖越来越大,成本问题日渐突出。如何提升单机的运营能力成为负载均衡面临的一项新挑战。

4.运维

负载均衡处于客户端和后端服务器之间,当业务出现故障时,尤其是有的故障与客户端、后端服务器的配置相关联时,很难通过负载均衡提供的连接统计、CPU、内存、有限的日志等统计信息发现隐蔽的问题。这给运维人员进行

故障诊断带来了很大的困难,在这方面我们需要探索出更为先进的方法。

◆ 负载均衡的原理

了解负载均衡技术的工作原理是学习本书后面章节的基础,下面将重点阐述两大类(按工作方式划分)负载均衡技术原理:四层负载均衡原理、七层负载均衡原理。

1.4.1 四层负载均衡的原理

四 层 负 载 均 衡 工 作 在 网 络 七 层 开 放 式 系 统 互 联 ( Open SystemInterconnect,OSI)模型的第四层,即传输层,基于IP和端口进行请求分发。典型的四层负载均衡是LVS。

如图1-6所示,在四层负载均衡上,服务以VIP:VPort的形式对外暴露;

后端集群中有多个节点会响应这个服务。当客户端请求服务访问VIP:VPort时,四层负载均衡器收到客户端请求后,会根据负载均衡算法从后端集群中选择一个节点,修改请求的目的IP:Port为该节点的IP:Port(若响应要求经过负载均衡,则需要同时修改源IP:Port为负载均衡local ip/LIP:localport/LPort),把客户端请求分发到该节点。

负载均衡的产生与原理、典型的负载均衡器介绍

图1-6 四层负载均衡

1.4.2 七层负载均衡的原理

七层负载均衡工作在网络七层OSI模型的第七层,即应用层。其基于请求的应用层信息做负载均衡,如七层协议信息(HTTP、RADIUS、DNS等)、七层URL信息、浏览器类别信息等,在功能上更加丰富,可以使整个网络更加智能化。典型的七层负载均衡器是Nginx。

如图1-7所示,七层负载均衡器收到客户端请求后,根据配置规则可以实现对HTTP信息的修改、URL路径规则匹配、URL路径重写等,并根据负载均衡调度算法将客户端请求分发到上游服务器(Upstream Server)中。

负载均衡的产生与原理、典型的负载均衡器介绍

图1-7 七层负载均衡

◆ 典型的负载均衡器介绍

上一节提到了四层负载均衡和七层负载均衡的典型代表LVS和Nginx,本节就来简单介绍一下这两种负载均衡器架构及其工作方式等。

1.5.1 LVS

提到负载均衡器就不得不介绍一下中国开源界的丰碑——Linux虚拟服务器(LVS)。LVS是由章文嵩发起的Linux开源项目,通过采用集群化技术,为基于Linux的操作系统提供一个构建高性能、高可用应用的解决方案。LVS是中国开源软件的先锋和骄傲,在国际上具有较强的影响力,该项目于1998年5月在网站上发布IPVS第一个版本源程序,获得了来自Internet的用户和开发者的支持。目前,LVS已经作为Linux内核的官方负载均衡解决方案,被广泛认可和采纳。比如,现在在如火如荼进行中的Kubernetes项目,LVS被应用于Kubeproxy 这 一 Kubernetes 核 心 组 件 中 , 用 于 替 代 iptables 优 化 KubernetesService的性能;Google基于LVS采用Go语言研发了负载均衡平台Seesaw,作为其内部负载均衡服务的基础架构。LVS一直被作为核心组件应用于众多系统中。

LVS实际上是一种集群(Cluster)技术,基于Linux内核IPVS模块实现负载均衡,基于内容请求进行分发,并通过IPVS的管理工具ipvsadm进行管理。

LVS具有很好的吞吐率,可以将请求均衡地分发到不同的服务器上去执行,且自动屏蔽服务器的故障,从而将一组服务器构成一个高性能的、高可用的虚拟服务器。整个服务器群的结构对客户是透明的,而且无须修改客户端和服务器端的程序。

1.集群结构

LVS由前端的负载均衡器(Load Balancer,LB)和后端的服务器(RealServer,RS)群组成,整个系统主要分为以下三大部分。

● 负载均衡器:LVS系统的前端维护一个虚拟IP地址。当客户端访问这个虚拟IP地址时,负载均衡器会负责将客户端的请求通过特定的算法分发到不同的真实服务器上执行。为了避免单点故障,通常需要两个负载均衡器做主从备份(LVS本身并不支持该功能)。

● 服务器群:一组真正执行客户端请求的服务器,负责处理客户端请求并返回结果。RS之间可以通过局域网或广域网连接,并对客户透明。

● 共享存储池:为服务器群提供一个共享的存储区,确保服务器群都能得到一致的数据、提供相同的服务。一般使用网络文件系统或分布式文件系统。

图1-8所示为LVS集群系统结构。

负载均衡的产生与原理、典型的负载均衡器介绍

图1-8 LVS集群系统结构

2.工作模式

IPVS是LVS集群系统的核心软件,它安装在负载调度器上,同时会在负载调度器上虚拟出一个IP地址,用户必须通过这个虚拟的IP地址访问服务器。这个虚拟的IP地址一般被称为LVS的VIP(Virtual IP)。访问的请求首先经过VIP到达负载调度器,然后由负载调度器从RS列表中选取一个服务节点响应用户的请求。

在用户的请求到达负载调度器后,负载调度器如何将请求发送到提供服务的RS节点,以及RS节点如何将数据返回给用户,是IPVS的实现重点。

目前,LVS实现了4种集群类型,包括NAT、DR、Tunnel和FullNAT,分别有不同的特点和应用场景,我们将在第2章进行详细说明,这里不做进一步展开。

1.5.2 Nginx

Nginx(engine x)是基于C语言实现的一个高性能、轻量级的HTTP和反向代理Web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx既可用作静态服务器,提供图片、视频服务,也可用作反向代理或负载均衡服务器。Nginx作为反向代理,当代理后端应用集群时,需要进行负载均衡。Nginx提供了对上游服务器(真实业务逻辑访问的服务器)的负载均衡、故障转移、失败重试、容错、健康检查等功能,以一种廉价有效透明的方法扩展了网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。

Nginx具有高并发连接、低内存消耗、低成本、配置简单灵活、支持热部署、稳定性高、可扩展性好等优点,这些优点都得益于其优秀的架构设计(模块化、多进程和多路I/O复用模型)。

1.模块介绍

Nginx服务器由多个模块组成,每个模块负责自身的功能,模块之间“高内聚、低耦合”,如图1-9所示。

负载均衡的产生与原理、典型的负载均衡器介绍

图1-9 Nginx服务器的模块

● 核心模块:是Nginx服务器正常运行必不可少的模块,提供错误日志记录、配置文件解析、事件驱动机制、进程管理等核心功能。

● 标准HTTP模块:提供HTTP协议解析相关的功能,如端口配置、网页编码设置、HTTP响应头设置等。

● 可选HTTP模块:主要用于扩展标准的HTTP功能,让Nginx能处理一些特殊的服务,如Flash多媒体传输、解析GeoIP请求、SSL支持等。

● 邮件服务模块:主要用于支持Nginx的邮件服务,包括对POP3协议、IMAP协议和SMTP协议的支持。

● 第三方模块:为了扩展Nginx服务器应用,完成开发者自定义功能,如JSON支持、Lua支持等。

2.架构设计

Nginx服务器是采用Master/Worker多进程模式实现的,如图1-10所示。

负载均衡的产生与原理、典型的负载均衡器介绍

图1-10 Master/Worker多进程模式

● 多进程:一个Master进程和多个Worker进程。Nginx在启动后会有一个Master进程负责接收外部信号、管理Worker进程。Master进程在接收到外部信号后会将该信号传递到Worker进程,最终由Worker进程来处理实际的请求连接任务,和用户交互。其中,Worker进程通常与CPU内核数量一致,可以更好地利用多核特性、通过无限循环不断接收来自客户端的请求,处理真正的业务逻辑。

● I/O多路复用模型:如果不使用I/O多路复用,那么在一个进程中,某个时间段只能处理一个请求。而多路复用模型(如Nginx采用的Epoll模型)允许在某一时间段同时处理多个请求。通过事件注册机制,Epoll对象会在已注册事件发生时通知某个进程来处理,事件处理完之后进程就会空闲下来等待其他事件。

在Nginx中,当某个Worker进程接收到客户端的请求后,会调用I/O进行处理。如果不能立即得到结果,就会去处理其他请求(即非阻塞),而客户端在此期间也无须等待响应,可以去处理其他事情(即异步)。当有I/O结果返回时,Epoll对象就可以监听I/O对应的文件描述符的变化,并通知对应的Worker进程。该进程得到通知后,会暂时挂起当前处理的事务,响应客户端请求。

从上面的过程中可以看出,虽然每个进程只有一个线程,同一时间只能做一件事情,但是可以通过不断切换来“同时”处理多个请求。

通过使用上述的多进程机制和I/O多路复用模型,Nginx就具备了高并发的特性。

来源:https://www.toutiao.com/article/7291961757831184933/?log_from=2e7c8099aa5b3_1700442593789

负载均衡的产生与原理、典型的负载均衡器介绍负载均衡的产生与原理、典型的负载均衡器介绍

↑↑↑长按图片识别二维码关註↑↑↑

原文始发于微信公众号(全栈网络空间安全):负载均衡的产生与原理、典型的负载均衡器介绍

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年4月28日07:55:40
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   负载均衡的产生与原理、典型的负载均衡器介绍http://cn-sec.com/archives/2692157.html

发表评论

匿名网友 填写信息