负载均衡原理及介绍

负载均衡是一种将网络流量分配到多个服务器上的技术,以提高系统的可用性、可扩展性和性能。常见的负载均衡算法有轮询、加权轮询、最小连接数等。

简述:负载均衡就是一种将用户的web请求(请求流量)分发给多个服务器处理,达到流量分摊的效果,以避免单个服务器过载而导致服务不可用。通过负载均衡,可以提高系统的可用性、可扩展性和性能。

在实际应用中,负载均衡可以用于分发Web请求、数据库请求、邮件服务器请求等。通过将流量分配到多个服务器上,可以避免单点故障,提高系统的可用性和可靠性。

负载均衡的优点主要有以下几点:

  1. 提高系统的可用性和稳定性:通过将请求分发到多个服务器上,可以避免单点故障,提高系统的可用性和稳定性。

  2. 提高系统的性能:通过将请求分发到多个服务器上,可以减轻单个服务器的负载,提高系统的性能。

  3. 提高系统的扩展性:通过增加服务器数量,可以方便地扩展系统的处理能力,满足不断增长的用户需求。

  4. 提高系统的安全性:通过将请求分发到多个服务器上,可以减少攻击者对单个服务器的攻击风险,提高系统的安全性。

常见的负载均衡算法有以下几种

  1. 轮询(Round Robin)算法:将请求依次分配给后端服务器,每个服务器按照顺序依次处理请求。
  2. 随机(Random)算法:随机选择一个后端服务器来处理请求。
  3. 最少连接(Least Connections)算法:将请求分配给当前连接数最少的后端服务器。
  4. IP哈希(IP Hash)算法:根据请求的IP地址计算哈希值,然后将请求分配给哈希值对应的后端服务器。

负载均衡可以通过以下几种方式应对服务器故障

  1. 健康检查:负载均衡器会定期向后端服务器发送请求,检查服务器是否正常运行。如果某个服务器无法响应请求,负载均衡器会将其从服务器池中移除,避免将请求发送到故障的服务器上。

  2. 重试机制:如果某个请求发送到了故障的服务器上,负载均衡器会尝试将该请求发送到其他正常的服务器上,直到请求被成功处理为止。

  3. 热备份:负载均衡器可以配置热备份服务器,当某个服务器故障时,热备份服务器会立即接管该服务器的工作,保证服务的可用性。

负载均衡集群功能分类:

        1. LB(Load Balancing)负载均衡(增加处理能力),有高可用能力,但不是高可用集群负载均衡集群,是以提高服务的并发处理能力为根本着眼点。

        2. HA(High Availability)高可用集群(增加服务可用性),高可用集群是以提升服务的始终在线能力为着眼点,不会因为宕机而导致服务不能用。衡量可用性:在线时间/(在线时间+故障处理时间)。

        3. HPC(High performance)高性能计算集群,计算海量数据,解决复杂问题平时所说的超级计算机就是高性能计算集群,查看每秒钟浮点运算的能力
运用到的名词:
向量机:尽可能向上进行扩展,如果CPU过多,在架构上纵然会有问题的
并行处理集群:包括两部分

1、分布式文件系统;

2、将大任务切割为小任务,分别进行处理的机制;例如hadoop就是并行处理集群

负载均衡的主要方式:

        1. http重定向:根据用户的http请求计算出一个真实的web服务器地址,并将该web服务器地

址写入http重定向响应中返回给客户浏览器,由浏览器重新进行访问。

例图:

优点:比较简单

缺点:客户浏览器需要多次请求服务器才能完成一次访问,性能较差。

        http重定向服务器自身的处理能力可能成为瓶颈。

        使用http302响应重定向,有可能使搜索引擎判断为SEO作弊,降低搜索排名。

2. DNS负载均衡:在DNS服务器上配置多个域名对应IP的记录。例如一个域名www.baidu.com对应一组web服务器IP地址,域名解析时经过DNS服务器的算法将一个域名请求分配到合适的真实服务器上。

优点:将负载均衡的工作交给了DNS,省却了网站管理维护负载均衡服务器的麻烦,同时许多DNS还支持基于地理位置的域名解析,将域名解析成距离用户地理最近的一个服务器地址,加快访问速度吗,改善性能。

       缺点:目前的DNS解析是多级解析,每一级DNS都可能化缓存记录A,当某个服务器下线后,该服务器对应的DNS记录A可能仍然存在,导致分配到该服务器的用户访问失败。

        DNS负载均衡的控制权在域名服务商手里,网站可能无法做出过多的改善和管理;不能够按服务器的处理能力来分配负载。DNS负载均衡采用的是简单的轮询算法,不能区分服务器之间的差异,不能反映服务器当前运行状态,所以其的负载均衡效果并不是太好;可能会造成额外的网络问题。为了使本DNS服务器和其他DNS服务器及时交互,保证DNS数据及时更新,使地址能随机分配,一般都要将DNS的刷新时间设置的较小,但太小将会使DNS流量大增造成额外的网络问题。

