负载均衡、LVS概述

1. 负载均衡概述

负载均衡的基本思路是:在一个服务器集群中尽可能的平衡负载量。通常的做法是在服务器前端设置一个负载均衡器(一般是专门的硬件设备)。然后负载均衡器将请求的连接路由到最空闲的可用服务器。下图显示了一个典型的大型网站负载均衡设置,其中一个负载均衡器用于HTTP流量,另一个用于MySQL访问。

负载均衡有5个常见的目的。

(1)可扩展性:负载均衡对于某些扩展策略有所帮助,例如读写分离时从备库读数据。

(2)高效性:负载均衡有助于更有效的使用资源,因为它能够控制请求被路由到何处。

(3)可用性:一个灵活的负载均衡解决方案能够使用时刻保持可用的服务器。

(4)透明性:客户端无须知道是否存在负载均衡设置,也不需要关心在负载均衡器的背后有多少机器,名字是什么。负载均衡器给客户端看到的只是一个虚拟的服务器。

(5)一致性:如果应用是有状态的(数据库事务、网站会话等),那么负载均衡器就应将相关的查询指向同一个服务器,以防止数据丢失。应用无须去跟踪到底连接哪一个服务器。

2. 四层/七层负载均衡

服务器负载均衡,顾名思义就是对一组服务器提供负载均衡业务。这一组服务器一般来说都处于同一个局域网络内,并同时对外提供一组(或多组)相同(或相似)的服务。服务器负载均衡是数据中心最常见的组网模型。

服务器负载均衡分为四层(L4)服务器负载均衡和七层(L7)服务器负载均衡两种:

  • L4服务器负载均衡支持IPv4协议和IPv6协议,是基于流的服务器负载均衡,对报文进行逐流分发,将同一条流的报文分发给同一个服务器。L4服务器负载均衡对基于HTTP的7层业务无法做到按内容进行分发,限制了负载均衡业务的适用范围。依据转发方式,L4服务器负载均衡分为NAT方式和DR方式。

  • L7服务器负载均衡只支持IPv4协议,是基于内容的服务器负载均衡,对报文的承载内容进行深度解析,包括HTTP协议、RTSP协议等,根据其中的内容进行逐包分发,按既定策略将连接导向指定的服务器,实现了业务使用范围更广泛的服务器负载均衡。L7服务器负载均衡仅支持NAT方式。

2.1 NAT方式L4服务器负载均衡

NAT方式L4服务器负载均衡的组网灵活,后端服务器可以位于不同的物理位置,不同的局域网内。NAT方式下,LB设备分发服务请求时,进行目的IP地址转换(目的IP地址为实服务的IP),通过路由将报文转发给各个实服务。NAT方式L4服务器负载均衡的典型组网如图所示。

NAT方式L4服务器负载均衡包括以下几个基本元素:

  • LB
    Device:负责分发各种服务请求到多个Server的设备。

  • Server:负责响应和处理各种服务请求的服务器。

  • VSIP:对外提供的虚拟IP,供用户请求服务时使用。

  • Server IP:服务器的IP地址,供LB
    Device分发服务请求时使用。

(1) 实现原理

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

(2) 工作流程

NAT方式L4服务器负载均衡的工作流程图如图所示。

流程简述如下:




























步骤

说明

备注

(1)

Host发送服务请求报文

源IP为Host
IP、目的IP为VSIP

(2)

LB
Device接收到请求报文后,借助持续性功能或调度算法计算出应该将请求分发给哪台Server

-

(3)

LB
Device使用DNAT技术分发报文

源IP为Host
IP、目的IP为Server IP

(4)

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

源IP为Server
IP、目的IP为Host IP

(5)

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

源IP为VSIP、目的IP为Host
IP

从以上一系列的说明可以看出——在负载均衡时使用网络地址转换技术,NAT方式因此而得名。

(3) 技术特点

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

2.2 DR方式L4服务器负载均衡

相对于NAT方式,DR方式L4服务器负载均衡中只有客户端的请求报文通过LB,服务器的响应报文不经过LB,从而减少了LB的负载,有效的避免了LB成为网络瓶颈。DR方式下,LB设备分发服务请求时,不改变目的IP地址,而将报文的目的MAC替换为实服务的MAC后直接把报文转发给实服务。DR方式L4服务器负载均衡的典型组网如图所示。

