LVS的概念
LVS 英文全称 Linux Virtual Server,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。
本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的*软件项目之一。
官网:http://www.linuxvirtualserver.org/
中文站点: http://zh.linuxvirtualserver.org/
LVS的三层结构
LVS采用三层结构,分别是负载调度器/分发器 ,服务器池,共享存储
-
负载调度器 /分发器(load balancer)
它是整个集群对外面的前端机,负责将客户的请求发送到一组服务器上执行,而客户认为服务是来自一个IP地址(我们可称之为VIP虚拟IP地址)上的 -
服务器池(server pool)
是一组真正执行客户请求的服务器,执行的服务有WEB、MAIL、FTP和DNS等 -
共享存储(shared storage)
它为服务器池提供一个共享的存储区,这样很容易使得服务器池拥有相同的内容,提供相同的服务。
LVS负载均衡的三种包转发方式
LVS提供了三种包转发方式:NAT(网络地址映射)、IP Tunneling(IP隧道)、Direct Routing(直接路由)。不同的转发模式决定了不同的cluster的网络结构
-
NAT(网络地址映射)
通过网络地址转换,NAT方式可以支持任何操作系统,以及私有网络,并且只需要一个IP地址,但是整个系统的性能受到限制
因为执行NAT每次需要重写包,有一定的延迟;
另外大部分应用有80%的数据是从服务器流向客户机,也就是用户的请求非常短,而服务器的回应非常大,对负载均衡形成很大的压力,成了新的瓶颈 -
IP Tunneling(IP隧道模式)
director(分发器)分配请求到不同的real server。
real server处理请求后直接回应给用户,这样director负载均衡器仅处理客户机与服务器的一半连接。
IP Tunneling技术极大地提高了director的调度处理能力,同时也极大地提高了系统能容纳的最大节点数,可以超过100个节点。
real server可以在任何LAN或WAN上运行,这意味着允许地理上的分布,这在灾难恢复中有重要意义。服务器必须拥有正式的IP地址用于与客户机直接通信,并且所有服务器必须支持IP隧道协议。 -
Direct Routing (直接路由)
与IP Tunneling类似,负载均衡器仅处理一半的连接,避免了新的性能瓶颈,同样增加了系统的可伸缩性。Direct Routing与IP Tunneling相比,没有IP封装的开销,但由于采用物理层(修改MAC地址)技术,所有服务器都必须在一个物理网段。
DR和NAT的缺陷
DR模式的缺陷
1:Realserver和 lvs的vip提供服务的端口必须一致。
也就是说:vip的端口对外端口为 80,但后端服务的真实端口为8080,通过lvs的DR模式是实现不了的。
2:Realserver和LVS不能在同一台机器上
3: Realserver 和LVS需要在同一个vlan或者局域网下。
NAT模式的缺陷
1:NAT模式流量的入和出都需要通过LVS服务器。
2: 效率相比DR模式,性能和效率上会差一些。