LVS原理和实现

一、LVS简介

LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。在linux内存2.6中,它已经成为内核的一部分,在此之前的内核版本则需要重新编译内核。

LVS主要用于多服务器的负载均衡。它工作在网络层,可以实现高性能,高可用的服务器集群技术。可把许多低性能的服务器组合在一起形成一个超级服务器,实现容量的扩张和伸缩。配置非常简单,且有多种负载均衡的方法。稳定可靠,即使在集群的服务器中某台服务器无法正常工作,也不影响整体效果。

二、LVS组件

ipvs:是一个框架,工作于内核中,结合netfilter代码上的INPUT钩子函数,根据用户定义的ipvs规则完成转发,使请求不进入用户空间中。

一旦用户请求进入用户空间,就意味着每一个用户请求的链接都需要维持一个套接字文件,单主机套接字文件数最多了65535个。由于LVS工作在内核空间中,无需进入用户空间,所以可以突破套接字的限制。

ipvsadm:是一个用户空间管理器,用于生成ipvs在INPUT钩子函数中的规则。

三、LVS IP地址命名规范

    在LVS集群中,我们必须基于节点在集群内的角色来区别不同种类的ip地址,在一个集群内有四种基本的ip地址类型。

①、虚拟ip地址(VIP)

Director用于向客户端计算机提供服务的ip地址

用于客户端计算机连接由集群提供的服务的ip地址叫做虚拟ip地址(VIP),VIP是连接Director到常规公共网络的网卡上的ip别名或从属ip地址。LVS VIP很重要,因为它是客户端计算机连接集群时要用到的,客户端计算机从它们的ip地址向VIP地址发送数据包访问集群服务,然后你告诉客户端计算机使用这个VIP地址的服务名(如DNS、DDNS、WINS、LDAP或NIS),这是客户端计算机要使用集群服务常需要知道的唯一名字或地址。(客户端计算机不知道集群内剩下的ip地址)

②、真实ip地址(RIP)

用在集群节点上的ip地址

在LVS术语中,向外部世界提供服务的节点叫做真实服务器,因此在真实服务器上使用的ip地址叫做真实ip地址(RIP)。

RIP地址是分配给连接真实服务器到同一网络上Director的网卡的永久性ip地址,这个网络为集群网络或Director/真实服务器网络(D/RIP网络),Director使用RIP地址在D/RIP网络上进行正常的网络通讯,但是只有Director需要知道如何与这个ip地址对话。

③、Director的ip地址(DIP)

Director用于连接D/RIP网络的ip地址

Director的ip地址(DIP)用在连接Director到D/RIP网络的网卡上的,在Director的VIP上接收访问集群服务的请求,这些请求通过DIP转发出去抵达各个集群节点,DIP和VIP可以处于同一块网卡上。

④、客户端计算机的ip地址(CIP)

分配给客户端计算机的ip地址,它用作向集群发送请求的源ip地址

客户端计算机的ip地址(CIP)可能是一个本地的、与VIP在同一网络的私有ip地址,或者是一个因特网上的公共ip地址。

LVS集群和个IP分布简图(点击放大查看)

四、LVS的类型

. 使用VS/NAT方法

客户通过Virtual IP Address(虚拟服务的IP地址)访问网络服务时,请求报文到达调度器,调度器根据连接调度算法(下面会提到)从一组真实服务器中选出一台服务器,将报文的目标地址 Virtual IP Address 改写成选定服务器的地址,报文的目标端口改写成选定服务器的相应端口,最后将修改后的报文发送给选出的服务器。同时,调度器在连接 Hash 表中记录这个连接,当这个连接的下一个报文到达时,从连接Hash表中可以得到原选定服务器的地址和端口,进行同样的改写操作,并将报文传给原选定的服务 器。当来自真实服务器的响应报文经过调度器时,调度器将报文的源地址和源端口改为Virtual IP Address和相应的端口,再把报文发给用户。

当使用VS/NAT方法时,如果有大量的响应数据经过调度器,调度器将成为整个集群的瓶颈

这个很象 Nginx 的 7 层调度,所以大约能支持的后端机器只有 10 台的样子。因为这台调度器就成了瓶颈。

2. 使用VS/TUN方法

VS/TUN 的连接调度和管理与 VS/NAT 中的一样,只是它的报文转发方法不同。调度器根据各个服务器的负载情况,动态地选择一 台服务器,将请求报文封装在另一个IP报文中,再将封装后的IP报文转发给选出的服务器;服务器收到报文后,先将报文解封获得原来目标地址为VIP的报 文,服务器发现VIP地址被配置在本地的IP隧道设备上,所以就处理这个请求,然后根据路由表将响应报文直接返回给客户。

3. 使用VS/DR方法

调度器和服务器组都必须在物理上有一个网卡通过不分断的局域网相连,如通过交换机或者高速的HUB相连。VIP地址为调度器和服务器 组共享,调度器配置的VIP地址是对外可见的,用于接收虚拟服务的请求报文;所有的服务器把VIP地址配置在各自的Non-ARP网络设备上,它对外面是 不可见的,只是用于处理目标地址为VIP的网络请求。在VS/DR中,调度器根据各个服务器的负载情况,动态地选择一台服务器,不修改也不封装IP报文, 而是将数据帧的MAC地址改为选出服务器的MAC地址,再将修改后的数据帧在与服务器组的局域网上发送。因为数据帧的MAC地址是选出的服务器,所以服务 器肯定可以收到这个数据帧,从中可以获得该IP报文。当服务器发现报文的目标地址VIP是在本地的网络设备上,服务器处理这个报文,然后根据路由表将响应 报文直接返回给客户。