3. 反向代理负载均衡:反向代理处于web服务器这边,反向代理服务器提供负载均衡的功能,同时管理一组web服务器,它根据负载均衡算法将请求的浏览器访问转发到不同的web服务器处理,处理结果经过反向服务器返回给浏览器。
  例如:浏览器访问请求的地址是反向代理服务器的地址X.X.X.X,反向代理服务器收到请求,经过负载均衡算法后得到一个真实物理地址X.X.X.X1,并将请求结果发给真实服务器,真实服务器处理完后通过反向代理服务器返回给请求用户。

图示:

优点:部署简单,处于http协议层面。

缺点:使用了反向代理服务器后,web 服务器地址不能直接暴露在外,因此web服务器不需要使用外部IP地址,而反向代理服务作为沟通桥梁就需要配置双网卡、外部内部两套IP地址。

4. IP负载均衡:(lvs-nat)在网络层和传输层(IP和端口)通过修改目标地址进行负载均衡。用户访问请求到达负载均衡服务器,负载均衡服务器在操作系统内核进程获取网络数据包,根据算法得到一台真实服务器地址,然后将用户请求的目标地址修改成该真实服务器地址,数据处理完后返回给负载均衡服务器,负载均衡服务器收到响应后将自身的地址修改成原用户访问地址后再讲数据返回回去。类似于反向服务器负载均衡。

优点:在响应请求时速度较反向服务器负载均衡要快。

缺点:如法处理更高级的请求

5. 数据链路层负载均衡:(lvs-DR) 在数据链路层修改Mac地址进行负载均衡。负载均衡服务器的IP和它所管理的web 服务群的虚拟IP一致;负载均衡数据分发过程中不修改访问地址的IP地址,而是修改Mac地址;通过这两点达到不修改数据包的原地址和目标地址就可以进行正常的访问。

优点:不需要负载均衡服务器进行IP地址的转换;数据响应时,不需要经过负载均衡服务器。
缺点:负载均衡服务器的网卡带宽要求较高。

6. F5硬件负载均衡:

1、F5 BIG-IP提供12种灵活的算法将所有流量均衡的分配到各个服务器,而面对用户,只是一台虚拟服务器。

2、健康性检查。F5 BIG-IP可以确认应用程序能否对请求返回对应的数据。假如F5 BIG-IP后面的某一台服务器发生服务停止、死机等故障,F5会检查出来并将该服务器标识为宕机,从而不将用户的访问请求传送到该台发生故障的服务器上。这样,只要其它的服务器正常,用户的访问就不会受到影响。宕机一旦修复,F5 BIG-IP就会自动查证应用保证对客户的请求作出正确响应并恢复向该服务器传送。

3、F5 BIG-IP具有动态Session的会话保持功能,笔者也是在网站中使用的F5将用户IP与Session通过F5进行的绑定,使其Session保持一致。

4、F5 BIG-IP的iRules功能可以做HTTP内容过滤,根据不同的域名、URL,将访问请求传送到不同的服务器。

优点:性能好。

缺点:成本高,配置冗余。

四层和七层负载均衡:所谓四层就是基于IP+端口的负载均衡,主要代表有lvs。

七层负载也称内容交换,就是基于URL等应用层信息的负载均衡,主要代表有nginx。

负载均衡也叫代理;有正向代理和反向代理之分。

正向代理:只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中,正向代理指的是客户端代理,是由用户控制并知晓的代理方式,如我不能访问fb,然后使用了某国外服务器作为跳板机,最后成功访问了就是正向代理。

反向代理:指以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器;并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器,反向代理指的是服务端代理,在大型网站背后并不是只有一台机器提供服务,比如我访问微博,微博的某一个反向代理服务器将我解析到内部服务器的一台机器,然后这台机器给我提供微博的消息(当然实际情况比这个复杂的多),这些对于用户都是不可见的,我们只会感觉只有一台机器与我交互。

LVS概述:Linux Virtual Server,Linux虚拟服务器,LVS工作在一台server上提供Directory(负载均衡器)的功能,本身并不提供服务,只是把特定的请求转发给对应的real server(真正提供服务的主机),从而实现集群环境中的负载均衡。

框架:LB-SERVER负载均衡器和realy-server真实服务器两种。

LVS的工作模式:

1. NAT转发模式:(网络地址转换)

①.客户端将请求发往前端的负载均衡器,请求报文源地址是CIP(客户端IP),后面统称为CIP),目标地址为VIP(负载均衡器前端地址,后面统称为VIP)。

②.负载均衡器收到报文后,发现请求的是在规则里面存在的地址,那么它将客户端请求报文的目标IP地址改为了后端服务器的RIP地址并将报文根据算法发送出去。