DR方式L4服务器负载均衡包括以下几个基本元素:

  • LB
    Device:负责分发各种服务请求到多个Server的设备。

  • Server:负责响应和处理各种服务请求的服务器。

  • VSIP:对外提供的虚拟IP,供用户请求服务时使用。

  • Server IP:服务器的IP地址,供LB
    Device分发服务请求时使用。

(1) 实现原理

DR方式L4服务器负载均衡时,除了LB设备上配置了VSIP,真实服务器也都配置了VSIP,配置的VSIP要求不能响应ARP请求,例如在环回接口上配置VSIP。实服务除了VSIP,还需要配置一个真实IP,用于和LB通信,LB设备和真实服务器在同一个链路域内。发送给VSIP的报文,由LB分发给相应的真实服务器,从真实服务器返回给客户端的报文直接通过交换机返回。

(2) 工作流程

DR方式L4服务器负载均衡的工作流程图如图所示。

流程简述如下:































步骤

说明

备注

(1)

Host发送服务请求报文

源IP为Host
IP、目的IP为VSIP

(2)

General
Device收到请求后转发给LB Device

Server上的VSIP不会响应ARP请求

(3)

LB
Device接收到请求报文后,借助持续性功能或调度算法计算出应该将请求分发给哪台Server

-

(4)

LB
Device分发报文

源IP为Host
IP,目的IP为VSIP,目的MAC为Server的MAC地址

(5)

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

源IP为VSIP、目的IP为Host
IP

(6)

General
Device收到响应报文后,直接将报文转发给Host

-

从以上一系列的说明可以看出——负载均衡设备没有采用传统的转发方式(查找路由表)来分发请求报文,而是通过修改目的MAC直接路由给服务器,DR方式也因此而得名。

(3) 技术特点

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

2.3 L7服务器负载均衡

L7服务器负载均衡的典型组网如图所示。

L7服务器负载均衡包括以下几个基本元素:

  • LB
    Device:负责分发各种服务请求到多个Server的设备。

  • Server:负责响应和处理各种服务请求的服务器。

  • Service
    group:实服务组是一个逻辑概念,是指依据多个服务器的一些公共属性,将服务器划分成不同的组。例如:可以按照不同的功用划分为静态资料存储服务器组和动态交换服务器组;还可以按照不同的内容划分为歌曲服务器组、视频服务器组或图片服务器组等。

  • VSIP:对外提供的虚拟IP,供用户请求服务时使用。

  • Server IP:服务器的IP地址,供LB
    Device分发服务请求时使用。

(1) 实现原理

客户端首先与服务器群前端的负载均衡设备建立TCP连接,然后将到VSIP的请求发送给负载均衡设备。负载均衡设备上的虚服务接收客户端请求,依次根据持续性功能、实服务组匹配策略、调度算法,选择真实的服务器。然后,负载均衡设备先用客户端地址与真实服务器建立TCP连接,再用真实服务器地址重写客户端请求报文的目标地址,并将请求发送给真实服务器。真实服务器的响应报文通过负载均衡设备时,报文的源地址被还原为虚服务的VSIP,再返回给客户端,完成整个负载调度过程。

(2) 工作流程

L7服务器负载均衡的工作流程图如图所示。

流程简述如下:











































步骤

说明

备注

(1)~(3)

Host发起TCP连接请求,与LB
Device建立TCP连接

TCP连接请求的源IP为Host
IP、目的IP为VSIP

(4)

Host发送服务请求报文

源IP为Host
IP、目的IP为VSIP

(5)

LB
Device收到请求后,根据匹配策略为该请求选择一个合适的实服务组,再借助调度算法计算出应该将请求分发给该实服务组中的哪台Server,并缓存该请求报文

-

(6)

LB
device向Server发SYN报文,序列号为Host的SYN报文序列号

源IP为Host
IP、目的IP为Server IP

(7)

Server发送SYN
ACK报文

源IP为Server
IP、目的IP为Host IP

(8)

LB device接收Server的SYN
ACK报文后,回应ACK报文

源IP为Host
IP、目的IP为Server IP

