架构设计:负载均衡层设计方案(4)

之前我们花了两篇文章的篇幅,详细讲解了Nginx的原理、安装和特性组件。请参看《负载均衡层设计方案(2)——Nginx安装》()和《架构设计:负载均衡层设计方案(3)——Nginx进阶》()两篇文章。虽然不包括Nginx的所有知识(也不可能全部包括),但是足够读者将Nginx应用到实际的生产中,并进行重要特性的优化,后面有时间我们还会重新回到Nginx的讲解上。从本篇文章开始,我们将开始介绍LVS技术,包括基本概念、简单使用和进阶使用。

1、LVS介绍

请自行Google或者百度。

2、网络协议基础知识

根据官方文档LVS支持三种负载工作方式:NAT方式、TUN方式和DR方式。为了说明这三种方式的工作原理,我们首先需要了解一下基础的IP/TCP报文(注意,IP报文和TCP报文是两种不同的报文格式),以及链路层对IP数据的封装方式。然后我们采用看图说话的方式,以图文结合的方式为您介绍这三种工作方式中对报文或重写或封装的过程。

为了说清楚我们将要讲解的基础知识,就要提到OSI7层网络模型。

章文嵩博士及其团队是我的偶像,LVS体系之所以高效是因为其直接对链路层报文、IP报文、TCP报文进行了修改或封装。所以要真正理解LVS的三种工作方式,就不能像网络上的抄袭贴一样转几句不知所以的文字就完了,必须对链路层报文、网络层报文、传输层报文有所了解。下面我们就进行概述。

为了保证这个系列的博文不发生偏差,我们只讲解其中需要用到的属性和含义,如果读者对网络的核心原理有兴趣,可以读读《TCP/IP详解,卷1:协议》这本书。

2.1、链路层报文

链路层的数据格式有一个共同特点,都包括目标MAC地址和源MAC地址。下面这个图主要说明了我们最常用的Ethernet帧(以太帧)的报文格式:

目标MAC地址/源MAC地址:00:00:00:00:00:00——FF:FF:FF:FF:FF:FF这个范围是全球MAC地址的可用范围。一张物理网卡肯定有一个唯一的MAC地址。实际上网络层常用的IP协议,就是基于MAC地址的。一个子网范围内某个IP对应的MAC地址是通过ARP查询协议从NAT设备(可能是路由器、交换机或者网络代理设备)上查询得到的。

上层协议类型:链路层的报文是为了承载网络层的协议而存在的,所以链路层的数据格式中需要有一个属性说明这个链路层所承载的上层协议是什么类型。

封装的上层数据:最多可以有1500个字节。

请记住这个链路层的数据格式,因为讲到LVS-DR方式的时候,主要就是对链路层的数据格式进行修改,而不会对IP数据报文和TCP数据报文进行修改。

2.2、网络层IP报文

我们首先来看看IP协议是怎么描述的:

好吧,图我是直接从百度百科直接粘过来的,因为要我来画,结构也是这样^_^。其中有几个重要的我们后面要使用的属性,要给大家说一下:

2.3、传输层TCP报文

上文已经说过,TCP的报文信息是装在到IP报文的数据部分的,当成网络上进行传输的数据从Srouce Address传到Destination Address中。下面是TCP报文的信息:

从上面的描述可以看出,一旦IP报文中的源IP和目标IP发生改变了,TCP报文校验信息就会改变。

3、LVS的三种工作方式3.1、LVS-NAT工作方式

NAT方式是一种由LVS Master服务节点收到数据报,然后转给下层的Real Server节点,当Real Server处理完成后回发给LVS Master节点然后又由LVS Master节点转发出去的工作方式。LVS的管理程序IPVSADMIN负责绑定转发规则,并完成IP数据报文和TCP数据报文中属性的重写。请用几分钟时间仔细看看下图(为了简单,图里面只画了一个Real Server。如果看不清楚,可点击右键“查看原图”):

LVS-NAT的优点在于:

LVS-NAT的缺点是由于这种转发模式本身所造成的:

转发点就是瓶颈点。您可以想象100台Real Server将处理结果全部转到一个LVS进行发送是一个怎么样的场景。事实上,LVS-NAT的极限负载是达不到100台Real Server的。3.2、LVS-DR工作方式

LVS的DR工作模式,是目前生产环境中最常用的一种工作模式,网上的资料也是最多的,有的文章对DR工作模式的讲解还是比较透彻的。这里我们通过图文的方式再向您介绍一下DR的工作模式(同样,如果看不清楚,请右键“查看原图”):

上图反映了DR模式的整个工作过程,同样为了简单起见,这里的Real Server也只画了一个。如果是多个Real Server的话,LVS会通过调度算法来决定发往哪台Real Server。LVS-DR工作模式的几个关键点在于:

先来说一说上图的工作原理:

LVS-DR工作模式的优点在于:

解决了LVS-NAT工作模式中的转发瓶颈问题,能够支撑规模更大的负载均衡场景。

比较耗费网外IP资源,机房的外网IP资源都是有限的,如果在正式生产环境中确实存在这个问题,可以采用LVS-NAT和LVS-DR混合使用的方式来缓解。

LVS-DR当然也有缺点:

配置工作较LVS-NAT方式稍微麻烦一点,您至少需要了解LVS-DR模式的基本工作方式才能更好的指导自己进行LVS-DR模式的配置和运行过程中问题的解决。

由于LVS-DR模式的报文改写规则,导致LVS节点和Real Server节点必须在一个网段,因为二层交换是没法跨子网的。但是这个问题针对大多数系统架构方案来说,实际上并没有本质限制。

3.3、LVS-TUN工作方式

很多网络上的文章都为读者介绍DR和TUN的工作方式类似,要么就是直接讲解DR模式和TUN模式的安装配置方式,然后总结两种模式类似。那为什么有了DR模式后还需要TUN模式呢?为什么ipvsadmin针对两种模式的配置参数不一样呢?

实际上LVS-DR模式和LVS-TUN模式的工作原理完全不一样,工作场景完全不一样。DR基于数据报文重写,TUN模式基于IP隧道,后者是对数据报文的重新封装。下面我们就来讲解一下LVS-TUN模式的工作原理。

上帝助自助者。

架构设计:负载均衡层设计方案(4)

相关文章:

你感兴趣的文章:

标签云: