负载均衡(LB)简略介绍

 

 1 负载均衡相关概念

【1】负载均衡(Load Balance)是集群技术(Cluster)的一种应用。

指将负载(工作任务)进行平衡、分摊到多个单元操作上进行运行,从而提高并发处理能力。

【2】作用

 [1] 解决并发压力,提高应用处理性能(增加吞吐量,加强网络处理能力)
 [2] 提供故障转移,实现高可用。
 [3] 通过添加或者减少服务器数量,提供网站伸缩性(扩展性)。
 [4] 安全防护


【3】优势

 - 高性能:负载均衡技术将业务较均衡的分担到多台设备或链路上,从而提高了整个系统的性能;

 - 可扩展性:负载均衡技术可以方便的增加集群中设备或链路的数量,在不降低业务质量的前提下满足不断增长的业务需求;

 - 高可靠性:单个甚至多个设备或链路法神故障也不会导致业务中断,提高了整个系统的可靠性;

 - 可管理性:大量的管理共组都集中在使用负载均衡技术的设备上,设备集群或链路集群只需要维护通过的配置即可;

 - 透明性:对用户而言,集群等于一个或多个高可靠性、高性能的设备或链路,用户感知不到,也不关心具体的网络结构,增加或减少设备或链路数量都不会影响正常的业务。

【4】负载均衡技术分类:

 

- 服务器负载均衡:在数据中心等组网环境中,可以采用服务器负载均衡,将网络服务分担给多台服务器进行处理,提高数据中心的业务处理能力;

 - 链路负载均衡:在有多个运营商出接口的组网环境中,可以采用出方向多链路动态负载均衡,实现链路的动态选择,提高服务的可靠性;

  - 防火墙负载均衡:在防火墙处理能力成为瓶颈的组网环境中,可以采用防火墙负载均衡,将网络流量分担给多台防火墙设备,提高防火墙的处理能力;

【5】根据ISO七层模型的负载均衡的分类

常见的实现方式中,主要可以在应用层、传输层、网络层和数据链路层做文章。所以,工作在应用层的负载均衡,我们通常称之为七层负载均衡、工作在传输层的我们称之为四层负载均衡。

大致可以分为以下几种,其中最常用的是四层和七层负载均衡:

 - 二层负载均衡

负载均衡服务器对外依然提供一个VIP(虚IP),集群中不同的机器采用相同IP地址,但是机器的MAC地址不一样。当负载均衡服务器接受到请求之后,通过改写报文的目标MAC地址的方式将请求转发到目标机器实现负载均衡(lvs的DR模式)。

 - 三层负载均衡

和二层负载均衡类似,负载均衡服务器对外依然提供一个VIP(虚IP),但是集群中不同的机器采用不同的IP地址。当负载均衡服务器接受到请求之后,根据不同的负载均衡算法,通过IP将请求转发至不同的真实服务器。

 - 四层负载均衡

四层负载均衡工作在OSI模型的传输层,由于在传输层,只有TCP/UDP协议,这两种协议中除了包含源IP、目标IP以外,还包含源端口号及目的端口号。四层负载均衡服务器在接受到客户端请求后,以后通过 修改数据包的地址信息(IP+端口号) 将流量转发到应用服务器。

 - 七层负载均衡

七层负载均衡工作在OSI模型的应用层,应用层协议较多,常用http、radius、dns等。七层负载就可以基于这些协议来负载。这些应用层协议中会包含很多有意义的内容。比如同一个Web服务器的负载均衡,除了根据IP加端口进行负载外,还可根据七层的URL、浏览器类别、语言来决定是否要进行负载均衡。

 

 2、负载均衡工具 

市面上有很多开源的负载均衡的工具或软件,基本都是基于前面提到的方案实现的,大多数是工作在第七层和第四层的。Nginx/LVS/HAProxy是目前使用最广泛的三种负载均衡软件。

【1】LVS :LVS主要用来做四层负载均衡

LVS(Linux Virtual Server),也就是Linux虚拟服务器, 是一个由章文嵩博士发起的自由软件项目。使用LVS技术要达到的目标是:通过LVS提供的负载均衡技术和Linux操作系统实现一个高性能、高可用的服务器群集,它具有良好可靠性、可扩展性和可操作性。从而以低廉的成本实现最优的服务性能。

【2】Nginx :Nginx主要用来做七层负载均衡

【3】Nginx(发音同engine x)是一个网页服务器,它能反向代理HTTP, HTTPS, SMTP, POP3, IMAP的协议链接,以及一个负载均衡器和一个HTTP缓存。。

【4】HAProxy :HAProxy主要用来做七层负载均衡 也可做四层的负载均衡

HAProxy是一个使用C语言编写的自由及开放源代码软件,其提供高可用性、负载均衡,以及基于TCP和HTTP的应用程序代理。

 3、负载均衡算法