(9)

修改步骤(5)中缓存的请求报文的目的IP和TCP序列号,然后发给Server

源IP为Host
IP、目的IP为Server IP

(10)

Server发送响应报文到LB
device

源IP为Server
IP、目的IP为Host IP

(11)

LB
device修改响应报文的源地址和TCP序列号后转发给Host

源IP为VSIP、目的IP为Host
IP

(3)
技术特点

对报文进行深度解析获取报文载荷中携带的信息,实现按内容进行分发,拓宽了负载均衡业务的适用范围。适用于不同的服务器提供不同功能的组网。

3. LVS

基于LVS的服务器集群主要由两部分组成,即负载调度器(Load
Balancer,简称LB)和真正提供服务的服务器(Real
Server,简称RS)。RS对外是不可见的,用户需要通过访问LB来获得服务,所以LB也称为虚拟服务器(Virtual
Server),它对外公开的IP称为VIP(Virtual IP)。

LB接收到用户的请求后,会根据设置的转发模式和负载均衡调度算法将请求转发给RS,RS再将结果返回给LB或用户(返回给谁跟转发模式有关)。

3.1 转发模式

LVS的转发模式主要有三种:网络地址转换(NAT,Network Address
Translation)、IP隧道(TUN,IP Tunneling)和直接路由(DR,Direct Routing)。

NAT模式

网络地址转换技术应该都不陌生,就是将一个IP地址转换为另一个IP地址的技术。通常当一个内部网络中的主要要访问Internet或被Internet访问时,就需要采用NAT技术,将内部地址(10.0.0.0/255.0.0.0、172.16.0.0/255.240.0.0、192.168.0.0/255.255.0.0)转化为在Internet上可用的外部地址。

下面是LVS采用NAT模式的部署图:

假设一个IP为200.200.200.2的用户来访问我们的虚拟服务器,VIP为200.200.200.1。集群使用的内部IP是10.10.10.0网段。那么请求和响应的过程可以用下图表示:

DR模式

NAT模式中,请求和响应的数据包都需要通过LB,当RS的数目过多时,LB可能成为整个集群的新瓶颈。因为大多数Internet服务都有这样的特点:请求报文较短而响应报文往往包含大量的数据。如果能将请求和响应分开处理,即LB只负责调度请求而响应直接返回给客户,将极大地提高整个集群的吞吐量。

DR模式的部署图

DR模式有几点和NAT不同:

1. 不仅LB上配置了VIP,RS上也都配置了VIP

2. LB和RS都只需要一个真实网卡,LB的VIP配置在eth0:0上,RS的VIP配置在lo:0上

3. LB和RS上真实网卡的IP都需要是公网IP

4. LB不需要开启路由转发功能

5. 响应报文不经过LB

当用户通过VIP访问集群时,LB会收到这个请求,再按照设置的调度算法选择一个RS,并在一个hash表中存储这次连接。然后将请求报文的目的MAC地址改为所选择的RS的MAC并转发给它。RS收到请求后,发现报文的目的IP为VIP,而自己的lo:0上配置了这个IP,RS就处理这个请求并将响应报文直接发送给用户。当该用户再次发送请求时,LB就根据hash表找到对应的RS,并再次将请求转发给它。

TUN模式

IP隧道技术是将一个IP数据报封装成另一个IP数据报的技术,使得被封装的数据报可以被转发到另一个IP地址。

TUN模式与DR模式基本相同。不同的是:

1. TUN模式中,LB和RS必须支持“IP Tunneling”或者“IP
Encapsulation”协议

2. LB和RS的VIP配置在tunl0虚拟网卡上

3. LB将请求报文封装成一个新的IP报文,新的IP包的目的IP是某一RS的IP,然后转发给RS,RS收到报文后解封装,取出用户的请求报文,发现目的IP是VIP,而自己的tunl0网卡上配置了这个IP,从而处理请求并将结果直接发送给客户。DR模式中LB修改的是目的MAC

4. LB与真实服务器不必在同一网段,只要路由可达即可。如果不再同一网段,不会存在arp问题

3.2 调度策略

现在LVS已实现了10种调度策略(man ipvsadm可以查看)。