时间: 2024-08-01 10:21:16

LVS原理和实现的相关文章

Lvs原理及简单实现

Lvs原理及简单实现 大纲: 一.集群概述 二.什么是Lvs?(what) 三.为什么要用Lvs?(why) 四.什么时候需要用Lvs?(when) 五.什么地方需要用Lvs?(where) 六.什么人来部署Lvs?(who) 七.Lvs支持的三种模式与十种算法(Scheduler) 八.如何部署Lvs之NAT模式?(How) 九.如何部署Lvs之DR模式? 一.集群简介: 计算机集群(Cluster)技术可以通过网络连接把一组互相独立工作的计算机高度紧密的连接起来,从而高效可靠的共同完成协同任

LVS原理详解(3种工作模式及8种调度算法)

2017年1月12日, 星期四 LVS原理详解(3种工作模式及8种调度算法) LVS原理详解及部署之二:LVS原理详解(3种工作方式8种调度算法) 作者:woshiliwentong  发布日期:2014-01-06 09:31:20 一.集群简介 什么是集群 计算机集群简称集群是一种计算机系统,它通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作.在某种意义上,他们可以被看作是一台计算机.集群系统中的单个计算机通常称为节点,通常通过局域网连接,但也有其它的可能连接方式.集

lvs原理介绍(DR)

1.NAT  地址转换技术 2.DR  直接路由模式***** 3.ip隧道(ip  tunneling) 4.FullNAT模式 &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

三十三天 大规模站点构建、lvs原理、lvs调度及nat模型实现、lvs dr模型及lxc虚拟化

1.大规模站点构建框架.        http:状态               keep-alive:长连接               cookie:session          cluster:集群                 构建高可扩展性系统的重要原则:在系统内部尽量避免串行化和交互                 HA:High Availability                 LB:Load Balancing                 session复制 

LVS原理详解

一.集群简介 什么是集群 计算机集群简称集群是一种计算机系统,它通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作.在某种意义上,他们可以被看作是一台计算机.集群系统中的单个计算机通常称为节点,通常通过局域网连接,但也有其它的可能连接方式.集群计算机通常用来改进单个计算机的计算速度和/或可靠性.一般情况下集群计算机比单个计算机,比如工作站或超级计算机性能价格比要高得多. 集群就是一组独立的计算机,通过网络连接组合成一个组合来共同完一个任务 LVS在企业架构中的位置: 以上的

Lvs原理

名称 缩写 说明 虚拟IP地址(Virtual IP Address) VIP  VIP为Director用于向客户端计算机提供服务的IP地址  真实IP地址(Real Server IP Address)  RIP  在集群下面节点上使用的IP地址,物理IP地址  Director的IP地址(Director IP Address)  DIP  Director用于连接内外网络的IP地址,物理网卡上的地址.是负载均衡器上的IP  客户端主机IP地址(Client IP Address)  CI

集群及LVS原理

集群(cluster):单台服务器无法满足生产,其中包括容量,可用,性能等,就要组合多台服务器来协同处理,对外部环境来说,集群作为一个整体 一.集群的常见类型: 1.LB:Load Balancing 负载均衡集群 LB利用一个集群中的多台服务器完成工作,作用就是将用户的请求,选择分配给当时负载最小,且能提供最好的服务的服务器来处理. LB主要应用于访问请求很大的web和在线网游场景 2.HA:High Availability 高可用集群 HA是利用集群中系统冗余,时刻以特定的方式对正在工作的

LVS原理与使用(1)

负载均衡,无论是否真正了解过,但我相信所有跟编程打交道的读者都有听说.同时,它(负载均衡)也是被认为一个大型网站的标识性技术之一(但负载均衡的作用肯定不止这点用途).虽然网上也有不少关于LVS配置实用的教程或帖子,但总的来说几乎都是以快餐式文化为主,内容参差不齐,不少教程本身也存在不少错误,对读者不仅没有帮助,反而造成了视线干扰.因此,本系列,我们将使用较大的篇幅(60%左右)来讲对LVS的前提知识的进行补充以及其原理进行讲解,然后用较少的篇幅(30%左右)来讲解具体操作,最用用剩余的篇幅(10

架构设计:负载均衡层设计方案(4)——LVS原理

之前我们花了两篇文章的篇幅,详细讲解了Nginx的原理.安装和特性组件.请参看<负载均衡层设计方案(2)——Nginx安装>(http://blog.csdn.net/yinwenjie/article/details/46620711)和<架构设计:负载均衡层设计方案(3)——Nginx进阶>(http://blog.csdn.net/yinwenjie/article/details/46742661)两篇文章.虽然不包括Nginx的所有知识(也不可能全部包括),但是足够读者将

LVS原理详解(3种工作方式8种调度算法)

一.集群简介 什么是集群 计算机集群简称集群是一种计算机系统,它通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作.在某种意义上,他们可以被看作是一台计算机.集群系统中的单个计算机通常称为节点,通常通过局域网连接,但也有其它的可能连接方式.集群计算机通常用来改进单个计算机的计算速度和/或可靠性.一般情况下集群计算机比单个计算机,比如工作站或超级计算机性能价格比要高得多. 集群就是一组独立的计算机,通过网络连接组合成一个组合来共同完一个任务 LVS在企业架构中的位置: 以上的