负载均衡 订阅
负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。负载均衡(Load Balance)其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。 展开全文
负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。负载均衡(Load Balance)其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。
信息
外文名
Load Balancing
别    称
负载分担
释    义
将负载进行平衡
中文名
负载均衡
负载均衡概述
负载均衡,英文名称为Load Balance,其含义就是指将负载(工作任务)进行平衡、分摊到多个操作单元上进行运行,例如FTP服务器、Web服务器、企业核心应用服务器和其它主要任务服务器等,从而协同完成工作任务。负载均衡构建在原有网络结构之上,它提供了一种透明且廉价有效的方法扩展服务器和网络设备的带宽、加强网络数据处理能力、增加吞吐量、提高网络的可用性和灵活性。
收起全文
精华内容
参与话题
问答
  • 负载均衡

    万次阅读 多人点赞 2018-05-28 10:08:23
    流量负载均衡介绍1 负载均衡产生的背景LB(Load Balance,负载均衡)是一种集群技术,它将特定的业务(网络服务、网络流量等)分担给多台网络设备(包括服务器、防火墙等)或多条链路,从而提高了业务处理能力,保证...

    流量负载均衡介绍

    1 负载均衡产生的背景

    LB(Load Balance,负载均衡)是一种集群技术,它将特定的业务(网络服务、网络流量等)分担给多台网络设备(包括服务器、防火墙等)或多条链路,从而提高了业务处理能力,保证了业务的高可靠性。

    负载均衡技术具有一下优势:

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

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

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

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

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

    负载均衡技术分类:

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

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

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

    1.1 服务器负载均衡

    随着Internet的快速发展和业务量的不断提高,基于网络的数据访问流量迅速增长,特别是对数据中心、大型企业以及门户网站等的访问,其访问流量甚至达到了10Gb/s的级别;同时,服务器网站借助HTTP,FTP,SMTP等应用程序,为访问者提供了越来越丰富的内容和信息,服务器逐渐被数据淹没;另外,大部分网站(尤其电子商务等网站)都需要提供不间断24小时服务,任何服务中断或通信中的关键数据丢失都会造成直接的商业损失。这些都对应用服务提出了高性能和高可靠性的需求。

    但是,相对于网络技术的发展,服务器处理器速度和内存访问速度的增长却远远低于网络带宽和应用服务的增长,网络带宽增长的同时带来的用户数量的增长,也使得服务器资源消耗严重,因而服务器成为了网络瓶颈;传统的单机模式,也往往成为网络故障点。

    1.1.1 服务器负载均衡解决方案

    多台服务器通过网络设备相连组成一个服务器集群,每台服务器都提供相同或相似的网络服务。服务器集群前端部署一台负载均衡设备,负责根据已配置均衡策略将用户请求在服务器集群中的分发,为用户提供服务,并对服务器可用性的维护。

    该方案的优势:

    (1)低成本:按照业务量增加服务器个数即可;已有资源不会浪费,新增资源无需选择昂贵的高端设备。

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

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

    1.2 链路负载均衡

    就互联网接入来说,众所周知,由于国内的两大运营商---电信与网通之间的瓶颈问题,导致电信网通用户互访时出现延迟较,响应缓慢,更有甚者会直接导致用户正常的业务无法运行。而且单条链路存在单点故障的隐患,当互联网链路DOWD掉时,可能引起的直接问题就是用户所有依赖互联网的业务及对互联网的访问都会因此而无法使用,这对于一个用户来说是无法想象的。

    目前在互联网接入时存在的主要问题:

    (1)电信网通瓶颈问题

    (2)单条链路存在单点故障

    (3)主备链路需要人工切换

    1.2.1 链路负载均衡解决方案

    通过接入电信网通两条(或多条链路)来保障网络的连通性,持续性以及快速访问。并提供各链路间的智能备份,实现链路级别的快速高可用。

    1.2.1.1 outbound方向链路负载均衡(从内到外的链路负载均衡)

    通过电信、网通双链路的接入,并使用静态和动态相结合的多链路负载均衡功能,使内部用户无论是访问网通资源还是电信资源,都可以从相应的线路进行访问.解决了从内到外的电信网通的互访瓶颈。

    1.2.1.2 inbound方向链路负载均衡(从外到内的链路负载均衡)

    解决外部用户访问内部服务器时所遇到的不同ISP的互访瓶颈.当ISP A的用户访问内部的www.abc.com时把ISP A接口的地址解析给用户,使其通过ISP A线路来访问www.abc.com. 当ISP B用户来访问内部的www.abc.com时,再把ISP B接口的地址解析给用户,使其通过ISP B的线路来访问www.abc.com.

    1.2.1.3 多条链并行使用以及智能备份

    多链路负载均衡还提供了链路的自动探测及备份功能,当某条链路断掉时,自动将流量切换到正常链路上,同时对外提供的访问,也将只解析正常链路的地址,使访问人员通过当前正常的链路来访问内部的服务。从进出双向来保障链路的正常工作。

    1.3 网关负载均衡

    SSL-VPN网关,IPSec网关,防火墙网关等网关设备,因为业务处理的复杂性,往往成为网络瓶颈,以防火墙网关为例:防火墙作为网络部署的“警卫”,在网络中不可或缺,但其往往不得不面临这样的尴尬:网络防卫越严格,需要越仔细盘查过往的报文,从而导致转发性能越低,成为网络瓶颈。

    在这种情况,如果废弃现有设备去做大量的硬件升级,必将造成资源浪费,随着业务量的不断提升,设备也将频繁升级。频繁升级的高成本是相当可怕的。因此将网关设备等同于服务器,组建网关集群的方案应运而生:将多个网关设备并联到网络中,从而形成集群处理能力,提高网络处理能力。

    1.3.1 网关负载均衡解决方案

    防火墙负载均衡包括以下几个基本元素:

    (1)      集群:提供网络流量负载均衡的群体,包括LB、Fireall;

    (2)      LB:负责分发请求发起方的网络流量到多台Firewall设备,LB又分为一级和二级,如果请求发起方的流量方向为Host A-àHost B,则LB A为一级,LB B为二级;方向类似;

    (3)      Firewall:正常处理数据的防火墙。

    2 负载均衡调度算法

    负载均和产品中的关键技术是调度,目前常用的调度算法有

    轮询(Round Robin

     

    加权轮询(Weighted Round Robin

     

     

     

    最少连接(Least Connections

     

     

     

    加权最少连接(Weighted Least Connections

     

     

     

    随机(Random

     

     

     

    加权随机(Weighted Random

     

     

     

    源地址散列(Source Hashing

     

     

     

    源地址端口散列(Source&Port Hashing

     

     

    2.1 负载均衡算法介绍

    (1)轮询算法

    新的连接被依次轮询分发到各个实服务上,比如第一个连接分发到第一台服务器,第二个连接分发到第二台服务器上;

    轮询算法适用于服务器集群中所有服务器都有相同的软硬件配置,并且平均服务器请求相对均衡的情况;

     

    (2)加权轮询算法

     

    根据服务器不同的处理能力,给服务器分配不同的权值,使其能接受相应权值的服务器请求;

    加权轮询算法能确保高性能的服务器能得到更多的使用率,避免低性能的服务器过载过重;

     

    (3)最少连接数算法

     

    最少连接数算法对内部需要负载的每一台服务器上的连接数都一个记录,记录当前该服务器正在处理的连接数,当有新的服务连接请求时,把请求分发给连接数最少的服务器,使均衡更加符合实际情况,负载更具啊均衡;

    最少连接数算法适合长时间处理的请求,例如:FTP。

    加权最少连接数算法,即将加权与连接数配合使用,根据连接数与加权的比例计算出当前请求应该分发给哪个具体的服务器;

     

    (4)随机算法

    将新连接请求随机分发给各个服务器;

    加权随机算法,即将加权与随机算法配合使用,根据随机数与加权的比例计算出当前请求应该分发给哪个具体的服务器;

     

    (5)源地址散列

    根据新连接请求的源IP地址进行散列HASH的结果,决定将请求分发给具体的服务器;

    来在相同客户端的连接会被分发到相同的服务器上;

     

    2.2 持续性

    将多个连接持续重定向到同一个服务器的策略,就是持续性功能。根据持续性原则,建立会话表项,保证后续业务报文都送往同一个服务器处理。比如使用源地址建立持续性表项,保证持续性。

    u  基于源IP地址的持续性功能:

    负载均衡设备接收到某一客户端的某一业务的首次请求时,建立持续性表项,记录为该客户分配的服务器情况,在会话表项生存周期内,后续该业务报文都将发往该服务器处理。基于源IP地址持续性功能的特点是:实现简洁快速。

    u  Cookies保持

    Cookies持续性利用客户机存储的cookies信息来吧客户机连接到合适的服务器上,其原理如下:

    (1)      首次命中Http请求(不带cookes)进行LB,此时LB任选一台服务器,将请求转发至该服务器;

    (2)      来自该服务器的Http回复报文此时包括一个空白的cookies,LB重写cookies,并再粘贴一个特殊的cookies后将http报文发送回去;

    (3)      再次命中Http请求(带有与上面形相同的cookies)进入LB,LB设备借助cookies信息确定合适的服务器;

    3 服务器负载均衡技术介绍

    3.1 概念介绍

    u  虚服务:负载均衡设备对外提供的服务称为虚服务,虚服务由VPN实例,虚服务IP地址、服务协议、服务端口号唯一标识,配置负载均衡设备上,客户的访问请求通过公关网络或私有网络到达负载均衡设备时,匹配到虚服务后,由负载均衡设备按照既定的策略分发给实服务;

    u  实服务:实服务器是真实服务器提供一种服务,该服务含义比较广泛,可以是传统的FTP,HTTP等业务,也可以是广泛的转发服务,如防火墙网关负载均衡中,实服务只是报文的转发路径;

    u  实服务组:为了便于对实服务进行管理,将多个实服务的一些共有属性提取出来形成实服务组,一个虚服务对应一个实服务组,一个实服务组对应多个实服务,相同的实服务组不能属于不同的虚服务;

    3.2 服务器负载均衡工作机制

    服务器负载均衡有两种工作方式:

    u  NAT(Network Address Translation,网络地址转换)方式

    u  直接路由(DirectRouting,简称DR)方式

    (1)NAT方式

    NAT方式组网灵活,后端服务器可以位于不同的物理位置,不同的局域网内。

    1、实现原理

    客户端将到VSIP的请求发送给服务器群前端的负载均衡设备,负载均衡设备上的虚服务接收客户端请求,通过调度算法,选择真实服务器,再通过网络地址转换,用真实服务器地址重写请求报文的目标地址后,将请求发送给选定的真实服务器;真实服务器的响应报文通过负载均衡设备时,报文的源地址被还原为虚服务的VSIP,再返回给客户,完成整个负载调度过程。

    2、技术特点

    组网灵活,对服务器没有额外要求,不需要修改服务器配置,适用于各种组网。

    步骤

    说明

    源IP

    目的IP

    1

    Host发放请求报文

    Host-IP

    VIP

    2

    LB收到请求报文后,根据调度算法计算出请求报文分发给哪台服务器

    -

    -

    3

    LB使用DNAT技术分发报文

    Host-IP

    Server IP

    4

    Server接收并处理请求,返回相应报文

    Server IP

    Host-IP

    5

    LB接收相应报文,转换源IP后转发

    VIP

    Host-IP

     

    (2)DR方式

    相对于NAT 组网方式,DR 组网方式,只有客户端的请求报文通过LB,服务器的响应报文不经过LB,从而减少了LB的负载,有效的避免了LB成为网络瓶颈。

    1、实现原理

    DR方式的服务器负载均衡时,除了LB设备上配置了VSIP,真实服务器也都配置了VSIP址,配置的VSIP要求不能响应ARP请求,例如在环回接口上配置VSIP。发送给VSIP的报文,由LB分发给相应的真实服务器,从真实服务器返回给客户端的报文直接通过交换机返回。

    2、技术特点

    只有单边报文经过负载均衡设备,负载均衡设备负担小,不易成为瓶颈,转发性能更强。

    步骤

    说明

    源IP

    目的IP

    1

    Host发放请求报文

    Host-IP

    VIP

    2

    General device收到请求后转发给LB,Server上的VIP不能发送和相应ARP报文,因此General device只能将报文转发给LB

    Host-IP

    VIP

    3

    LB使用调度算法决定将报文分发给哪台服务器,在封装报文时目的IP为VIP,目的MAC为Server的目的MAC(根据ARP请求Server IP获取)

    -

    -

    4

    LB转发报文给Server服务器

    Host-IP

    VIP

    MAC=Server-MAC

    5

    Server接收并处理请求,返回相应报文给General device

    VIP

    Host-IP

    6

    General device收到报文后,直接转发给Host

    VIP

    Host-IP

    3.3 服务器状态检查

    所谓状态检查就是指负载均衡设备定期对真实服务器运行状态进行探测,收集相应信息,及时隔离工作异常的服务器。健康检查的结果除标识服务器能否正常工作外,还可以统计出服务器影响时间,作为选择服务器的依据。负载均衡技术支持丰富的健康状态检查算法,可以有效地探测和检查服务器的运行状态。

    ICMP:向服务器发送ICMPEcho报文,若收到ICMP Reply,则服务器正常;

    TCP:向服务器的某端口建立TCP连接,若成功,则服务器正常;

    HTTP:和服务器的80端口建立TCP连接,然后发出HTTP请求,若所收到的HTTP应答内容争取,则服务器正常;

    FTP:和服务器21端口建立连接,然后获取一个服务器相关目录放置的文件,若所收到的文件内容正确,则服务器正常;

     

    4 链路负载技术介绍

    链路负载均衡根据业务流量方向可以分为outbound链路负载均衡和inbound链路负载均衡两种情况。

    4.1 outbound链路负载均衡

    内网用户和外网之间存在多条链路时,通过outbound链路负载均衡可以实现在多条链路上分担内网用户访问外网服务器的流量。

    1、  实现原理

    Outbound链路负载均衡中VSIP为内网用户发送报文的目的IP,用户将访问VSIP的报文发送到负载均衡设备上后,负载均衡设备依次根据持续性、ACL策略、就近性、调度算法选择最佳的物理链路,并将内网流量分发到该链路上。

    2、  技术特点

    可以和NAT应用网关共同组网,不同的链路使用不同的源地址,从而保证往返报文穿过同一条链路;

    通过健康性检查,可以检查链路内任意节点的连通性,从而有效保证整条链路上的可达性;

    通过调度算法,在多条链路间均衡流量,并支持按照带宽进行负载均衡;

    利用就近性算法动态计算链路的质量,将流量分发到当前最优链路上。

    步骤

    说明

    1

    LB设备接收到内网流量

    2

    LB设备依据就近性,ACL策略,持续性,调度算法选择链路

    3

    LB设备将流量分发到选择出的链路上

    4

    LB接收外网用户流量

    5

    LB将外网用户流量转发给设备

    4.2 inbound链路负载均衡

    内网和外网之间存在多条链路时,通过inbound链路负载均衡可以实现在多条链路上分担外网用户访问内网服务器的流量。

    1、  实现原理

    Inbound链路负载均衡中,负载均衡设备作为权威服务器记录域名与内网服务器IP地址的映射关系,一个域名可以映射多个IP地址,其中每个IP地址对应一条物理链路;

    外网用户通过域名方式访问内网服务器时 ,本地DNS服务器将域名解析请求发送给权威名称服务器——负载均衡设备,负载均衡设备依据持续性、ACL策略、就近性等算法选择最大的链路,并将通过该链路与外网接口的IP地址作为DNS解析结果反馈给外网用户,外网用户通过该链路访问内网服务器。

    2、  技术特点

    可以和服务器负载均衡配置使用,实现外网用户访问内网服务器的流量在多条链路间均衡的同时,也实现了流量在多台服务器间均衡;

    通过健康检查,可以检查链路内任意节点的连通性,从而有效保证整条链路的可达性;

    利用就近性算法动态计算链路的质量,保证转发流量的链路时当前最佳的链路。

    步骤

    说明

    1

    外网用户通过域名访问内网服务器时,首先要进行DNS解析,向本地DNS服务器发送DNS解析请求

    本地DNS服务器将DNS请求转发给权威的名称服务器——LB

    2

    LB设备根据请求的域名,持续性,ACL策略,就近性等算法选择最用的物理链路,并将给物理链路与外网连接的接口IP地址作为域名解析结果

    3

    LB设备将解析结果返回给本地DNS

    4

    本地DNS将结果返回给Host

    5

    用户使用返回的结果对内网发起访问

    5 网关负载均衡

    LB Device负载分发请求发起方的网络流量到多个网关设备,LB又分为一级和二级,如果请求发起方的网络流量为Host A->Host B,则LB Device A为一级,LB Device B为二级;

    网络设备:正常处理数据的网络设备;

    1、  实现原理

    防火墙是基于会话开展业务的,即一个会话的请求和应答报文必须通过同一个防火墙,为了保证防火墙业务正常进行,内部组网不受影响,需要采用双侧防火墙,即防火墙三明治。在这种组网环境中,对于流入流量一级LB设备做防火墙负载均衡,二级LB设备保证从哪个防火墙进来的流量,还要从哪个防火墙返回;流出链路正好相反。

    2、  技术特点

    服务对象为防火墙,提高防火墙组网灵活性。没有特殊要求,适用于任何组网环境。

    步骤

    说明

    1

    LB A接收网络流量

    2

    LB A根据调度算法将流量转发给某台Firewall

    3

    Firewall将流量转发给LB B

    4

    LB B记录转发流量的防火墙,并把流量转发到目的地

    5

    LB B接收来自目的地的回应流量

    6

    LB B根据记录将流量转发给相应的防火墙

    7

    Firewall将流量转发给LB A,LB A将流量转发回源地址

    防火墙负载均衡也可以服务器负载均衡配置使用:

    Cluster A为防火墙负载均衡的集权,ClusterB为服务器的负载均衡集群,综合组网的工作流程就是防火墙和服务器负载均衡的叠加,这种组网方式避免了防火墙称为网络中的瓶颈,也提高了网络服务的性能和可用性。

    6 智能选路

    智能选路系统——不仅仅是一项功能

    智能选路系统——是一系列功能组成的解决方案

    6.1 关键用户走某条优质链路——默认路由+策略路由

    选路原理

    关键用户走某条优质链路

    普通用户按照流量在出口设备被均衡分配

    优势

    实现简单,业内路由器均可支持

    缺点

    优质链路跑满,关键用户业务受影响

    存在跨运营商现象,影响用户上网体验

     

    6.2 从运营商下载IP列表——静态路由+默认路由

    选路原理

    从运营商下载ISP的IP地址列表

    通过静态路由的方式静态选路,访问电信的走电信,访问联调的走联调

    其余流量走大带宽链路(默认路由)

    优势

    解决了跨运营商问题,

    选择正确的IPS链路,保证用户体验

    实现简单,业内标准路由器都可以支持

    缺点

    1、ISP列表变化频繁,第一次实施后不易更新和维护

    2、若链路跑满,路由策略无法自动变更,例如:

    (a)电信链路跑满,联调链路空闲,若用户命中电信地址,仍然会选择电信链路,从而造成丢包

    (b)电信链路空闲,默认路由链路跑满,后续命中默认路由的数据仍会现则满载链路,造成丢包

    6.3 智能选路

    链路健康监测优先级最高,若链路失效,则链路上所有路由策略都会失效

    策略路由高于过载保护,即使某条链路负载已经超过设定的保护阀值,通过策略路由仍可使用该链路

    若应用路由、静态路由、地址库路由、默认路由中,存在等价路由,则可以通过MLLB进行负载

     

    6.4 链路过载保护

    链路负载超过设置的阈值,后续流量切换到其他链路

    切换的前提是NPE自动探测到链路到目的IP地址可到

    策略路由不受过载保护的影响

    6.5 应用路由

    首包识别数据流的应用,根据应用做选路,传统应用路由的难点:

    u  基于应用的路由,首先要把应用识别出来;

    u  目前应用的识别无外乎DPI,DFI等;

    u  DPI识别是通过7层特征识别,需要等待流的连接建立完成,7层协议开始传出后才能识别出来,简单的说,DPI的是被落后与连接的建立,当DPI识别出该应用的时候,连接已经建立起来,这时如果再做选路,必须首先要断掉之前建立的流连接;

    6.5.1 大流量协议识别

    技术点

    协议识别:

    大容量传输的应用通常有控制流量和传输流量,比如:FTP,迅雷,BT,电驴,QVOD等

    原理

    控制流量不做应用路由

    识别传输流量做应用路由

     

    6.5.2 DNS识别

    技术点

    特定网站,只需要截获DNS报文,就可以知道其类型。

    如:优酷、土豆、奇艺、新浪视频等

    原理

    监测DNS报文,发现URL请求是特定网站,记录DNS回应报文(即该网站的IP)进行路由,影响IP流量通过设备时会被路由到特定的链路上;

    若门户网站包含视频,则只监控视频类。如新浪,只监控video.sina.com.cn

     

    6.5.3 主动控制


    技术点

    P2P协议,如果断流,双方会发起重传机制

    原理

    对于P2P,在初期通过DPI、DFI识别后,主动将其切断;

    通过NPE记录的流信息,根据应用路由重传请求;

    用户端不会有任何感知;

     

    6.5.4 地址库

    技术点

    某些应用的目的IP固定,且流量大,如网盘、移动终端应用下载等

    原理

    人工收集此类应用的目的IP

     

    6.6 DNS代理

    u  DNS代理不属于路由体系,但能影响选路结果;所有的路由体系的选路都是目的IP通过DNS确认后,才开始工作的;而DNS代理是帮助用户获得更合理IP的技术,所以其生效是在路由体系之前;

    u  适用范围:目标URL拥有多个ISP的服务器(一般大型网站都如此);

    u  用户价值:在链路负载过高时,提升用户体验,合理分配目的IP所属运营商,结合地址库,使链路利用更均衡。(如,不开此功能,用户DHCP分配电信DNS,则10个网站解析出9个电信+1个联通,电信链路压力大;开启该功能后,解析出5个电信+5个联通,减小电信链路压力);

    6.6.1 DNS代理实现原理

     

    原理

    u  设备上开启DNS代理功能;

    u  配置电信和联调的DNS服务器;

    u  当有DNS请求到达设备时,设备会根据链路负载情况决定向电信DNS服务器或联调DNS服务器发送DNS请求报文;

    u  DNS回应报文到达设备后,设备透传给Host

     

    6.7 智能选路实现效果

    展开全文
  • nginx反向代理--负载均衡

    万次阅读 多人点赞 2018-10-19 17:39:37
    Nginx配置详解 nginx概述 ...同时也是一个IMAP、POP3、SMTP代理服务器;nginx可以作为一个HTTP服务器进行网站的发布处理,另外nginx可以作为反向代理... 负载均衡 nginx特点 1. 反向代理 关于代理 说到代理,首先...

    Nginx配置详解

    nginx概述

    nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器;同时也是一个IMAP、POP3、SMTP代理服务器;nginx可以作为一个HTTP服务器进行网站的发布处理,另外nginx可以作为反向代理进行负载均衡的实现。

    这里主要通过三个方面简单介绍nginx

    • 反向代理
    • 负载均衡
    • nginx特点

    1. 反向代理

    关于代理

    说到代理,首先我们要明确一个概念,所谓代理就是一个代表、一个渠道;

    此时就设计到两个角色,一个是被代理角色,一个是目标角色,被代理角色通过这个代理访问目标角色完成一些任务的过程称为代理操作过程;如同生活中的专卖店~客人到adidas专卖店买了一双鞋,这个专卖店就是代理,被代理角色就是adidas厂家,目标角色就是用户

     


    正向代理

    说反向代理之前,我们先看看正向代理,正向代理也是大家最常接触的到的代理模式,我们会从两个方面来说关于正向代理的处理模式,分别从软件方面和生活方面来解释一下什么叫正向代理

    正向代理最大的特点是客户端非常明确要访问的服务器地址;服务器只清楚请求来自哪个代理服务器,而不清楚来自哪个具体的客户端;正向代理模式屏蔽或者隐藏了真实客户端信息。

    举例图片审核不过 大家自行理解吧


    反向代理

     

    明白了什么是正向代理,我们继续看关于反向代理的处理方式,举例如我大天朝的某宝网站,每天同时连接到网站的访问人数已经爆表,单个服务器远远不能满足人民日益增长的购买欲望了,此时就出现了一个大家耳熟能详的名词:分布式部署;也就是通过部署多台服务器来解决访问人数限制的问题;某宝网站中大部分功能也是直接使用nginx进行反向代理实现的,并且通过封装nginx和其他的组件之后起了个高大上的名字:Tengine,有兴趣的童鞋可以访问Tengine的官网查看具体的信息:http://tengine.taobao.org/
    那么反向代理具体是通过什么样的方式实现的分布式的集群操作呢,我们先看一个示意图:

     

    通过上述的图解大家就可以看清楚了,多个客户端给服务器发送的请求,nginx服务器接收到之后,按照一定的规则分发给了后端的业务处理服务器进行处理了。此时~请求的来源也就是客户端是明确的,但是请求具体由哪台服务器处理的并不明确了,nginx扮演的就是一个反向代理角色

    反向代理,主要用于服务器集群分布式部署的情况下,反向代理隐藏了服务器的信息!

    项目场景

    通常情况下,我们在实际项目操作时,正向代理和反向代理很有可能会存在在一个应用场景中,正向代理代理客户端的请求去访问目标服务器,目标服务器是一个反向单利服务器,反向代理了多台真实的业务处理服务器。具体的拓扑图如下:

    2. 负载均衡

    我们已经明确了所谓代理服务器的概念,那么接下来,nginx扮演了反向代理服务器的角色,它是以依据什么样的规则进行请求分发的呢?不用的项目应用场景,分发的规则是否可以控制呢?

    这里提到的客户端发送的、nginx反向代理服务器接收到的请求数量,就是我们说的负载量

    请求数量按照一定的规则进行分发到不同的服务器处理的规则,就是一种均衡规则

    所以~将服务器接收到的请求按照规则分发的过程,称为负载均衡。

    负载均衡在实际项目操作过程中,有硬件负载均衡和软件负载均衡两种,硬件负载均衡也称为硬负载,如F5负载均衡,相对造价昂贵成本较高,但是数据的稳定性安全性等等有非常好的保障,如中国移动中国联通这样的公司才会选择硬负载进行操作;更多的公司考虑到成本原因,会选择使用软件负载均衡,软件负载均衡是利用现有的技术结合主机硬件实现的一种消息队列分发机制

     

    nginx支持的负载均衡调度算法方式如下:

    1. weight轮询(默认):接收到的请求按照顺序逐一分配到不同的后端服务器,即使在使用过程中,某一台后端服务器宕机,nginx会自动将该服务器剔除出队列,请求受理情况不会受到任何影响。 这种方式下,可以给不同的后端服务器设置一个权重值(weight),用于调整不同的服务器上请求的分配率;权重数据越大,被分配到请求的几率越大;该权重值,主要是针对实际工作环境中不同的后端服务器硬件配置进行调整的。

    2. ip_hash:每个请求按照发起客户端的ip的hash结果进行匹配,这样的算法下一个固定ip地址的客户端总会访问到同一个后端服务器,这也在一定程度上解决了集群部署环境下session共享的问题。

    3. fair:智能调整调度算法,动态的根据后端服务器的请求处理到响应的时间进行均衡分配,响应时间短处理效率高的服务器分配到请求的概率高,响应时间长处理效率低的服务器分配到的请求少;结合了前两者的优点的一种调度算法。但是需要注意的是nginx默认不支持fair算法,如果要使用这种调度算法,请安装upstream_fair模块

    4. url_hash:按照访问的url的hash结果分配请求,每个请求的url会指向后端固定的某个服务器,可以在nginx作为静态服务器的情况下提高缓存效率。同样要注意nginx默认不支持这种调度算法,要使用的话需要安装nginx的hash软件包

    Nginx安装

    1. windows安装

    官方网站下载地址:

    https://nginx.org/en/download.html
    

     

     

    如下图所示,下载对应的版本的nginx压缩包,解压到自己电脑上存放软件的文件夹中即可

     

    解压完成后,文件目录结构如下:

     

     

    启动nginx

    1) 直接双击该目录下的nginx.exe,即可启动nginx服务器

    2) 命令行计入该文件夹,执行nginx命令,也会直接启动nginx服务器

    D:/resp_application/nginx-1.13.5> nginx

     

    访问nginx

    打开浏览器,输入地址:http://localhost,访问页面,出现如下页面表示访问成功

     

    停止nginx

    命令行进入nginx根目录,执行如下命令,停止服务器:

    # 强制停止nginx服务器,如果有未处理的数据,丢弃
    D:/resp_application/nginx-1.13.5> nginx -s stop
    
    # 优雅的停止nginx服务器,如果有未处理的数据,等待处理完成之后停止
    D:/resp_application/nginx-1.13.5> nginx -s quit

     

    2. ubuntu安装

    按照正常软件的安装方式,直接通过如下命令进行安装:

    $ sudo apt-get install nginx

    安装完成即可,在/usr/sbin/目录下是nginx命令所在目录,在/etc/nginx/目录下是nginx所有的配置文件,用于配置nginx服务器以及负载均衡等信息

     

    查看nginx进程是否启动

    $ ps -ef|grep nginx

    nginx会自动根据当前主机的CPU的内核数目创建对应的进程数量(当前ubuntu主机是2核4线程配置)

    备注:这里启动的服务进程其实是4个进程,因为nginx进程在启动的时候,会附带一个守护进程,用于保护正式进程不被异常终止;如果守护进程一旦返现nginx继承被终止了,会自动重启该进程。

    守护进程一般会称为master进程,业务进程被称为worker进程

     

    启动nginx服务器命令

    直接执行nginx会按照默认的配置文件进行服务器的启动

    $ nginx

     

    停止nginx服务命令

    和windows系统执行过程一样,两种停止方式

    $ nginx -s stop
    or
    $ nginx -s quit

     

    重新启动加载

    同样也可以使用命令reopen和reload来重新启动nginx或者重新加载配合着文件。

     

    3. mac os安装

    直接通过brew进行nginx的安装,或者下载tar.gz压缩包都是可以的。

    直接通过brew进行安装

    brew install nginx

    安装完成后,后续的命令操作,服务器的启动、进程查看、服务器的停止、服务器的重启已经文件加载命令都是一致的。

    nginx配置

    nginx是一个功能非常强大的web服务器加反向代理服务器,同时又是邮件服务器等等

    在项目使用中,使用最多的三个核心功能是反向代理、负载均衡和静态服务器

    这三个不同的功能的使用,都跟nginx的配置密切相关,nginx服务器的配置信息主要集中在nginx.conf这个配置文件中,并且所有的可配置选项大致分为以下几个部分

    main                                # 全局配置
    
    events {                            # nginx工作模式配置
    
    }
    
    http {                                # http设置
        ....
    
        server {                        # 服务器主机配置
            ....
            location {                    # 路由配置
                ....
            }
    
            location path {
                ....
            }
    
            location otherpath {
                ....
            }
        }
    
        server {
            ....
    
            location {
                ....
            }
        }
    
        upstream name {                    # 负载均衡配置
            ....
        }
    }

     

    如上述配置文件所示,主要由6个部分组成:

    1. main:用于进行nginx全局信息的配置
    2. events:用于nginx工作模式的配置
    3. http:用于进行http协议信息的一些配置
    4. server:用于进行服务器访问信息的配置
    5. location:用于进行访问路由的配置
    6. upstream:用于进行负载均衡的配置

    main模块

    观察下面的配置代码

    # user nobody nobody;
    worker_processes 2;
    # error_log logs/error.log
    # error_log logs/error.log notice
    # error_log logs/error.log info
    # pid logs/nginx.pid
    worker_rlimit_nofile 1024;

    上述配置都是存放在main全局配置模块中的配置项

    • user用来指定nginx worker进程运行用户以及用户组,默认nobody账号运行
    • worker_processes指定nginx要开启的子进程数量,运行过程中监控每个进程消耗内存(一般几M~几十M不等)根据实际情况进行调整,通常数量是CPU内核数量的整数倍
    • error_log定义错误日志文件的位置及输出级别【debug / info / notice / warn / error / crit】
    • pid用来指定进程id的存储文件的位置
    • worker_rlimit_nofile用于指定一个进程可以打开最多文件数量的描述

    event 模块

    上干货

    event {
        worker_connections 1024;
        multi_accept on;
        use epoll;
    }

    上述配置是针对nginx服务器的工作模式的一些操作配置

    • worker_connections 指定最大可以同时接收的连接数量,这里一定要注意,最大连接数量是和worker processes共同决定的。
    • multi_accept 配置指定nginx在收到一个新连接通知后尽可能多的接受更多的连接
    • use epoll 配置指定了线程轮询的方法,如果是linux2.6+,使用epoll,如果是BSD如Mac请使用Kqueue

    http模块

    作为web服务器,http模块是nginx最核心的一个模块,配置项也是比较多的,项目中会设置到很多的实际业务场景,需要根据硬件信息进行适当的配置,常规情况下,使用默认配置即可!

    http {
        ##
        # 基础配置
        ##
    
        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;
        keepalive_timeout 65;
        types_hash_max_size 2048;
        # server_tokens off;
    
        # server_names_hash_bucket_size 64;
        # server_name_in_redirect off;
    
        include /etc/nginx/mime.types;
        default_type application/octet-stream;
    
        ##
        # SSL证书配置
        ##
    
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
        ssl_prefer_server_ciphers on;
    
        ##
        # 日志配置
        ##
    
        access_log /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log;
    
        ##
        # Gzip 压缩配置
        ##
    
        gzip on;
        gzip_disable "msie6";
    
        # gzip_vary on;
        # gzip_proxied any;
        # gzip_comp_level 6;
        # gzip_buffers 16 8k;
        # gzip_http_version 1.1;
        # gzip_types text/plain text/css application/json application/javascript
     text/xml application/xml application/xml+rss text/javascript;
    
        ##
        # 虚拟主机配置
        ##
    
        include /etc/nginx/conf.d/*.conf;
        include /etc/nginx/sites-enabled/*;

    1) 基础配置

    sendfile on:配置on让sendfile发挥作用,将文件的回写过程交给数据缓冲去去完成,而不是放在应用中完成,这样的话在性能提升有有好处
    tc_nopush on:让nginx在一个数据包中发送所有的头文件,而不是一个一个单独发
    tcp_nodelay on:让nginx不要缓存数据,而是一段一段发送,如果数据的传输有实时性的要求的话可以配置它,发送完一小段数据就立刻能得到返回值,但是不要滥用哦
    
    keepalive_timeout 10:给客户端分配连接超时时间,服务器会在这个时间过后关闭连接。一般设置时间较短,可以让nginx工作持续性更好
    client_header_timeout 10:设置请求头的超时时间
    client_body_timeout 10:设置请求体的超时时间
    send_timeout 10:指定客户端响应超时时间,如果客户端两次操作间隔超过这个时间,服务器就会关闭这个链接
    
    limit_conn_zone $binary_remote_addr zone=addr:5m :设置用于保存各种key的共享内存的参数,
    limit_conn addr 100: 给定的key设置最大连接数
    
    server_tokens:虽然不会让nginx执行速度更快,但是可以在错误页面关闭nginx版本提示,对于网站安全性的提升有好处哦
    include /etc/nginx/mime.types:指定在当前文件中包含另一个文件的指令
    default_type application/octet-stream:指定默认处理的文件类型可以是二进制
    type_hash_max_size 2048:混淆数据,影响三列冲突率,值越大消耗内存越多,散列key冲突率会降低,检索速度更快;值越小key,占用内存较少,冲突率越高,检索速度变慢

    2) 日志配置

    access_log logs/access.log:设置存储访问记录的日志
    error_log logs/error.log:设置存储记录错误发生的日志

    3) SSL证书加密

    ssl_protocols:指令用于启动特定的加密协议,nginx在1.1.13和1.0.12版本后默认是ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2,TLSv1.1与TLSv1.2要确保OpenSSL >= 1.0.1 ,SSLv3 现在还有很多地方在用但有不少被攻击的漏洞。
    ssl prefer server ciphers:设置协商加密算法时,优先使用我们服务端的加密套件,而不是客户端浏览器的加密套件

    4) 压缩配置

    gzip 是告诉nginx采用gzip压缩的形式发送数据。这将会减少我们发送的数据量。
    gzip_disable 为指定的客户端禁用gzip功能。我们设置成IE6或者更低版本以使我们的方案能够广泛兼容。
    gzip_static 告诉nginx在压缩资源之前,先查找是否有预先gzip处理过的资源。这要求你预先压缩你的文件(在这个例子中被注释掉了),从而允许你使用最高压缩比,这样nginx就不用再压缩这些文件了(想要更详尽的gzip_static的信息,请点击这里)。
    gzip_proxied 允许或者禁止压缩基于请求和响应的响应流。我们设置为any,意味着将会压缩所有的请求。
    gzip_min_length 设置对数据启用压缩的最少字节数。如果一个请求小于1000字节,我们最好不要压缩它,因为压缩这些小的数据会降低处理此请求的所有进程的速度。
    gzip_comp_level 设置数据的压缩等级。这个等级可以是1-9之间的任意数值,9是最慢但是压缩比最大的。我们设置为4,这是一个比较折中的设置。
    gzip_type 设置需要压缩的数据格式。上面例子中已经有一些了,你也可以再添加更多的格式。

    5) 文件缓存配置

    open_file_cache 打开缓存的同时也指定了缓存最大数目,以及缓存的时间。我们可以设置一个相对高的最大时间,这样我们可以在它们不活动超过20秒后清除掉。
    open_file_cache_valid 在open_file_cache中指定检测正确信息的间隔时间。
    open_file_cache_min_uses 定义了open_file_cache中指令参数不活动时间期间里最小的文件数。
    open_file_cache_errors 指定了当搜索一个文件时是否缓存错误信息,也包括再次给配置中添加文件。我们也包括了服务器模块,这些是在不同文件中定义的。如果你的服务器模块不在这些位置,你就得修改这一行来指定正确的位置。

    server模块

    srever模块配置是http模块中的一个子模块,用来定义一个虚拟访问主机,也就是一个虚拟服务器的配置信息

    server {
        listen        80;
        server_name localhost    192.168.1.100;
        root        /nginx/www;
        index        index.php index.html index.html;
        charset        utf-8;
        access_log    logs/access.log;
        error_log    logs/error.log;
        ......
    }

    核心配置信息如下:

    • server:一个虚拟主机的配置,一个http中可以配置多个server

    • server_name:用力啊指定ip地址或者域名,多个配置之间用空格分隔

    • root:表示整个server虚拟主机内的根目录,所有当前主机中web项目的根目录

    • index:用户访问web网站时的全局首页

    • charset:用于设置www/路径中配置的网页的默认编码格式

    • access_log:用于指定该虚拟主机服务器中的访问记录日志存放路径

    • error_log:用于指定该虚拟主机服务器中访问错误日志的存放路径

    location模块

    location模块是nginx配置中出现最多的一个配置,主要用于配置路由访问信息

    在路由访问信息配置中关联到反向代理、负载均衡等等各项功能,所以location模块也是一个非常重要的配置模块

    基本配置

    location / {
        root    /nginx/www;
        index    index.php index.html index.htm;
    }

    location /:表示匹配访问根目录

    root:用于指定访问根目录时,访问虚拟主机的web目录

    index:在不指定访问具体资源时,默认展示的资源文件列表

    反向代理配置方式

    通过反向代理代理服务器访问模式,通过proxy_set配置让客户端访问透明化

    location / {
        proxy_pass http://localhost:8888;
        proxy_set_header X-real-ip $remote_addr;
        proxy_set_header Host $http_host;
    }

    uwsgi配置

    wsgi模式下的服务器配置访问方式

    location / {
        include uwsgi_params;
        uwsgi_pass localhost:8888
    }

    upstream模块

    upstream模块主要负责负载均衡的配置,通过默认的轮询调度方式来分发请求到后端服务器

    简单的配置方式如下

    upstream name {
        ip_hash;
        server 192.168.1.100:8000;
        server 192.168.1.100:8001 down;
        server 192.168.1.100:8002 max_fails=3;
        server 192.168.1.100:8003 fail_timeout=20s;
        server 192.168.1.100:8004 max_fails=3 fail_timeout=20s;
    }

    核心配置信息如下

    • ip_hash:指定请求调度算法,默认是weight权重轮询调度,可以指定

    • server host:port:分发服务器的列表配置

    • -- down:表示该主机暂停服务

    • -- max_fails:表示失败最大次数,超过失败最大次数暂停服务

    • -- fail_timeout:表示如果请求受理失败,暂停指定的时间之后重新发起请求

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

    1. 负载均衡

    负载均衡 建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。
           负载均衡,英文名称为Load Balance,其意思就是分摊到多个操作单元上进行执行,例如Web服务器FTP服务器企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。

    2. 软负载均衡

            软件负载均衡则是通过在服务器上安装的特定的负载均衡软件或是自带负载均衡模块完成对请求的分配派发。
          
          常用的负载均衡策略:

    2.1 轮询

    轮询。作为非常经典的负载均衡策略,早期该策略应用地非常广泛。其原理很简单,给每个请求标记一个序号,然后将请求依次派发到服务器节点中,适用于集群中各个节点提供服务能力等同且无状态的场景。其缺点也非常明显,该策略将节点视为等同,与实际中复杂的环境不符。加权轮询为轮询的一个改进策略,每个节点会有权重属性,但是因为权重的设置难以做到随实际情况变化,仍有一定的不足。

    2.2 随机

    随机。与轮询相似,只是不需要对每个请求进行编号,每次随机取一个。同样地,该策略也将后端的每个节点是为等同的。另外同样也有改进的加权随机的算法,不再赘述。

    2.3 最小响应时间

    通过记录每次请求所需的时间,得出平均的响应时间,然后根据响应时间选择最小的响应时间。该策略能较好地反应服务器的状态,但是由于是平均响应时间的关系,时间上有些滞后,无法满足快速响应的要求。因此在此基础之上,会有一些改进版本的策略,如只计算最近若干次的平均时间的策略等。

    2.4 最小并发数

    客户端的每一次请求服务在服务器停留的时间可能会有较大的差异,随着工作时间加长,如果采用简单的轮循或随机均衡算法,每一台服务器上的连接进程可能会产生较大的不同,并没有达到真正的负载均衡。最小并发数的策略则是记录了当前时刻,每个备选节点正在处理的事务数,然后选择并发数最小的节点。该策略能够快速地反应服务器的当前状况,较为合理地将负责分配均匀,适用于对当前系统负载较为敏感的场景

    3. F5负载均衡

              F5负载均衡是硬件负载均衡的一种。硬件负载均衡,顾名思义,在服务器节点之间安装专门的硬件进行负载均衡的工作。
     
    F5是负载均衡产品的一个品牌,其地位类似于原来诺基亚在手机品牌中的位置。除了F5以外,Radware、Array、A10、Cisco、深信服和华夏创新都是负载均衡的牌子,因为F5在这类产品中影响最大,所以经常说F5负载均衡。
     
    展开全文
  • 负载均衡不只是为了计算单元的负载达到均衡状态,他依据分配算法目标,有的基于负载考虑,有的基于性能(吞吐量、响应时间)考虑,有的基于业务考虑。 DNS 负载均衡 DNS 是最简单也是最常见的负载均衡方式,一般...

    当单服务器的性能无法满足业务需求时,就需要设计高性能集群来提升系统整体的处理性能。

    高性能集群的复杂性主要体现在需要增加一个任务分配器,以及为任务选择一个合适的负载均衡器。负载均衡不只是为了计算单元的负载达到均衡状态,他依据分配算法目标,有的基于负载考虑,有的基于性能(吞吐量、响应时间)考虑,有的基于业务考虑。

    DNS 负载均衡

    DNS 是最简单也是最常见的负载均衡方式,一般用来实现地理级别的均衡。DNS 负载均衡实现简单、成本低,但也存在粒度太粗、负载均衡算法少等缺点。仔细分析一下优缺点,

    优点:

    简单、成本低:负载均衡工作交给 DNS 服务器处理,无须自己开发或者维护负载均衡设备。

    就近访问,提升访问速度:DNS 解析时可以根据请求来源 IP,解析成距离用户最近的服务器地址,可以加快访问速度,改善性能。

    缺点:

    更新不及时:DNS 缓存的时间比较长,修改 DNS 配置后,由于缓存的原因,还是有很多用户会继续访问修改前的 IP,这样的访问会失败,达不到负载均衡的目的,并且也影响用户正常使用业务。

    扩展性差:DNS 负载均衡的控制权在域名商那里,无法根据业务特点针对其做更多的定制化功能和扩展特性。

    分配策略比较简单:DNS 负载均衡支持的算法少;不能区分服务器的差异(不能根据系统与服务的状态来判断负载);也无法感知后端服务器的状态。

    针对 DNS 负载均衡的一些缺点,对于时延和故障敏感的业务,有一些公司自己实现了 HTTP-DNS 的功能,即使用 HTTP 协议实现一个私有的 DNS 系统。这样的方案和通用的 DNS 优缺点正好相反。

     

    硬件负载均衡

    硬件负载均衡是通过单独的硬件设备来实现负载均衡功能,这类设备和路由器、交换机类似,可以理解为一个用于负载均衡的基础网络设备。目前业界典型的硬件负载均衡设备有两款:F5 和 A10。这类设备性能强劲、功能强大,但价格都不便宜,一般只有“土豪”公司才会考虑使用此类设备。普通业务量级的公司一是负担不起,二是业务量没那么大,用这些设备也是浪费。

    硬件负载均衡的优点是:

    功能强大:全面支持各层级的负载均衡,支持全面的负载均衡算法,支持全局负载均衡。

    性能强大:对比一下,软件负载均衡支持到 10 万级并发已经很厉害了,硬件负载均衡可以支持 100 万以上的并发。

    稳定性高:商用硬件负载均衡,经过了良好的严格测试,经过大规模使用,稳定性高。

    支持安全防护:硬件均衡设备除具备负载均衡功能外,还具备防火墙、防 DDoS 攻击等安全功能。

    硬件负载均衡的缺点是:

    价格昂贵

    扩展能力差:硬件设备,可以根据业务进行配置,但无法进行扩展和定制。

     

    软件负载均衡

    软件负载均衡通过负载均衡软件来实现负载均衡功能,常见的有 Nginx 和 LVS,其中 Nginx 是软件的 7 层负载均衡,LVS 是 Linux 内核的 4 层负载均衡。4 层和 7 层的区别就在于协议和灵活性,Nginx 支持 HTTP、E-mail 协议;而 LVS 是 4 层负载均衡,和协议无关,几乎所有应用都可以做,例如,聊天、数据库等。

    软件和硬件的最主要区别就在于性能,硬件负载均衡性能远远高于软件负载均衡性能。Ngxin 的性能是万级,一般的 Linux 服务器上装一个 Nginx 大概能到 5 万 / 秒;LVS 的性能是十万级,据说可达到 80 万 / 秒;而 F5 性能是百万级,从 200 万 / 秒到 800 万 / 秒都有。当然,软件负载均衡的最大优势是比硬件负载均衡便宜。

    软件负载均衡的优点:

    简单:无论是部署还是维护都比较简单。

    便宜:只要买个 Linux 服务器,装上软件即可。

    灵活:4 层和 7 层负载均衡可以根据业务进行选择;也可以根据业务进行比较方便的扩展,例如,可以通过 Nginx 的插件来实现业务的定制化功能。

    性能一般:一个 Nginx 大约能支撑 5 万并发。

    功能没有硬件负载均衡那么强大。一般不具备防火墙和防 DDoS 攻击等安全功能。

    参考来源:极客时间

    展开全文
  • 负载均衡算法

    万次阅读 2019-10-10 17:11:02
    负载均衡算法 负载均衡算法说明 负载均衡介绍 负载均衡,英文名称为Load Balance,指由多台服务器以对称的方式组成一个服务器集合,每台服务器都具有等价的地位,都可以单独对外提供服务而无须其他服务器的辅助...
  • 动静分离二、Nginx 的安装三、 Nginx 的常用命令和配置文件四、 Nginx 配置实例 1 反向代理五、 Nginx 配置实例 2 负载均衡六、 Nginx 配置实例 3 动静分离七、 Nginx 的高可用集群 前言 一、nginx简介...
  • 对于等价负载均衡来说,所有的IGP路由协议都支持等价负载均衡,所谓等价负载均衡是指同一种路由协议到达同一个目的地址(子网掩码位数也必须相同)的开销相同,此时会自动形成等价负载均衡。而非等价负载均衡只有IGP...
  • Spring Cloud Alibaba 02_使用 ribbon 实现负载均衡 注:Ribbon 是 Netflix 提供的组件,不是 Alibaba 的组件 修改 ConsumerConfiguration,添加 @LoadBalanced 注解 package com.blu.configuration; import org....
  • DNS负载均衡和NGINX负载均衡

    千次阅读 2018-07-17 18:12:16
    负载均衡:把请求均匀的分摊到多个服务器上处理 两种负载均衡: 客户端与反向代理服务器之间的DNS负载均衡 服务器与反向代理服务器之间的负载均衡,可以使apache+tomcat负载均衡,也可以是ngnix负载均衡 DNS负载...
  • 客户端负载均衡与服务端负载均衡

    千次阅读 2017-11-30 15:01:22
    通过Nginx负载均衡服务器发送到不同的上游服务器去处理,这种负载均衡就是一种典型的服务端负载均衡,那么客户端负载均衡是什么?它和服务端负载均衡有什么区别? 服务端负载均衡 负载均衡是我们处理高并发、缓解...
  • 相关配置基于:轮循负载均衡 首先关闭防火墙service iptables stop 加权负载均衡 nginx配置,找到自己nginx安装目录下的nginx.conf文件,我默认安装在 /usr/local/nginx/ 目录vim /usr/local/nginx/conf/nginx.conf ...
  • nacos服务的负载均衡功能演示

    万次阅读 2020-09-21 13:35:52
    服务提供者 第一个服务提供者 @SpringBootApplication @EnableDiscoveryClient public class CloudalibabaProviderPayment01Application { public static void main(String[] args) { SpringApplication.run...
  • DNS负载均衡与NGINX负载均衡策略

    万次阅读 2017-11-23 23:00:17
    一般常见的负载均衡有两种:①客户端与反向代理服务器之间的DNS负载均衡②反向代理服务器与应用服务器之间的负载均衡(这种负载均衡有很多,可以是weblogic的负载均衡,可以是Apache+Tomcat负载均衡,也可以是nginx...

空空如也

1 2 3 4 5 ... 20
收藏数 116,582
精华内容 46,632
关键字:

负载均衡