精华内容
下载资源
问答
  • 什么是负载均衡

    2021-04-01 10:26:00
    能够彻底的掌握什么是负载均衡,以及为什么要使用负载均衡。能够清楚的理解实现负载均衡的三种方式,以及每种方式的优缺点。 一、什么是负载均衡?为什么要使用负载均衡? 首先来看一下百度百科上对于负载均衡的...

    读完这篇文章,我希望大家能够掌握以下两点知识:

    1. 能够彻底的掌握什么是负载均衡,以及为什么要使用负载均衡。
    2. 能够清楚的理解实现负载均衡的三种方式,以及每种方式的优缺点。

    一、什么是负载均衡?为什么要使用负载均衡?

    首先来看一下百度百科上对于负载均衡的介绍。

    负载均衡:建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。

    这样笼统来看,我想有很多人都看不明白,那么下面我将用大白话给大家介绍一下到底什么是负载均衡,如果介绍的不好,还请大家见谅。

    现在网站的架构已经从C/S模式转变为B/S模式,对于这两种模式的区别,大家没必要纠结,有兴趣的同学可以给我留言,我会在后面为大家讲解,现在只需要知道C/S模式是有一个专门的客户端,而B/S模式是将浏览器作为客户端。当用户在浏览器上输入一个网址按下回车键后,就会产生一个请求,在远方的服务器会处理这个请求,根据这个请求来生成用户想要的页面,然后将这个页面响应给浏览器,这样用户就能看到他想要看到的东西。我们知道,一台服务器处理数据(请求也是一种数据)的能力是有限的,当有大量的用户同时在浏览器上输入网址并按下回车键后,就会有大量的请求产生,远方的服务器就不得不处理这些请求,由于请求数量过多,服务器处理的效率就会变慢,响应时间就会变长,这样用户就不能在可以忍受的时间内看到自己想看到的东西,严重影响体验效果。更严重一点,如果请求数量超过了这台服务器所能处理的最大请求,服务器就会崩溃,直接导致网站瘫痪。

    那么,有什么方法能够解决这个问题呢?答案就是建立一个集群(就是一群服务器),通过集群的力量来提高服务端的数据处理能力,因为一台服务器的处理能力肯定比不上多台服务器的处理能力。

    这样我们在来描述一下用户请求页面的过程:首先用户在浏览器输入网址并按下回车键,然后会产生一个请求,远方的服务器会处理这个请求......等等,现在远方有很多服务器,到底哪个服务器来处理这个请求呢,总不能所有的服务器都处理这个请求吧。哪个服务器处理这个请求?大家明白了吧,这就是负载均衡所要解决的问题。回到上边请求页面的过程,这个请求此时会被一台专门的服务器来处理,这台服务器其实就是个集群的老大,他负责把这个请求派给下面哪个小弟(服务器)来处理,处理完之后返回页面用户。当有多个请求同时发生时,集群的老大可以将请求派给不同的小弟,这样处理的效率就会大幅提升,充分发挥集群的力量,至于哪个请求到底派给哪个小弟,这就是调度策略的问题了。

    好了,到现在大家应该都明白什么是负载均衡了,为了让大家印象更加深刻,大家可以看一下下面的图,便于理解记忆。

    关于负载均衡的详细介绍

    负载均衡

    二、实现负载均衡的三种方式

    1、HTTP重定向实现负载均衡

    请求过程:

    当用户向服务器发起请求时,请求首先被集群调度者(集群老大)截获;调度者根据某种分配策略,选择一台服务器(小弟),并将选中的服务器的IP地址封装在HTTP响应消息头部的Location字段中,并将响应消息的状态码设为302,最后将这个响应消息返回给浏览器。

    当浏览器收到响应消息后,解析Location字段,并向该URL发起请求,然后指定的服务器处理该用户的请求,最后将结果返回给用户。

    在使用HTTP重定向来实现服务器集群负载均衡的过程中,需要一台服务器作为请求调度者。用户的一项操作需要发起两次HTTP请求,一次向调度服务器发送请求,获取后端服务器的IP,第二次向后端服务器发送请求,获取处理结果。

    关于负载均衡的详细介绍

    HTTP重定向实现负载均衡

    优点:采用HTTP重定向来实现服务器集群的负载均衡实现起来较为容易,逻辑比较简单。

    缺点:在HTTP重定向方法中,调度服务器只在客户端第一次向网站发起请求的时候起作用。当调度服务器向浏览器返回响应信息后,客户端此后的操作都基于新的URL进行的(也就是后端服务器),此后浏览器就不会与调度服务器产生关系,进而会产生如下几个问题:

    • 由于不同用户的访问时间、访问页面深度有所不同,从而每个用户对各自的后端服务器所造成的压力也不同。而调度服务器在调度时,无法知道当前用户将会对服务器造成多大的压力,因此这种方式无法实现真正意义上的负载均衡,只不过是把请求次数平均分配给每台服务器罢了。
    • 若分配给该用户的后端服务器出现故障,并且如果页面被浏览器缓存,那么当用户再次访问网站时,请求都会发给出现故障的服务器,从而导致访问失败。

    2、DNS负载均衡

    首先我们要了解一下什么是DNS?

    DNS的全拼是Domain Name System,中文也叫做域名服务器,是负责将域名解析成IP地址的,例如将www.baidu.com这个域名解析成了115.239.211.112,我们访问www.baidu.com时其实访问的是115.239.211.112这台服务器。

    请求过程:

    当用户向我们的域名发起请求时,DNS服务器会自动地根据我们事先设定好的调度策略选一个合适的IP返回给用户,用户再向该IP发起请求。

    关于负载均衡的详细介绍

    DNS负载均衡

    优点:

    • DNS负载均衡最大的优点就是配置简单。服务器集群的调度工作完全由DNS服务器承担,那么我们就可以把精力放在后端服务器上,保证他们的稳定性与吞吐量。而且完全不用担心DNS服务器的性能,即便是使用了轮询策略,它的吞吐率依然卓越。
    • DNS负载均衡具有较强了扩展性,你完全可以为一个域名解析较多的IP,而且不用担心性能问题。

    缺点:

    • 由于把集群调度权交给了DNS服务器,从而我们没办法随心所欲地控制调度者,没办法定制调度策略。
    • DNS服务器也没办法了解每台服务器的负载情况,因此没办法实现真正意义上的负载均衡。它和HTTP重定向一样,只不过把所有请求平均分配给后端服务器罢了。
    • 当我们发现某一台后端服务器发生故障时,即使我们立即将该服务器从域名解析中去除,但由于DNS服务器会有缓存,该IP仍然会在DNS中保留一段时间,那么就会导致一部分用户无法正常访问网站(可以用动态 DNS来解决)。

    3、反向代理负载均衡

    请求过程:

    用户发来的请求都首先要经过反向代理服务器,服务器根据用户的请求要么直接将结果返回给用户,要么将请求交给后端服务器处理,再返回给用户。

    关于负载均衡的详细介绍

    反向代理负载均衡

    优点:

    • 隐藏后端服务器。与HTTP重定向相比,反向代理能够隐藏后端服务器,所有浏览器都不会与后端服务器直接交互,从而能够确保调度者的控制权,提升集群的整体性能。
    • 故障转移。与DNS负载均衡相比,反向代理能够更快速地移除故障结点。当监控程序发现某一后端服务器出现故障时,能够及时通知反向代理服务器,并立即将其删除。
    • 合理分配任务 。HTTP重定向和DNS负载均衡都无法实现真正意义上的负载均衡,也就是调度服务器无法根据后端服务器的实际负载情况分配任务。但反向代理服务器支持手动设定每台后端服务器的权重。我们可以根据服务器的配置设置不同的权重,权重的不同会导致被调度者选中的概率的不同。

    缺点:

    • 调度者压力过大 。由于所有的请求都先由反向代理服务器处理,那么当请求量超过调度服务器的最大负载时,调度服务器的吞吐率降低会直接降低集群的整体性能。
    • 制约扩展。当后端服务器也无法满足巨大的吞吐量时,就需要增加后端服务器的数量,可没办法无限量地增加,因为会受到调度服务器的最大吞吐量的制约。

    负载均衡的介绍到此结束,希望能够对大家有所帮助。

    展开全文
  • (三 Ribbon 什么是负载均衡?spring cloud如何实现负载均衡)手摸手带你一起搭建 Spring cloud 微服务 理论+实践+解析 配套例程资源
  • 大家好,我是IT修真院武汉分院第13期的学员石奥林,一枚正直纯洁善良的JAVA程序员今天给大家分享一下,修真院官网JAVA任务6,深度思考中的知识点——什么是负载均衡,为什么要做负载均衡?PPT链接:葵花宝典什么是...

    大家好,我是IT修真院武汉分院第13期的学员石奥林,一枚正直纯洁善良的JAVA程序员

    今天给大家分享一下,修真院官网JAVA任务6,深度思考中的知识点——什么是负载均衡,为什么要做负载均衡?

    PPT链接:葵花宝典


    什么是负载均衡以及为什么要做负载均衡?_腾讯视频


    1.背景介绍

    在网站创立初期,我们一般都使用单台机器对台提供集中式服务,但是随着业务量越来越大,无论是性能上还是稳定性上都有了更大的挑战。这时候我们就会想到通过扩容的方式来提供更好的服务。我们一般会把多台机器组成一个集群对外提供服务。然而,我们的网站对外提供的访问入口都是一个的,比如www.taobao.com。那么当用户在浏览器输入www.taobao.com的时候如何将用户的请求分发到集群中不同的机器上呢,这就是负载均衡在做的事情。

    针对以上情况的解决方案:

    (1) 服务器进行硬件升级:采用高性能服务器替换现有低性能服务器。 该方案的弊端:

    高成本:高性能服务器价格昂贵,需要高额成本投入,而原有低性能服务器被闲置,造成资 源浪费。

    可扩展性差:每一次业务量的提升,都将导致再一次硬件升级的高额成本投入,性能再卓越 的设备也无法满足当前业务量的发展趋势。

    无法完全解决现在网络中面临的问题:如单点故障问题,服务器资源不够用问题等。

    (2) 组建服务器集群,利用负载均衡技术在服务器集群间进行业务均衡。

    该方案的优势: 低成本

    可扩展性:当业务量增长时,系统可通过增加服务器来满足需求,且不影响已有业务,不降 低服务质量

    高可靠性:单台服务器故障时,由负载均衡设备将后续业务转向其他服务器,不影响后续业 务提供,保证业务不中断。

    2.知识剖析

    负载均衡原理

    系统的扩展可分为纵向(垂直)扩展和横向(水平)扩展。纵向扩展,是从单机的角度通过增加硬件处理能力,比如CPU处理能力,内存容量,磁盘等方面,实现服务器处理能力的提升,不能满足大型分布式系统(网站),大流量,高并发,海量数据的问题。因此需要采用横向扩展的方式,通过添加机器来满足大型网站服务的处理能力。比如:一台机器不能满足,则增加两台或者多台机器,共同承担访问压力。这就是典型的集群和负载均衡架构:如下图:

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

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

    应用集群:将同一应用部署到多台机器上,组成处理集群,接收负载均衡设备分发的请求,进行处理,并返回相应数据。

    负载均衡设备:将用户访问的请求,根据负载均衡算法,分发到集群中的一台处理服务器。(一种把网络请求分散到一个服务器集群中的可用服务器上去的设备)

    负载均衡的作用:

    1.解决并发压力,提高应用处理性能(增加吞吐量,加强网络处理能力);

    2.提供故障转移,实现高可用;

    3.通过添加或减少服务器数量,提供网站伸缩性(扩展性);

    4.安全防护;(负载均衡设备上做一些过滤,黑白名单等处理)

    负载均衡分类:

    根据实现技术不同,可分为DNS负载均衡,HTTP负载均衡,IP负载均衡,反向代理负载均衡、链路层负载均衡等。

    负载均衡算法:

    轮询、 随机、最少链接、Hash(源地址散列)、加权

    硬件负载均衡:

    采用硬件的方式实现负载均衡,一般是单独的负载均衡服务器,价格昂贵,一般土豪级公司可以考虑,业界领先的有两款,F5和A10。

    价格:F5, 15w~55w不等;A10, 55w-100w不等。

    优点:功能全面支持各层级的负载均衡,支持全面的负载均衡算法,支持全局负载均衡。一般软件负载均衡支持到5万级并发已经很困难了,硬件负载均衡可以支持。商用硬件负载均衡稳定性高,具备防火墙,防DDOS攻击等安全功能,提供售后支持。

    3.常见问题

    怎么配置负载均衡?

    4.解决方案

    1.部署至少两台服务器,我选择在本地部署一台jetty、一台tomcat。

    2.在nginx.conf配置文件中http括号内添加如下配置:

    upstream  local_tomcat {

    server    localhost:8088;

    server    localhost:8089;}

    server{

    location / {

    proxy_pass http://local_tomcat;}}

    3.在hosts文件中添加解析域名

    127.0.0.1     local_tomcat

    5.扩展思考

    什么是反向代理负载均衡?


    6.更多讨论



    反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器,该服务器就可称之为代理服务器。由于代理服务器处在最终处理请求访问的服务器之前,因此可以在代理服务器上做负载均衡。

    今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~

    ------------------------------------------------------------------------------------------------------------------------

    技能树.IT修真院

    “我们相信人人都可以成为一个工程师,现在开始,找个师兄,带你入门,掌控自己学习的节奏,学习的路上不再迷茫”。

    这里是技能树.IT修真院,成千上万的师兄在这里找到了自己的学习路线,学习透明化,成长可见化,师兄1对1免费指导。快来与我一起学习吧~


    展开全文
  • 一、 什么是负载均衡什么是负载均衡? 记得第一次接触 Nginx 是在实验室,那时候在服务器部署网站需要用 Nginx 。Nginx 是一个服务组件,用来反向代理、负载平衡和 HTTP 缓存等。那么这里的 负载均衡 是什么? ...

    一、 什么是负载均衡?

    什么是负载均衡?

    记得第一次接触 Nginx 是在实验室,那时候在服务器部署网站需要用 Nginx 。Nginx 是一个服务组件,用来反向代理、负载平衡和 HTTP 缓存等。那么这里的 负载均衡 是什么?

    负载均衡(LB,Load Balance),是一种技术解决方案。用来在多个资源(一般是服务器)中分配负载,达到最优化资源使用,避免过载。

     

     

    资源,相当于每个服务实例的执行操作单元,负载均衡就是将大量的数据处理操作分摊到多个操作单元进行执行,用来解决互联网分布式系统的大流量、高并发和高可用的问题。那什么是高可用呢?

    二、什么是高可用?

    首先了解什么是高可用?

    这是 CAP 定理是分布式系统的基础,也是分布式系统的 3 个指标:

    1. Consistency(一致性)

    2. Availability(可用性)

    3. Partition tolerance(分区容错性)

    那高可用(High Availability)是什么?高可用,简称 HA,是系统一种特征或者指标,通常是指,提供一定性能上的服务运行时间,高于平均正常时间段。反之,消除系统服务不可用的时间。

    衡量系统是否满足高可用,就是当一台或者多台服务器宕机的时候,系统整体和服务依然正常可用。

    举个例子,一些知名的网站保证 4 个 9 以上的可用性,也就是可用性超过 99.99%。那 0.01% 就是所谓故障时间的百分比。比如电商网站有赞,服务不可用会造成商家损失金钱和用户。那么在提高可用性基础上同时,对系统宕机和服务不可用会有补偿。

     

    比如下单服务,可以使用带有负载均衡的多个下单服务实例,代替单一的下单服务实例,即使用冗余的方式来提高可靠性。

    总而言之,负载均衡(Load Balance)是分布式系统架构设计中必须考虑的因素之一。一般通过负载均衡,冗余同一个服务实例的方式,解决分布式系统的大流量、高并发和高可用的问题。负载均衡核心关键:在于是否分配均匀。

    三、常见的负载均衡案例

     

    场景1:微服务架构中,网关路由到具体的服务实例 hello:

    • 两个相同的服务实例 hello service ,一个端口 8000 ,另一个端口 8082

    • 通过 Kong 的负载均衡 LB 功能,让请求均匀的分发到两个 hello 服务实例

    • Kong 的负载均衡策略算法很多:默认 weighted-round-robin 算法,还有 consumer: consumer id 作为 hash 算法输入值等

     

    场景2:微服务架构中,A 服务调用 B 服务的集群。通过了 Ribbon 客户端负载均衡组件:

    • 负载均衡策略算法并不高级,最简单的是随机选择和轮循

    四、互联网分布式系统解决方案

     

    常见的互联网分布式系统架构分为几层,一般如下:

    • 客户端层:比如用户浏览器、APP 端

    • 反向代理层:技术选型 Nignx 或者 F5 等

    • Web 层:前后端分离场景下, Web 端可以用 NodeJS 、 RN 、Vue

    • 业务服务层:用 Java 、Go,一般互联网公司,技术方案选型就是 SC 或者 Spring Boot + Dubbo 服务化

    • 数据存储层:DB 选型 MySQL ,Cache 选型 Redis ,搜索选型 ES 等

    一个请求从第 1 层到第 4 层,层层访问都需要负载均衡。即每个上游调用下游多个业务方的时候,需要均匀调用。这样整体系统来看,就比较负载均衡

    第 1 层:客户端层 -> 反向代理层 的负载均衡

    客户端层 -> 反向代理层的负载均衡如何实现呢?

    答案是:DNS 的轮询。 DNS 可以通过 A (Address,返回域名指向的 IP 地址)设置多个 IP 地址。比如这里访问 bysocket.com 的 DNS 配置了 ip1 和 ip2 。为了反向代理层的高可用,至少会有两条 A 记录。这样冗余的两个 ip 对应的 nginx 服务实例,防止单点故障。

    每次请求 bysocket.com 域名的时候,通过 DNS 轮询,返回对应的 ip 地址,每个 ip 对应的反向代理层的服务实例,也就是 nginx 的外网ip。这样可以做到每一个反向代理层实例得到的请求分配是均衡的。

    第 2 层:反向代理层 -> Web 层 的负载均衡

    反向代理层 -> Web 层 的负载均衡如何实现呢?

    是通过反向代理层的负载均衡模块处理。比如 nginx 有多种均衡方法:

    1. 请求轮询。请求按时间顺序,逐一分配到 web 层服务,然后周而复始。如果 web 层服务 down 掉,自动剔除

    upstream web-server {
    server ip3;
    server ip4;
    }

    ip 哈希。按照 ip 的哈希值,确定路由到对应的 web 层。只要是用户的 ip 是均匀的,那么请求到 Web 层也是均匀的。

    1. 还有个好处就是同一个 ip 的请求会分发到相同的 web 层服务。这样每个用户固定访问一个 web 层服务,可以解决 session 的问题。

    upstream web-server {
    ip_hash;
    server ip3;
    server ip4;
    }
    1. weight 权重 、 fair、url_hash 等

    第 3 层:Web 层 -> 业务服务层 的负载均衡

    Web 层 -> 业务服务层 的负载均衡如何实现呢?

    比如 Dubbo 是一个服务治理方案,包括服务注册、服务降级、访问控制、动态配置路由规则、权重调节、负载均衡。其中一个特性就是智能负载均衡:内置多种负载均衡策略,智能感知下游节点健康状况,显著减少调用延迟,提高系统吞吐量。

    为了避免避免单点故障和支持服务的横向扩容,一个服务通常会部署多个实例,即 Dubbo 集群部署。会将多个服务实例成为一个服务提供方,然后根据配置的随机负载均衡策略,在20个 Provider 中随机选择了一个来调用,假设随机到了第7个 Provider。LoadBalance 组件从提供者地址列表中,使用均衡策略,选择选一个提供者进行调用,如果调用失败,再选另一台调用。

    Dubbo内置了4种负载均衡策略:

    • RandomLoadBalance:随机负载均衡。随机的选择一个。是Dubbo的默认负载均衡策略。

    • RoundRobinLoadBalance:轮询负载均衡。轮询选择一个。

    • LeastActiveLoadBalance:最少活跃调用数,相同活跃数的随机。活跃数指调用前后计数差。使慢的 Provider 收到更少请求,因为越慢的 Provider 的调用前后计数差会越大。

    • ConsistentHashLoadBalance:一致性哈希负载均衡。相同参数的请求总是落在同一台机器上。

    同样,因为业务的需要,也可以实现自己的负载均衡策略

    第 4 层:业务服务层 -> 数据存储层 的负载均衡

    数据存储层的负载均衡,一般通过 DBProxy 实现。比如 MySQL 分库分表。

    当单库或者单表访问太大,数据量太大的情况下,需要进行垂直拆分和水平拆分两个维度。比如水平切分规则:

    • Range 、 时间

    • hash 取模,订单根据店铺ID 等

    但伴随着这块的负载会出现下面的问题,需要解决:

    • 分布式事务

    • 跨库 join 等

    现状分库分表的产品方案很多:当当 sharding-jdbc、阿里的 Cobar 等

    五、小结

    对外看来,负载均衡是一个系统或软件的整体。对内看来,层层上下游调用。只要存在调用,就需要考虑负载均衡这个因素。所以负载均衡(Load Balance)是分布式系统架构设计中必须考虑的因素之一。考虑主要是如何让下游接收到的请求是均匀分布的:

    • 第 1 层:客户端层 -> 反向代理层 的负载均衡。通过 DNS 轮询

    • 第 2 层:反向代理层 -> Web 层 的负载均衡。通过 Nginx 的负载均衡模块

    • 第 3 层:Web 层 -> 业务服务层 的负载均衡。通过服务治理框架的负载均衡模块

    • 第 4 层:业务服务层 -> 数据存储层 的负载均衡。通过数据的水平分布,数据均匀了,理论上请求也会均匀。比如通过买家ID分片类似

    •  

     

    展开全文
  • linux负载均衡(什么是负载均衡) 一、总结 一句话总结: 建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。 ...

    linux负载均衡(什么是负载均衡)

    一、总结

    一句话总结:

    建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。
    关键点一:大量任务:将大量的并发处理转发给后端多个节点处理,减少工作响应时间;
    关键点二:繁重任务:将单个繁重的工作转发给后端多个节点处理,处理完再返回给负载均衡中心,再返回给用户。

     

    1)负载均衡(Load Balance)建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。负载均衡有两方面的含义:首先,大量的并发访问或数据流量分担到多台节点设备上分别处理,减少用户等待响应的时间;其次,单个重负载的运算分担到多台节点设备上做并行处理,每个节点设备处理结束后,将结果汇总,返回给用户,系统处理能力得到大幅度提高。

    2)简单来说就是:其一是将大量的并发处理转发给后端多个节点处理,减少工作响应时间;其二是将单个繁重的工作转发给后端多个节点处理,处理完再返回给负载均衡中心,再返回给用户。目前负载均衡技术大多数是用于提高诸如在Web服务器、FTP服务器和其它关键任务服务器上的Internet服务器程序的可用性和可伸缩性。

     

    1、常见负载均衡分类?

    四层负载均衡(tcp):从第四层"传输层"开始, 使用【"ip+port"】接收请求,再转发到对应的机器。
    七层负载均衡(http):从第七层"应用层"开始, 根据【虚拟的url或IP】,主机名接收请求,再转向相应的处理服务器。

     

    2、实现四层负载均衡的软件有哪些?

    F5:硬件负载均衡器,功能很好,但是成本很高。
    lvs:重量级的四层负载软件
    nginx:轻量级的四层负载软件,带缓存功能,正则表达式较灵活
    haproxy:模拟四层转发,较灵活

     

    3、实现七层负载均衡的软件有哪些?

    haproxy:天生负载均衡技能,全面支持七层代理,会话保持,标记,路径转移;
    nginx:只在http协议和mail协议上功能比较好,性能与haproxy差不多;
    apache:功能较差
    Mysql proxy:功能尚可。

     

    4、总的来说,做负载均衡是哪些软件?

    一般是lvs做4层负载;
    一般是nginx做7层负载(也能做4层负载, 通过stream模块);
    一般是haproxy比较灵活,4层和7层负载均衡都能做

     

    5、四层和七层负载均衡之间的区别是什么?

    七层负载均衡更智能
    七层负载均衡更安全
    七层负载均衡更复杂
    四层负载均衡更高效

     

    4.1) 智能性
    七层负载均衡由于具备OIS七层的所有功能,所以在处理用户需求上能更加灵活,从理论上讲,七层模型能对用户的所有跟服务端的请求进行修改。例如对文件header添加信息,根据不同的文件类型进行分类转发。四层模型仅支持基于网络层的需求转发,不能修改用户请求的内容。

    4.2) 安全性
    七层负载均衡由于具有OSI模型的全部功能,能更容易抵御来自网络的攻击;四层模型从原理上讲,会直接将用户的请求转发给后端节点,无法直接抵御网络攻击。

    4.3) 复杂度
    四层模型一般比较简单的架构,容易管理,容易定位问题;七层模型架构比较复杂,通常也需要考虑结合四层模型的混用情况,出现问题定位比较复杂。

    4.4) 效率比
    四层模型基于更底层的设置,通常效率更高,但应用范围有限;七层模型需要更多的资源损耗,在理论上讲比四层模型有更强的功能,现在的实现更多是基于http应用。

     

    6、四层和七层负载均衡技术原理分别是什么?

    所谓四层负载均衡,:【目标地址和端口】:也就是主要通过报文中的【目标地址和端口】,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器。
    所谓七层负载均衡,:【应用层内容】:也称为“内容交换”,也就是主要通过报文中的真正有意义的【应用层内容】,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器。

     

     

    7、四层和七层负载均衡协议分别是什么?

    七层负载均衡基本都是基于http协议的,适用于web服务器的负载均衡。(nginx)
    四层负载均衡主要是基于tcp协议报文,可以做任何基于tcp/ip协议的软件的负载均衡。(haproxy、LVS)

     

    8、四层和七层负载均衡之间的区别的例子?

    四层负载均衡就像银行的自助排号机,每一个达到银行的客户根据排号机的顺序,选择对应的窗口接受服务;而七层负载均衡像银行大堂经理,先确认客户需要办理的业务,再安排排号。这样办理理财、存取款等业务的客户,会根据银行内部资源得到统一协调处理,加快客户业务办理流程。

     

    9、七层负载均衡的好处?

    更占CPU+性能不下降
    做出更明智的决策
    利用buffering来卸载上游服务器的慢速连接

     

    七层负载均衡比基于数据包的四层负载均衡更占CPU,但很少会导致服务器性能下降。七层负载均衡可以让负载均衡器做出更明智的决策,并可以对内容进行优化和更改,如压缩、加密等等。七层负载均衡还可以利用buffering来卸载上游服务器的慢速连接,从而提高性能。 

     

    10、七层负载均衡相比于四层负载均衡是不是一定好?

    不一定,要从 是否真的必要、是否真的可以提高安全性、是否有 方面思考够的灵活度 方面思考

     

    3.1) 是否真的必要。七层应用的确可以提高流量智能化,同时必不可免的带来设备配置复杂,负载均衡压力增高以及故障排查上的复杂性等问题。在设计系统时需要考虑四层七层同时应用的混杂情况。
    3.2) 是否真的可以提高安全性。例如SYN Flood攻击,七层模式的确将这些流量从服务器屏蔽,但负载均衡设备本身要有强大的抗DDoS能力,否则即使服务器正常而作为中枢调度的负载均衡设备故障也会导致整个应用的崩溃。
    3.3) 是否有足够的灵活度。七层应用的优势是可以让整个应用的流量智能化,但是负载均衡设备需要提供完善的七层功能,满足客户根据不同情况的基于应用的调度。最简单的一个考核就是能否取代后台Nginx或者Apache等服务器上的调度功能。能够提供一个七层应用开发接口的负载均衡设备,可以让客户根据需求任意设定功能,才真正有可能提供强大的灵活性和智能性。

     

    11、负载均衡策略的优劣及其实现的难易程度有两个关键因素是什么?

    负载均衡算法
    对网络系统状况的检测方式和能力

     

     

    二、linux负载均衡总结性说明(四层负载/七层负载)(转)

    转自:linux负载均衡总结性说明(四层负载/七层负载)
    https://www.cnblogs.com/kevingrace/p/6137881.html

     

    在常规运维工作中,经常会运用到负载均衡服务。负载均衡分为四层负载和七层负载,那么这两者之间有什么不同?
    废话不多说,详解如下:

    一.  什么是负载均衡
    1)负载均衡(Load Balance)建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。负载均衡有两方面的含义:首先,大量的并发访问或数据流量分担到多台节点设备上分别处理,减少用户等待响应的时间;其次,单个重负载的运算分担到多台节点设备上做并行处理,每个节点设备处理结束后,将结果汇总,返回给用户,系统处理能力得到大幅度提高。

    2)简单来说就是:其一是将大量的并发处理转发给后端多个节点处理,减少工作响应时间;其二是将单个繁重的工作转发给后端多个节点处理,处理完再返回给负载均衡中心,再返回给用户。目前负载均衡技术大多数是用于提高诸如在Web服务器、FTP服务器和其它关键任务服务器上的Internet服务器程序的可用性和可伸缩性。

    二. 负载均衡分类
    1)二层负载均衡(mac)
    根据OSI模型分的二层负载,一般是用虚拟mac地址方式,外部对虚拟MAC地址请求,负载均衡接收后分配后端实际的MAC地址响应.
    2)三层负载均衡(ip)
    一般采用虚拟IP地址方式,外部对虚拟的ip地址请求,负载均衡接收后分配后端实际的IP地址响应. (即一个ip对一个ip的转发, 端口全放开)
    3)四层负载均衡(tcp)
    在三次负载均衡的基础上,即从第四层"传输层"开始, 使用"ip+port"接收请求,再转发到对应的机器。
    4)七层负载均衡(http)
    从第七层"应用层"开始, 根据虚拟的url或IP,主机名接收请求,再转向相应的处理服务器。

    我们运维中最常见的四层和七层负载均衡,这里重点说下这两种负载均衡。
    1)四层的负载均衡就是基于IP+端口的负载均衡:在三层负载均衡的基础上,通过发布三层的IP地址(VIP),然后加四层的端口号,来决定哪些流量需要做负载均衡,对需要处理的流量进行NAT处理,转发至后台服务器,并记录下这个TCP或者UDP的流量是由哪台服务器处理的,后续这个连接的所有流量都同样转发到同一台服务器处理。
    对应的负载均衡器称为四层交换机(L4 switch),主要分析IP层及TCP/UDP层,实现四层负载均衡。此种负载均衡器不理解应用协议(如HTTP/FTP/MySQL等等)。

    实现四层负载均衡的软件有:
    F5:硬件负载均衡器,功能很好,但是成本很高。
    lvs:重量级的四层负载软件
    nginx:轻量级的四层负载软件,带缓存功能,正则表达式较灵活
    haproxy:模拟四层转发,较灵活

    2)七层的负载均衡就是基于虚拟的URL或主机IP的负载均衡:在四层负载均衡的基础上(没有四层是绝对不可能有七层的),再考虑应用层的特征,比如同一个Web服务器的负载均衡,除了根据VIP加80端口辨别是否需要处理的流量,还可根据七层的URL、浏览器类别、语言来决定是否要进行负载均衡。举个例子,如果你的Web服务器分成两组,一组是中文语言的,一组是英文语言的,那么七层负载均衡就可以当用户来访问你的域名时,自动辨别用户语言,然后选择对应的语言服务器组进行负载均衡处理。

    对应的负载均衡器称为七层交换机(L7 switch),除了支持四层负载均衡以外,还有分析应用层的信息,如HTTP协议URI或Cookie信息,实现七层负载均衡。此种负载均衡器能理解应用协议。
    实现七层负载均衡的软件有:
    haproxy:天生负载均衡技能,全面支持七层代理,会话保持,标记,路径转移;
    nginx:只在http协议和mail协议上功能比较好,性能与haproxy差不多;
    apache:功能较差
    Mysql proxy:功能尚可。

    总的来说,一般是lvs做4层负载;nginx做7层负载(也能做4层负载, 通过stream模块);haproxy比较灵活,4层和7层负载均衡都能做

    三. 四层和七层负载均衡之间的区别
    1) 从技术原理上分析
    所谓四层负载均衡,也就是主要通过报文中的目标地址和端口,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器。

    以常见的TCP为例,负载均衡设备在接收到第一个来自客户端的SYN 请求时,即通过上述方式选择一个最佳的服务器,并对报文中目标IP地址进行修改(改为后端服务器IP),直接转发给该服务器。TCP的连接建立,即三次握手是客户端和服务器直接建立的,负载均衡设备只是起到一个类似路由器的转发动作。在某些部署情况下,为保证服务器回包可以正确返回给负载均衡设备,在转发报文的同时可能还会对报文原来的源地址进行修改。

    所谓七层负载均衡,也称为“内容交换”,也就是主要通过报文中的真正有意义的应用层内容,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器。

    以常见的TCP为例,负载均衡设备如果要根据真正的应用层内容再选择服务器,只能先代理最终的服务器和客户端建立连接(三次握手)后,才可能接受到客户端发送的真正应用层内容的报文,然后再根据该报文中的特定字段,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器。负载均衡设备在这种情况下,更类似于一个代理服务器。负载均衡和前端的客户端以及后端的服务器会分别建立TCP连接。所以从这个技术原理上来看,七层负载均衡明显的对负载均衡设备的要求更高,处理七层的能力也必然会低于四层模式的部署方式。

    四层负载均衡在中间传输层执行,它处理消息的传递,但不考虑消息的内容。例如TCP是网络上Hypertext Transfer Protocol(HTTP)流量的第四层协议。在这一过程中,4层负载均衡会将网络数据包转发到上游服务器,但不会检查数据包的内容,只能通过检查TCP流中的前几个包来做出有限的路由决策。

    七层负载均衡不同于四层负载均衡,它在高级应用层上执行,会处理每个消息的实际内容。HTTP是网络上网站流量的主要7层协议。七层负载均衡以比四层负载均衡更复杂的方式路由网络流量,尤其适用于基于TCP的流量(如HTTP)。七层负载均衡会终止网络流量并读取器中消息,它可以根据消息内容(如URL或cookie)做出负载均衡决策。随后,七层负载均衡与选定上有服务器建立新的TCP连接并将请求写入服务器。

    简单来说,二者之间的区别
    七层负载均衡基本都是基于http协议的,适用于web服务器的负载均衡。(nginx)
    -  四层负载均衡主要是基于tcp协议报文,可以做任何基于tcp/ip协议的软件的负载均衡。(haproxy、LVS)
    两者主要区别在于利用的报文所在的层面是不同的,各有各的好处。
    七层应用负载的好处,是使得整个网络更”智能化“。例如访问一个网站的用户流量,可以通过七层的方式,将对图片类的请求转发到特定的图片服务器并可以使用缓存技术;将对文字类的请求可以转发到特定的文字服务器并可以使用压缩技术。当然这只是七层应用的一个小案例,从技术原理上,这种方式可以对客户端的请求和服务器的响应进行任意意义上的修改,极大的提升了应用系统在网络层的灵活性。很多在后台,例如Nginx或者Apache上部署的功能可以前移到负载均衡设备上,例如客户请求中的Header重写,服务器响应中的关键字过滤或者内容插入等功能。
    四层负载均衡主要是较为灵活,可以作为多种软件的负载均衡器。

    举个例子形象的说明:四层负载均衡就像银行的自助排号机,每一个达到银行的客户根据排号机的顺序,选择对应的窗口接受服务;而七层负载均衡像银行大堂经理,先确认客户需要办理的业务,再安排排号。这样办理理财、存取款等业务的客户,会根据银行内部资源得到统一协调处理,加快客户业务办理流程。

    七层负载均衡的好处
    七层负载均衡比基于数据包的四层负载均衡更占CPU,但很少会导致服务器性能下降。七层负载均衡可以让负载均衡器做出更明智的决策,并可以对内容进行优化和更改,如压缩、加密等等。七层负载均衡还可以利用buffering来卸载上游服务器的慢速连接,从而提高性能。

    执行七层负载平衡的组件通常被称为反向代理服务器。

    七层负载均衡示例
    举个简单的例子,假设用户访问高流量网站,在会话期间,它可能会请求静态内容(例如图像或视频)、动态内容(例如新闻订阅源)或者交易信息(例如订单状态)等等。7层负载平衡允许负载均衡器根据请求本身中的消息(如内容类型)来路由请求。也就是说,我们可以将对图像或视频的请求路由到存储它的服务器,并进行高度优化以提供多媒体内容;可以将诸如折扣价之类的交易信息请求路由到负责管理定价的应用服务器。借助7层负载平衡,网络和应用程序架构师可以创建高度优化的服务器基础架构或应用交付网络,在保障可靠性的同时进行有效扩展。

    简单总结
    从上面的对比看来四层负载与七层负载最大的区别就是效率与功能的区别。四层负载架构设计比较简单,无需解析具体的消息内容,在网络吞吐量及处理能力上会相对比较高,而七层负载均衡的优势则体现在功能多,控制灵活强大。在具体业务架构设计时,使用七层负载或者四层负载还得根据具体的情况综合考虑。

    负载均衡时的数据流都经过负载均衡器,如何解决负载均衡器成为瓶颈的问题?
    通过修改tcp报文的源地址和目的地址,使从web服务器中返回的数据直接返回到客户端,这是七层负载均衡无法做到的,因为tcp三次握手建立在客户端与负载均衡服务器之间,http协议基于tcp协议,建立好tcp链接后才传送http报文,收到http报文说明负载均衡器和客户端已经建立了tcp连接,而web服务器和客户端的tcp链接都没建立,怎么回传数据给客户端呢。以上的办法会出现问题:所有集群里的主机都是内网ip,无法跟外界联系。
    解决方案1:
    如果能买到那么多外网Ip地址来用,然后在tcp链接要建立时负载均衡给真正的web服务器,让客户端和服务器建立tcp链接
    解决方案2:
    引用一句话:计算机所有的问题都可以通过建立一层虚拟层解决。
    可以通过将所有服务器主机ip虚拟化成负载均衡服务器的ip,这样服务器集群的所有主机都可以访问外界网络,因为ip地址(网络层,三层)都是相同,所以只能通过第二层来分辨数据流向,修改数据链路层(二层)目的主机的MAC地址,使请求发到web服务器上,然后才真正建立起tcp连接,然后web服务器因为可以联网,所以可以直接返回数据给客户端

    2)从应用场景的需求上分析
    七层应用负载的好处,是使得整个网络更"智能化"。例如访问一个网站的用户流量,可以通过七层的方式,将对图片类的请求转发到特定的图片服务器并可以使用缓存技术;将对文字类的请求可以转发到特定的文字服务器并可以使用压缩技术。当然这只是七层应用的一个小案例,从技术原理上,这种方式可以对客户端的请求和服务器的响应进行任意意义上的修改,极大的提升了应用系统在网络层的灵活性。很多在后台,例如Nginx或者Apache上部署的功能可以前移到负载均衡设备上,例如客户请求中的Header重写,服务器响应中的关键字过滤或者内容插入等功能。

    另外一个常常被提到功能就是安全性。网络中最常见的SYN Flood攻击,即黑客控制众多源客户端,使用虚假IP地址对同一目标发送SYN攻击,通常这种攻击会大量发送SYN报文,耗尽服务器上的相关资源,以达到Denial of Service(DoS)的目的。从技术原理上也可以看出,四层模式下这些SYN攻击都会被转发到后端的服务器上;而七层模式下这些SYN攻击自然在负载均衡设备上就截止,不会影响后台服务器的正常运营。另外负载均衡设备可以在七层层面设定多种策略,过滤特定报文,例如SQL Injection等应用层面的特定攻击手段,从应用层面进一步提高系统整体安全。

    现在的七层负载均衡,主要还是着重于应用HTTP协议,所以其应用范围主要是众多的网站或者内部信息平台等基于B/S开发的系统。 4层负载均衡则对应其他TCP应用,例如基于C/S开发的ERP等系统。

    3)七层应用需要考虑的问题
    3.1) 是否真的必要。七层应用的确可以提高流量智能化,同时必不可免的带来设备配置复杂,负载均衡压力增高以及故障排查上的复杂性等问题。在设计系统时需要考虑四层七层同时应用的混杂情况。

    3.2) 是否真的可以提高安全性。例如SYN Flood攻击,七层模式的确将这些流量从服务器屏蔽,但负载均衡设备本身要有强大的抗DDoS能力,否则即使服务器正常而作为中枢调度的负载均衡设备故障也会导致整个应用的崩溃。

    3.3) 是否有足够的灵活度。七层应用的优势是可以让整个应用的流量智能化,但是负载均衡设备需要提供完善的七层功能,满足客户根据不同情况的基于应用的调度。最简单的一个考核就是能否取代后台Nginx或者Apache等服务器上的调度功能。能够提供一个七层应用开发接口的负载均衡设备,可以让客户根据需求任意设定功能,才真正有可能提供强大的灵活性和智能性。

    4)总体对比
    4.1) 智能性
    七层负载均衡由于具备OIS七层的所有功能,所以在处理用户需求上能更加灵活,从理论上讲,七层模型能对用户的所有跟服务端的请求进行修改。例如对文件header添加信息,根据不同的文件类型进行分类转发。四层模型仅支持基于网络层的需求转发,不能修改用户请求的内容。

    4.2) 安全性
    七层负载均衡由于具有OSI模型的全部功能,能更容易抵御来自网络的攻击;四层模型从原理上讲,会直接将用户的请求转发给后端节点,无法直接抵御网络攻击。

    4.3) 复杂度
    四层模型一般比较简单的架构,容易管理,容易定位问题;七层模型架构比较复杂,通常也需要考虑结合四层模型的混用情况,出现问题定位比较复杂。

    4.4) 效率比
    四层模型基于更底层的设置,通常效率更高,但应用范围有限;七层模型需要更多的资源损耗,在理论上讲比四层模型有更强的功能,现在的实现更多是基于http应用。

    四、负载均衡技术方案说明

    1)软/硬件负载均衡
    软件负载均衡解决方案是指在一台或多台服务器相应的操作系统上安装一个或多个附加软件来实现负载均衡,如DNS Load Balance,CheckPoint Firewall-1 ConnectControl,Keepalive+ipvs等,它的优点是基于特定环境,配置简单,使用灵活,成本低廉,可以满足一般的负载均衡需求。软件解决方案缺点也较多,因为每台服务器上安装额外的软件运行会消耗系统不定量的资源,越是功能强大的模块,消耗得越多,所以当连接请求特别大的时候,软件本身会成为服务器工作成败的一个关键;软件可扩展性并不是很好,受到操作系统的限制;由于操作系统本身的Bug,往往会引起安全问题。

    硬件负载均衡解决方案是直接在服务器和外部网络间安装负载均衡设备,这种设备通常是一个独立于系统的硬件,我们称之为负载均衡器。由于专门的设备完成专门的任务,独立于操作系统,整体性能得到大量提高,加上多样化的负载均衡策略,智能化的流量管理,可达到最佳的负载均衡需求。负载均衡器有多种多样的形式,除了作为独立意义上的负载均衡器外,有些负载均衡器集成在交换设备中,置于服务器与Internet链接之间,有些则以两块网络适配器将这一功能集成到PC中,一块连接到Internet上,一块连接到后端服务器群的内部网络上。

    软件负载均衡与硬件负载均衡的对比:
    软件负载均衡的优点是需求环境明确,配置简单,操作灵活,成本低廉,效率不高,能满足普通的企业需求;缺点是依赖于系统,增加资源开销;软件的优劣决定环境的性能;系统的安全,软件的稳定性均会影响到整个环境的安全。
    硬件负载均衡优点是独立于系统,整体性能大量提升,在功能、性能上优于软件方式;智能的流量管理,多种策略可选,能达到最佳的负载均衡效果;缺点是价格昂贵。

    2)本地/全局负载均衡
    负载均衡从其应用的地理结构上分为本地负载均衡(Local Load Balance)和全局负载均衡(Global Load Balance,也叫地域负载均衡),本地负载均衡是指对本地的服务器群做负载均衡,全局负载均衡是指对分别放置在不同的地理位置、有不同网络结构的服务器群间作负载均衡。

    本地负载均衡能有效地解决数据流量过大、网络负荷过重的问题,并且不需花费昂贵开支购置性能卓越的服务器,充分利用现有设备,避免服务器单点故障造成数据流量的损失。其有灵活多样的均衡策略把数据流量合理地分配给服务器群内的服务器共同负担。即使是再给现有服务器扩充升级,也只是简单地增加一个新的服务器到服务群中,而不需改变现有网络结构、停止现有的服务。

    全局负载均衡主要用于在一个多区域拥有自己服务器的站点,为了使全球用户只以一个IP地址或域名就能访问到离自己最近的服务器,从而获得最快的访问速度,也可用于子公司分散站点分布广的大公司通过Intranet(企业内部互联网)来达到资源统一合理分配的目的。

    3)网络层次上的负载均衡
    针对网络上负载过重的不同瓶颈所在,从网络的不同层次入手,我们可以采用相应的负载均衡技术来解决现有问题。
    随着带宽增加,数据流量不断增大,网络核心部分的数据接口将面临瓶颈问题,原有的单一线路将很难满足需求,而且线路的升级又过于昂贵甚至难以实现,这时就可以考虑采用链路聚合(Trunking)技术。
    链路聚合技术(第二层负载均衡)将多条物理链路当作一条单一的聚合逻辑链路使用,网络数据流量由聚合逻辑链路中所有物理链路共同承担,由此在逻辑上增大了链路的容量,使其能满足带宽增加的需求。
    现代负载均衡技术通常操作于网络的第四层或第七层。第四层负载均衡将一个Internet上合法注册的IP地址映射为多个内部服务器的IP地址,对每次 TCP连接请求动态使用其中一个内部IP地址,达到负载均衡的目的。在第四层交换机中,此种均衡技术得到广泛的应用,一个目标地址是服务器群VIP(虚拟 IP,Virtual IP address)连接请求的数据包流经交换机,交换机根据源端和目的IP地址、TCP或UDP端口号和一定的负载均衡策略,在服务器IP和VIP间进行映射,选取服务器群中最好的服务器来处理连接请求。

    七层负载均衡控制应用层服务的内容,提供了一种对访问流量的高层控制方式,适合对HTTP服务器群的应用。第七层负载均衡技术通过检查流经的HTTP报头,根据报头内的信息来执行负载均衡任务。

    七层负载均衡优点表现在如下几个方面:
    1)通过对HTTP报头的检查,可以检测出HTTP400、500和600系列的错误信息,因而能透明地将连接请求重新定向到另一台服务器,避免应用层故障。
    2)可根据流经的数据类型(如判断数据包是图像文件、压缩文件或多媒体文件格式等),把数据流量引向相应内容的服务器来处理,增加系统性能。
    3)能根据连接请求的类型,如是普通文本、图象等静态文档请求,还是asp、cgi等的动态文档请求,把相应的请求引向相应的服务器来处理,提高系统的性能及安全性。

    七层负载均衡缺点表现在如下几个方面:
    1)七层负载均衡受到其所支持的协议限制(一般只有HTTP),这样就限制了它应用的广泛性。
    2)七层负载均衡检查HTTP报头会占用大量的系统资源,势必会影响到系统的性能,在大量连接请求的情况下,负载均衡设备自身容易成为网络整体性能的瓶颈。

    五、负载均衡策略
    在实际应用中,我们可能不想仅仅是把客户端的服务请求平均地分配给内部服务器,而不管服务器是否宕机。而是想使Pentium III服务器比Pentium II能接受更多的服务请求,一台处理服务请求较少的服务器能分配到更多的服务请求,出现故障的服务器将不再接受服务请求直至故障恢复等等。选择合适的负载均衡策略,使多个设备能很好的共同完成任务,消除或避免现有网络负载分布不均、数据流量拥挤反应时间长的瓶颈。在各负载均衡方式中,针对不同的应用需求,在OSI参考模型的第二、三、四、七层的负载均衡都有相应的负载均衡策略。

    负载均衡策略的优劣及其实现的难易程度有两个关键因素:负载均衡算法;对网络系统状况的检测方式和能力。
    负载均衡算法
    1)轮循均衡(Round Robin):每一次来自网络的请求轮流分配给内部中的服务器,从1至N然后重新开始。此种均衡算法适合于服务器组中的所有服务器都有相同的软硬件配置并且平均服务请求相对均衡的情况。
    2)权重轮循均衡(Weighted Round Robin):根据服务器的不同处理能力,给每个服务器分配不同的权值,使其能够接受相应权值数的服务请求。例如:服务器A的权值被设计成1,B的权值是 3,C的权值是6,则服务器A、B、C将分别接受到10%、30%、60%的服务请求。此种均衡算法能确保高性能的服务器得到更多的使用率,避免低性能的服务器负载过重。
    3)随机均衡(Random):把来自网络的请求随机分配给内部中的多个服务器。
    4)权重随机均衡(Weighted Random):此种均衡算法类似于权重轮循算法,不过在处理请求分担时是个随机选择的过程。
    5)响应速度均衡(Response Time):负载均衡设备对内部各服务器发出一个探测请求(例如Ping),然后根据内部中各服务器对探测请求的最快响应时间来决定哪一台服务器来响应客户端的服务请求。此种均衡算法能较好的反映服务器的当前运行状态,但这最快响应时间仅仅指的是负载均衡设备与服务器间的最快响应时间,而不是客户端与服务器间的最快响应时间。
    6)最少连接数均衡(Least Connection):客户端的每一次请求服务在服务器停留的时间可能会有较大的差异,随着工作时间加长,如果采用简单的轮循或随机均衡算法,每一台服务器上的连接进程可能会产生极大的不同,并没有达到真正的负载均衡。最少连接数均衡算法对内部中需负载的每一台服务器都有一个数据记录,记录当前该服务器正在处理的连接数量,当有新的服务连接请求时,将把当前请求分配给连接数最少的服务器,使均衡更加符合实际情况,负载更加均衡。此种均衡算法适合长时处理的请求服务,如FTP。
    7)处理能力均衡:此种均衡算法将把服务请求分配给内部中处理负荷(根据服务器CPU型号、CPU数量、内存大小及当前连接数等换算而成)最轻的服务器,由于考虑到了内部服务器的处理能力及当前网络运行状况,所以此种均衡算法相对来说更加精确,尤其适合运用到第七层(应用层)负载均衡的情况下。
    8)DNS响应均衡(Flash DNS):在Internet上,无论是HTTP、FTP或是其它的服务请求,客户端一般都是通过域名解析来找到服务器确切的IP地址的。在此均衡算法下,分处在不同地理位置的负载均衡设备收到同一个客户端的域名解析请求,并在同一时间内把此域名解析成各自相对应服务器的IP地址(即与此负载均衡设备在同一位地理位置的服务器的IP地址)并返回给客户端,则客户端将以最先收到的域名解析IP地址来继续请求服务,而忽略其它的IP地址响应。在种均衡策略适合应用在全局负载均衡的情况下,对本地负载均衡是没有意义的。

     

    转载于:https://www.cnblogs.com/Renyi-Fan/p/10907547.html

    展开全文
  • 什么是负载均衡

    2020-06-04 18:11:58
    1.什么是负载均衡 Load balancing,即负载均衡,是一种计算机技术,用来在多个计算机(计算机集群)、网络连接、CPU、磁盘驱动器或其他资源中分配负载,以达到最优化资源使用、最大化吞吐率、最小化响应时间、同时...
  • 什么是负载均衡(SLB)

    万次阅读 2017-05-19 17:00:40
    什么是负载均衡(SLB)SLB(服务器负载均衡):在多个提供相同服务的服务器的情况下,负载均衡设备存在虚拟服务地址,当大量客户端从外部访问虚拟服务IP地址时,负载均衡设备将这些报文请求根据负载均衡算法,将流量...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 11,743
精华内容 4,697
关键字:

什么是负载均衡