(1)轮询调度(Round Robin,rr)

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

(2)加权轮询(Weighted Round Robin,wrr)

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

(3)最少链接(Least Connections,lc)

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

(4)加权最少链接(Weighted Least
Connections,wlc)

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

(5)基于局部性的最少链接(Locality-Based Least
Connections,lblc)

“基于局部性的最少链接”调度算法是针对目标IP地址的负载均衡,目前主要用于Cache集群系统。该算法根据请求的目标IP地址找出该目标IP地址最近使用的服务器,若该服务器是可用的且没有超载,将请求发送到该服务器;若服务器不存在,或者该服务器超载且有服务器处于一半的工作负载,则用“最少链接”
的原则选出一个可用的服务器,将请求发送到该服务器。

(6)带复制的基于局部性最少链接(Locality-Based Least
Connections with Replication,lblcr)

“带复制的基于局部性最少链接”调度算法也是针对目标IP地址的负载均衡,目前主要用于Cache集群系统。它与LBLC算法的不同之处是它要维护从一个目标IP地址到一组服务器的映射,而LBLC算法维护从一个目标IP地址到一台服务器的映射。该算法根据请求的目标IP地址找出该目标IP地址对应的服务器组,按“最小连接”原则从服务器组中选出一台服务器,若服务器没有超载,将请求发送到该服务器;若服务器超载,则按“最小连接”原则从这个集群中选出一台服务器,将该服务器加入到服务器组中,将请求发送到该服务器。同时,当该服务器组有一段时间没有被修改,将最忙的服务器从服务器组中删除,以降低复制的程度。

(7)目标地址散列(Destination Hashing,dh)

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

(8)源地址散列(Source Hashing,sh)

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

(9)最短的期望的延迟(Shortest Expected Delay Scheduling
SED,sed)

基于wlc算法。这个必须举例来说了

ABC三台机器分别权重123,连接数也分别是123。那么如果使用WLC算法的话一个新请求进入时它可能会分给ABC中的任意一个。使用sed算法后会进行这样一个运算

A(1+1)/1

B(1+2)/2

C(1+3)/3

根据运算结果,把连接交给C。

(10)最少队列调度(Never Queue
Scheduling,nq)

如果有台real
server的连接数=0就直接分配过去,不需要在进行sed运算

参考文献:

1. 《高性能MySQL》第11章 可扩展的MySQL

2.
《负载均衡技术白皮书》杭州华三通信技术有限公司

http://www.h3c.com.cn/Products___Technology/Technology/Dependability/Other_technology/Technology_book/200906/637219_30003_0.htm

 

负载均衡、LVS概述,码迷,mamicode.com

时间: 2024-10-10 17:09:27

负载均衡、LVS概述的相关文章

负载均衡LVS概述以及DR模式简易部署

前言: 在做这个实验之前,总觉得高可用负载均衡很高大上,很难理解.随性我自己也去试试,后来发现真的是这样!或许因为我是新手,所以实验多以失败告终.加上自己的虚拟机环境很恶心,经常故障,不过最后还是简单地搭建了一个LVS.以下内容是我总结了大多个博文而来,文后注有博文来源. LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器, 是一个由章文嵩博士发起的自由软件项目,它的官方站点是www.linuxvirtualserver.org.现在LVS已经是 Linux标准内

Linux集群-负载均衡lvs介绍及lvs-nat实现https

一.Linux集群 Linux集群系统保护集群管理器和集群节点两部分组成.集群节点简称为节点.服务器或服务器节点,是用来提供资源,进行集群的实际工作.一般来说,它必须进行配置后才能称为集群的一部分,同时也要运行集群用到的应用程序.Linux集群管理器再将各节点捆绑在一起,它用于将任务分解到所有的节点.简单的说,就是按照某种方式把服务器连起来来完成一种特定的任务,提高服务器的响应能力. scale on 在单台主机上提高服务器性能, scale out 增加服务器的数量来提高,负载均衡的集群. 二

负载均衡--LVS+Keepalived