负载均衡产品中的关键技术是调度,目前常用的调度算法有
 - 轮询(Round Robin)
 - 加权轮询(Weight Round Robin)
 - 最少连接(Least Connection)
 - 加权最少连接( Weight Least Connection)
 - 随机(Random)
 - 加权随机(Weight  Random)
 - 原地址散列( Source Hashing)
 - 原地址端口散列( Source&Prot Hashing)


【1】.静态负载均衡算法包括:轮询,比率,优先权

     - 轮询(Round Robin):顺序循环将请求一次顺序循环地连接每个服务器。当其中某个服务器发生第二到第7 层的故障,BIG-IP就把其从顺序循环队列中拿出,不参加下一次的轮询,直到其恢复正常。

   -   比率(Ratio):给每个服务器分配一个加权值为比例,根椐这个比例,把用户的请求分配到每个服务器。当其中某个服务器发生第二到第7 层的故障,BIG-IP 就把其从服务器队列中拿出,不参加下一次的用户请求的分配, 直到其恢复正常。

     -优先权(Priority):给所有服务器分组,给每个组定义优先权,BIG-IP
    用户的请求,分配给优先级最高的服务器组(在同一组内,采用轮询或比率算法,分配用户的请求);当最高优先级中所有服务器出现故障,BIG-IP才将请求送给次优先级的服务器组。这种方式,实际为用户提供一种热备份的方式。

【2】.动态负载均衡算法包括: 最少连接数,最快响应速度,观察方法,预测法,动态性能分配,动态服务器补充,服务质量,服务类型,规则模式。

  •     最少的连接方式(Least Connection):传递新的连接给那些进行最少连接处理的服务器。当其中某个服务器发生第二到第7层的故障,BIG-IP 就把其从服务器队列中拿出,不参加下一次的用户请求的分配, 直到其恢复正常。
  •     最快模式(Fastest):传递连接给那些响应最快的服务器。当其中某个服务器发生第二到第7 层的故障,BIG-IP
  •     就把其从服务器队列中拿出,不参加下一次的用户请求的分配,直到其恢复正常。
  •     观察模式(Observed):连接数目和响应时间以这两项的最佳平衡为依据为新的请求选择服务器。当其中某个服务器发生第二到第7层的故障,BIG-IP就把其从服务器队列中拿出,不参加下一次的用户请求的分配,直到其恢复正常。
  •     预测模式(Predictive):BIG-IP利用收集到的服务器当前的性能指标,进行预测分析,选择一台服务器在下一个时间片内,其性能将达到最佳的服务器相应用户的请求。(被BIG-IP进行检测)
  •     动态性能分配(Dynamic Ratio-APM):BIG-IP 收集到的应用程序和应用服务器的各项性能参数,动态调整流量分配。
  •     动态服务器补充(Dynamic Server Act.):当主服务器群中因故障导致数量减少时,动态地将备份服务器补充至主服务器群。
  •     服务质量(QoS):按不同的优先级对数据流进行分配。
  •     服务类型(ToS):按不同的服务类型(在Type of Field中标识)负载均衡对数据流进行分配。
  •     规则模式:针对不同的数据流设置导向规则,用户可自行规定。

 

  • 3
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Gateway 是一个基于 Spring Boot 2 和 Spring Framework 5,使用 Project Reactor 实现的网关服务。它提供了一种简单而强大的方式来对微服务进行路由、过滤和负载均衡,使得我们能够更加灵活地构建分布式系统。 在 Spring Gateway 中实现负载均衡非常简单,可以通过集成 Ribbon 或者使用 Spring Cloud LoadBalancer 来实现。下面分别介绍一下这两种实现方式。 1. 集成 Ribbon Ribbon 是 Netflix 提供的客户端负载均衡器,它通过在客户端中嵌入负载均衡算法来实现负载均衡。 在 Spring Gateway 中使用 Ribbon 实现负载均衡非常简单,只需要在项目中引入以下依赖: ```xml <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-ribbon</artifactId> </dependency> ``` 然后在配置文件中配置负载均衡规则即可: ```yaml spring: cloud: gateway: routes: - id: service-a uri: lb://service-a ``` 其中,`lb://service-a` 表示使用 Ribbon 进行负载均衡的服务名。 2. 使用 Spring Cloud LoadBalancer Spring Cloud LoadBalancer 是 Spring Cloud 提供的一个客户端负载均衡器,它提供了一种更加灵活的方式来实现负载均衡。 在 Spring Gateway 中使用 Spring Cloud LoadBalancer 实现负载均衡也非常简单,只需要在项目中引入以下依赖: ```xml <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-loadbalancer</artifactId> </dependency> ``` 然后在配置文件中配置负载均衡规则即可: ```yaml spring: cloud: gateway: routes: - id: service-a uri: lb://service-a ``` 其中,`lb://service-a` 表示使用 Spring Cloud LoadBalancer 进行负载均衡的服务名。 总的来说,Spring Gateway 的负载均衡实现非常简单,只需要集成 Ribbon 或者使用 Spring Cloud LoadBalancer 即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值