③.报文送到Real Server后,由于报文的目标地址是自己,所以会响应该请求,并将响应报文返还给LVS。

④.然后lvs将此报文的源地址修改为本机并发送给客户端。

注意:在NAT模式中,Real Server的网关必须指向LVS,否则报文无法送达客户端。

优点:网络隔离更安全;节省IP地址。

缺点:director很可能成为系统性能瓶颈,所有的请求director都需要处理应答

2. DR直接路由模式:

①.客户端将请求发往前端的负载均衡器,请求报文源地址是CIP,目标地址为VIP。

②.负载均衡器收到报文后,发现请求的是在规则里面存在的地址,那么它将客户端请求报文的源MAC地址改为自己DIP的MAC地址,目标MAC改为了RIP的MAC地址,并将此包发送给RS。

③.RS发现请求报文中的目的MAC是自己,就会将次报文接收下来,处理完请求报文后,将响应报文通过lo接口送给eth0网卡直接发送给客户端。

特点:

1,集群节点和director必须在一个物理网络内
2,RIP可以使用公网地址或私有地址
3,director仅处理入站请求,director服务器的压力比较小
4,集群节点网关不指向director,故出站不经过director
5,不支持端口映射
6,大多数操作系统可以作为realserver,要支持隔离arp广播

ARP问题:

通常,DR模式需要在Real-server上配置VIP,配置的方式为:
/sbin/ifconfig lo:0 inet VIP netmask 255.255.255.255


i) 原因在于,当LVS把client的包转发给Real-server时,因为包的目的IP地址是VIP,那么如果Real-server收到这个包后,发现包的目的IP不是自己的系统IP,那么就会认为这个包不是发给自己的,就会丢弃这个包,所以需要将这个IP地址绑到网卡上;当发送应答包给client时,Real-server就会把包的源和目的地址调换,直接回复给client。


ii) 关于ARP广播:
* 上面绑定VIP的掩码是”255.255.255.255″,说明广播地址是其本身,那么他就不会将ARP发送到实际的自己该属于的广播域了,这样防止与LVS上VIP冲突,而导致IP冲突。
* 另外在Linux的Real-server上,需要设置ARP的sysctl选项:

3.TUN-IP隧道模式:

①.客户端将请求发往前端的负载均衡器,请求报文源地址是CIP,目标地址为VIP。

②.负载均衡器收到报文后,发现请求的是在规则里面存在的地址,那么它将在客户端请求报文的首部再封装一层IP报文,将源地址改为DIP,目标地址改为RIP,并将此包发送给RS。

③.RS收到请求报文后,会首先拆开第一层封装,然后发现里面还有一层IP首部的目标地址是自己lo接口上的VIP,所以会处理次请求报文,并将响应报文通过lo接口送给eth0网卡直接发送给客户端。

优点:负载均衡器只负责将请求包分发给后端节点服务器,而RS将应答包直接发给用户。所以,减少了负载均衡器的大量数据流动,负载均衡器不再是系统的瓶颈,就能处理很巨大的请求量,这种方式,一台负载均衡器能够为很多RS进行分发。而且跑在公网上就能进行不同地域的分发。

缺点:隧道模式的RS节点需要合法IP,这种方式需要所有的服务器支持”IP Tunneling”(IP Encapsulation)协议,服务器可能只局限在部分Linux系统上。

4.FULL-NAT:Full-NAT由此而生,解决的是LVS和RS跨VLAN的问题,而跨VLAN问题解决后,LVS和RS不再存在VLAN上的从属关系,可以做到多个LVS对应多个RS,解决水平扩容的问题。

模式对比:

轮询算法:

Fixed Scheduling Method  静态调服方法

1.RR轮询:调度器通过"轮叫"调度算法将外部请求按顺序轮流分配到集群中的真实服务器上,它均等地对待每一台服务器,而不管服务器上实际的连接数和系统负载。

2.WRR加权轮询:调度器通过"加权轮叫"调度算法,根据真实服务器的不同处理能力.来调度访问请求。这样可以保证处理能力强的服务器,处理更多的访问流量。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。

3.DH 目标地址hash:”目标地址散列"调度算法根据请求的目标IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。

4.SH 源地址hash:"源地址散列"调度算法根据请求的源IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。

Dynamic Scheduling Method 动态调服方法

5.LC 最小连接:调度器通过"最少连接"调度算法动态地将网络请求调度到已建立的链接数最少的服务器上。如果集群系统的真实服务器具有相近的系统性能,采用"最小连接"调度算法可以较好地均衡负载。

6.WLC 加权最小连接:在集群系统中的服务器性能差异较大的情况下,调度器采用"加权最少链接"调度算法优化负载均衡性能,具有较高权值的服务器将承受较大比例的活动连接负载。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

好好学技术oH

你的鼓励是一起学习的动力何阶梯

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值