利用LVS+Keepalived 实现高性能高可用负载均衡    背景: 随着你的网站业务量的增长你网站的服务器压力越来越大?需要负载均衡方案!商业的硬件如F5又太贵,你们又是创业型互联公司如何有效节约成本,节省不必要的浪费?同时实现商业硬件一样的高性能高可用的功能?有什么好的负载均衡可伸张可扩展的方案吗?答案是肯定的!有!我们利用LVS+Keepalived基于完整开源软件的架构可以为你提供一个负载均衡及高可用的服务器. 一.LVS+Keepalived 介绍 1. LVS LVS是Linux

负载均衡LVS—ipvsadm应用详解

负载均衡LVS-ipvsadm应用详解 环境:64位Centos 6.4 1.在director上安装ipvsadm工具(这里使用RPM包) //挂载光盘,搜索ipvsadm工具安装包 [[email protected] ~]# mount /dev/cdrom /media/cdrom/ [[email protected] ~]# cd /media/cdrom/Packages [[email protected] Packages]# ll |grep ipvsadm //安装ipvs

负载均衡LVS之NAT模式实现的详细步骤

负载均衡LVS之NAT模式实现的详细步骤 1.数据流程图 2.环境说明 1) 四台主机,时间同步,关闭防火墙和selinux 2) 各主机角色 1] 客户端:192.168.110.27 仅主机(vmnet1) 网关:无 2] RS服务器: 192.168.136.36 仅主机(vmnet6) 网关:192.168.136.35 192.168.136.37 仅主机(vmnet6) 网关:192.168.136.35 3] VS服务器:192.168.110.35 仅主机(vmnet1) 192

负载均衡LVS

可参考:http://ixdba.blog.51cto.com/2895551/555738 http://os.51cto.com/art/201202/319979.html 也可以参考官网:http://zh.linuxvirtualserver.org/ 具体实践,待做 负载均衡系统可以选用LVS方案,而为避免Director Server单点故障引起系统崩溃,我们可以选用LVS+Keepalived组合保证高可用性. 可参考:http://www.jizhuomi.com/softwa

Linux集群之高可用负载均衡lvs+keepalived

LVS简介 LVS介绍 LVS是Linux Virtual Server的缩写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统,属于4层负载均衡 ipvs和ipvsadm的关系 我们使用配置LVS的时候,不能直接配置内核中的ipvs,需要使用ipvs的管理工具ipvsadm进行管理 LVS术语 LVS转发原理 LVS负载均衡器接受所有入站请求,并根据调度算法决定哪个realserver处理该请求 LVS调度算法 轮询(rr):按照请求顺序轮流分发到后端RS 加权轮询(wrr):权值高的获得

负载均衡LVS集群详解

 一.LB--负载均衡 在负载均衡集群中需要一个分发器,我们将其称之为Director,它位于多台服务器的上面的中间层,根据内部锁定义的规则或调度方式从下面的服务器群中选择一个以此来进行响应请求,而其分发的方式则是根据某个算法进行的. 二.HA--高可用 高可用顾名思义就是服务的可用性比较高,即当我们不会因为某台服务器的宕机,从而造成我们的服务不可用,其工作模式则是将一个具有故障的服务转交给一个正常工作的服务器,从而达到服务不会中断. 三.LVS: LVS:Linux Virtual Serve

9.负载均衡lvs+keepaived

1.安装lvs (LB端) #/etc/init.d/keepalived stop                       #停止keepalived高可用 #/application/nginx/sbin/nginx -s stop             #停止nginx反向代理 rpm -qa ipvsadm                                    #检查是否已安装软件 yum -y install ipvsadm ls /usr/src/kernels

乾坤大挪移之负载均衡LVS

乾坤大挪移:乃在颠倒一刚一柔.一阴一阳的乾坤二气,乾坤心法"汇集藏密与西域绝世秘传心法之精华,其功效震古烁今,至高无上.勤修之则催动任何武林上乘功法如探囊取物耳.其式寥寥数言,但气效极巨,正所谓"大道至简"也. 这"乾坤大挪移"心法,实则是运劲用力的一项极巧妙法门,(第一层)龙象成就,(第二层)十诀剑气,(第三层)逍遥乾坤,(第四层)吸劲神魔,(第五层)横空挪移,(第六层)乾坤归一,(第七层)无极心法,伪道养形,真道养神,通此道者,能存能亡,神能飞行,并能