负载均衡技术小记
背景介绍
在互联网的早期阶段,大型网站面临着巨大的挑战,随着用户数量的增长和数据量的爆发,单一的服务器难以承受如此巨大的压力,性能瓶颈的出现导致服务器响应时间变长,用户体验下降,为了解决这些问题,网站开始尝试采用垂直扩展和水平扩展的方式,垂直扩展通过增加硬件性能来提升处理能力,但这种方式存在性能瓶颈和成本高昂的问题,而水平扩展通过增加服务器数量,将负载分散到多个服务器上,从而提升系统的处理能力,如何有效地将用户的请求分发到不同的服务器上,使得每个服务器的负载都保持在一个合理的范围内,成为了一个新的问题,这就引出了我们今天要讨论的主题——负载均衡。
负载均衡简介
负载均衡是一种计算机技术,主要用于在多个计算机(如计算机集群)、网络连接、CPU、硬盘驱动器或其他资源中分配工作负载,其主要目标是优化资源使用、最大化吞吐率、最小化响应时间,同时避免任何一个资源的过载,在实际应用中,负载均衡通常通过使用多个服务器组件来替代单一的组件,以提高系统的可靠性和冗余性,这些服务器组件可以是物理服务器,也可以是虚拟机,负载均衡服务通常由专用的软件和硬件(如负载均衡器)来完成。
为什么需要负载均衡?
负载均衡在现代计算机系统中扮演着重要的角色,其主要作用包括:
提高性能和吞吐量:负载均衡可以将请求分发到多个后端服务器上,使得每个服务器处理的负载更加均衡,这样可以提高系统的整体性能和吞吐量,缩短用户的等待时间,提升用户体验。
增强系统可用性:通过将负载分散到多个服务器上,即使其中一个服务器发生故障,其他服务器仍然可以继续处理请求,从而提高系统的可用性和可靠性,负载均衡器可以自动检测故障并将请求转发到可用的服务器上,减少服务中断的风险。
实现系统的伸缩性:负载均衡器可以根据实际负载情况动态地添加或删除后端服务器,实现系统的弹性扩展,当负载增加时,可以添加更多的服务器来分担负载;当负载减少时,可以减少服务器的数量以节省资源。
解决高并发和高可用性问题:在互联网架构中,负载均衡可以有效地解决高并发和高可用性的问题,通过将请求分发到多个服务器上,可以平衡负载,避免单个服务器过载,从而提供更好的用户体验。
提高资源利用率:负载均衡可以根据服务器的性能指标和负载情况,将请求分发到最适合的服务器上,这样可以更好地利用服务器的资源,提高资源的利用率。
负载均衡的分类
我们可以从多个维度对众多支持负载均衡的技术进行分类。
DNS负载均衡
DNS负载均衡是一种简单而常见的负载均衡方式,它主要用于实现地理级别的负载均衡,通过DNS负载均衡,可以将用户的请求引导到地理位置最近的服务器,从而减少网络延迟,提升用户体验,DNS服务器会根据用户的地理位置,解析同一个域名为不同的IP地址,对于同一个域名www.baidu.com,北方的用户可能解析得到的是北京机房的IP地址,而南方的用户解析得到的则是上海机房的IP地址,这样,用户的请求就可以被有效地分发到不同的服务器,实现负载的均衡,DNS负载均衡可以实现全局负载均衡,因为DNS服务器可以根据客户端的地理位置、网络状况等因素,选择最适合的服务器IP返回给客户端,从而实现全局的流量分发,可以将欧洲的用户请求分发到欧洲的服务器,将美国的用户请求分发到美国的服务器,DNS负载均衡也有一些限制,DNS查询结果可能会被客户端或中间网络设备缓存,导致负载均衡策略不能实时生效,DNS负载均衡无法实现会话保持,也无法根据服务器的实时负载状况进行动态调整,DNS负载均衡通常和其他负载均衡技术(如四层负载均衡、七层负载均衡)配合使用,以实现更高效的负载均衡。
按照实现方式分类
负载均衡按照实现方式分类主要可以分为硬件负载均衡和软件负载均衡两类。
硬件负载均衡
硬件负载均衡器是专门的物理设备,这类设备性能强劲、功能强大、具有高性能和高可靠性,适合处理大规模的网络流量,但价格昂贵,硬件负载均衡解决方案是直接在服务器和外部网络间安装负载均衡设备,这种设备通常称之为负载均衡器,由于专门的设备完成专门的任务,独立于操作系统,整体性能得到大量提高,加上多样化的负载均衡策略,智能化的流量管理,可达到最佳的负载均衡需求,硬件负载均衡器有多种多样的形式,除了作为独立意义上的负载均衡器外,有些负载均衡器集成在交换设备中,置于服务器与Internet链接之间,有些则以两块网络适配器将这一功能集成到PC中,一块连接到Internet上,一块连接到后端服务器群的内部网络上,一般而言,硬件负载均衡在功能、性能上优于软件方式,不过成本昂贵。
软件负载均衡
软件负载均衡解决方案是指在一台或多台服务器相应的操作系统上安装一个或多个附加软件来实现负载均衡,如DNS Load Balance,CheckPoint Firewall-1 ConnectControl等,它的优点是基于特定环境,配置简单,使用灵活,成本低廉,可以满足一般的负载均衡需求,软件解决方案缺点也较多,因为每台服务器上安装额外的软件运行会消耗系统不定量的资源,越是功能强大的模块,消耗得越多,所以当连接请求特别大的时候,软件本身会成为服务器工作成败的一个关键,软件可扩展性并不是很好,受到操作系统的限制,由于操作系统本身的Bug,往往会引起安全问题。
本地/全局负载均衡
负载均衡从其应用的地理结构上分为本地负载均衡(Local Load Balance)和全局负载均衡(Global Load Balance,也叫地域负载均衡),本地负载均衡针对本地范围的服务器群做负载均衡,全局负载均衡针对不同地理位置、不同网络结构的服务器群做负载均衡。
本地负载均衡
本地负载均衡不需要花费高额成本购置高性能服务器,只需利用现有设备资源就可有效避免服务器单点故障造成数据流量的损失,通常用来解决数据流量过大、网络负荷过重的问题,同时它拥有形式多样的均衡策略把数据流量合理均衡的分配到各台服务器,如果需要在现在服务器上升级扩充,不需改变现有网络结构、停止现有服务,仅需要在服务群中简单地添加一台新服务器。
全局负载均衡
全局负载均衡主要解决全球用户只需一个域名或IP地址就能访问到离自己距离最近的服务器获得最快的访问速度,它在多区域都拥有自己的服务器站点,同时也适用于那些子公司站点分布广的大型公司通过企业内部网(Intranet)达到资源合理分配的需求,全局负载均衡具备的特点:提高服务器响应速度,解决网络拥塞问题,达到高质量的网络访问效果,能够远距离为用户提供完全的透明服务真正实现与地理位置无关性,能够避免各种单点失效,既包括数据中心、服务器等的单点失效,也包括专线故障引起的单点失效,部署方式:路由模式、桥接模式、服务直接返回模式。
部署方式
负载均衡有三种部署方式:路由模式、桥接模式、服务直接返回模式,路由模式部署灵活,约60%的用户采用这种方式部署;桥接模式不改变现有的网络架构;服务直接返回模式比较适合吞吐量大特别是内容分发的网络应用,约30%的用户采用这种模式。
路由模式
路由模式的部署方式,服务器的网关必须设置成负载均衡机的LAN口地址,且与WAN口分署不同的逻辑网络,因此所有返回的流量也都经过负载均衡,这种方式对网络的改动小,能均衡任何下行流量。
桥接模式
桥接模式配置简单,不改变现有网络,负载均衡的WAN口和LAN口分别连接上行设备和下行服务器,LAN口不需要配置IP(WAN口与LAN口是桥连接),所有的服务器与负载均衡均在同一逻辑网络中,由于这种安装方式容错性差,网络架构缺乏弹性,对广播风暴及其他生成树协议循环相关联的错误敏感,因此一般不推荐这种安装架构。
服务直接返回模式
这种安装方式负载均衡的LAN口不使用,WAN口与服务器在同一个网络中,互联网的客户端访问负载均衡的虚IP(VIP),虚IP对应负载均衡机的WAN口,负载均衡根据策略将流量分发到服务器上,服务器直接响应客户端的请求,因此对于客户端而言,响应他的IP不是负载均衡机的虚IP(VIP),而是服务器自身的IP地址,也就是说返回的流量是不经过负载均衡的,因此这种方式适用大流量高带宽要求的服务。
负载均衡算法
现有的负载均衡算法主要分为静态和动态两类,静态负载均衡算法以固定的概率分配任务,不考虑服务器的状态信息,如轮转算法、加权轮转算法等;动态负载均衡算法以服务器的实时负载状态信息来决定任务的分配,如最小连接法、加权最小连接法等。
轮询法
轮询法,就是将用户的请求轮流分配给各个服务器,这种算法比较简单,它具有绝对均衡的优点,但是也正是因为绝对均衡它必须付出很大的代价,例如它无法保证分配任务的合理性,无法根据服务器承受能力来分配任务,轮询法适用于各个节点处理的性能相似时,任务分发单元将任务依次分配给各个节点。
随机法
随机法,是随机选择一台服务器来分配任务,它保证了请求的分散性达到了均衡的目的,同时它是没有状态的不需要维持上次的选择状态和均衡因子,但是随着任务量的增大,它的效果趋向轮询法,即它的效果并不好于轮询法。
最小连接法
最小连接法,将任务分配给此时具有最小连接数的节点,因此它是动态负载均衡算法,一个节点收到一个任务后连接数就会加1,当节点故障时就将节点权值设置为0,不再给节点分配任务,最小连接法适用于各个节点处理的性能相似时,任务分发单元将任务平滑分配给服务器,但当服务器性能差距较大时就无法达到预期的效果了这是因为连接数并不能准确表明处理能力,所以在这个时候就会导致任务无法准确的分配到剩余处理能力强的机器上。
常见软件负载均衡技术
常见的软件负载均衡技术有以下几种:
基于DNS的负载均衡:常见的软件负载均衡技术,由于在DNS服务器中,可以为多个不同的地址配置相同的名字,最终查询这个名字的客户机将在解析这个名字时得到其中一个地址,所以这种代理方式是通过DNS服务中的随机名字解析域名和IP来实现负载均衡。
反向代理负载均衡(如Apache+JK2+Tomcat这种组合):该种代理方式与普通的代理方式不同,标准代理方式是客户使用代理访问多个外部Web服务器,而反向代理方式是多个客户使用它访问内部Web服务器,从而导致了它们代理外部客户存取内部网的内容。
负载均衡技术是构建高效、可靠、可扩展的计算机系统的重要手段之一,通过合理地选择和使用负载均衡技术,可以提高系统的性能和吞吐量、增强系统的可用性、实现系统的伸缩性、解决高并发和高可用性问题、提高资源利用率等。
到此,以上就是小编对于“负载均衡技术小记”的问题就介绍到这了,希望介绍的几点解答对大家有用,有任何问题和不懂的,欢迎各位朋友在评论区讨论,给我留言。